Coding Fundamentals

Free sources

W3Schools: Learning platform for web development technologies and programming languages such as HTML, CSS, JavaScript, jQuery, and more. It provides comprehensive tutorials, examples, and exercises to help beginners learn and understand the basics of web development.

GeeksForGeeks: It provides a comprehensive library of tutorials, articles, and practice problems on topics ranging from algorithms, data structures, programming languages (such as C, Java, Python), and more.

CodeAcademy: A comprehensive platform for learning to code that covers multiple programming languages, including Python, JavaScript, Ruby, and more.

KhanAcademy: A non-profit organization that provides a free, online platform for learning computer science and programming, including JavaScript, SQL, and more.

FreeCodeCamp: A non-profit organization that provides a comprehensive curriculum in web development and computer science, including full-stack development with JavaScript, data visualization, and more.

Where to start?

As an aspiring coder, it can be overwhelming to navigate the vast world of programming languages. Often, the initial drive to learn coding stems from a brilliant concept that one desires to bring to life. However, this eagerness to make progress can result in individuals attempting to delve into a language that is far too complex for their current level of expertise. If I could go back and relearn the fundamentals of software and game development, I would start with Scratch and Roblox

Start with Scratch and Roblox

Basic game development is the perfect starting point for those who are interested in exploring the fields of development, design, or analysis, regardless of the platform - mobile, desktop, or network.

Why Scratch?

Scratch is a popular and effective tool for teaching young people how to code. It has a simple and intuitive drag-and-drop interface which makes it easy for young learners to get started with coding and build basic programs. The visual programming language used in Scratch makes the concepts behind coding more engaging and accessible. Additionally, the large and active online community of users provides support and collaboration opportunities. Scratch can be used to teach a variety of subjects, not just computer science, and encourages creativity by allowing users to create games, animations, and interactive stories. Overall, Scratch helps students develop computational thinking skills while fostering creativity.

Why Roblox?

Roblox, similar to Scratch, offers an ideal starting point for software development due to its simplicity. With its user-friendly environment, building and launching a game has never been easier. The technology stacks of networking, rendering, and physics are already integrated into the engine, making the development process seamless. The language used within Roblox Studio, Lua, is remarkably easy to learn and I consider even more straightforward than Python. Additionally, Roblox boasts a comprehensive collection of documentation and being free, offers ample opportunities for learning through courses and tutorials from experienced Roblox developers. As a bonus, it presents a potential income-generating avenue for early developers, dependent on the success of their games.

Moving to Python

After working with Scratch and Roblox for a few months, I would then suggest experimenting with Python. Python is a great example of a beginner-friendly language for several reasons. Firstly, its syntax is clear and simple, emphasizing readability, which makes it easier for beginners to understand and write code. Furthermore, Python has a large and active community that provides extensive support and resources, including tutorials, libraries, and modules. This makes it easier for beginners to get started and find answers to their questions. Additionally, Python is versatile and can be used for a wide range of applications, such as web development, scientific computing, data analysis, artificial intelligence, and more, allowing beginners to explore different areas and find their interests. Finally, Python is one of the most popular programming languages in the world, making it easier for beginners to find resources and collaborate with others.

Choosing where to go next

C#, Java, C++, C, and other programming languages have different features and uses. C# is a language developed by Microsoft and is commonly used in developing Windows applications. It is often considered as a simple and efficient language with a modern syntax, making it popular for web and mobile application development. Java, on the other hand, is a cross-platform language widely used in enterprise applications, mobile app development, and game development. It has a vast collection of libraries and frameworks, making it easier for developers to create robust applications. C++ is a low-level language used for system programming and game development. It is powerful and flexible, allowing for complex computations and is also often used in developing operating systems and other applications that require efficient memory usage and low-level access to system resources. C is a procedural language and is known for its speed and efficiency. It is widely used for developing operating systems, compilers, and other low-level programming tasks.

C# is a programming language developed by Microsoft and is used primarily for building Windows applications, web applications, and games. It is an object-oriented language that allows developers to write code in a modular and reusable way, making it easier to create complex applications. C# supports a number of features that are commonly used in modern programming, such as garbage collection, type safety, and LINQ (Language Integrated Query).

Microsoft: Used for developing various Windows applications, including Windows.

Amazon: Used for developing their e-commerce platform and other internal tools.

Unity Technologies: Used for developing games and other interactive content in Unity.

Dropbox: Used for developing their cloud-based file storage and collaboration platform.

C++ is a general-purpose programming language that was originally developed for system programming. It is an object-oriented language that supports inheritance, polymorphism, and encapsulation, making it easier for developers to create complex and modular applications. C++ is known for its efficiency and performance, making it a popular choice for game development, operating systems, and other low-level programming tasks. The language also offers low-level access to system resources, allowing developers to write highly optimized code for maximum performance.

Google: Used for developing web search algorithms, server infrastructure, and other applications that require high performance.

Apple: Used for developing the macOS operating system, as well as many of the core applications and frameworks used on macOS and iOS.

Nvidia: Used for developing graphics and video processing software, including GPU drivers and video game engines.

Java is a cross-platform, object-oriented programming language that is widely used in enterprise applications, mobile app development, and game development. It has a vast library of pre-built classes and functions, making it easier for developers to perform common tasks and build complex applications. Java is designed to be secure, fast, and reliable, making it a popular choice for developers and organizations worldwide.

Netflix: Used for building the company's video streaming platform and recommendation systems.

Google: Uses Java for developing its Android operating system, as well as for building internal tools and services.

Uber: Uses Java for building its ride-hailing platform, as well as for developing internal tools and services.

Where to go from here

Continuous learning is a crucial aspect of software development. To ensure success, it is essential to establish a strong foundation in the fundamentals before embarking on any substantial project.