Fundamentals
The foundation everything else is built on.
If you're serious about becoming a software engineer, get the fundamentals right first. Skip this and you'll spend years patching gaps. Get it right and everything else clicks faster.
I recommend 3–6 months here before moving to a specialization. Take the courses in order, or jump to whatever you're missing.
Programming Languages
I have several courses on various programming languages such as Python, Java, JavaScript, and C#. Professional software engineers often know more than one language, but if you're starting out, just focus on one language. I recommend you learn Java first, even if you're not planning to use it in the future. Java is a classic programming language with amazing features. Once you learn Java, you can quickly and easily switch to similar languages like JavaScript, C#, C++, etc.
Ultimate Java Part 1: Fundamentals
Ultimate Java Part 2: Object-oriented Programming
Ultimate Java Part 3: Advanced Topics
Data Structures & Algorithms
Studying classic data structures and algorithms helps you improve your programming and problem-solving skills. These topics are frequently asked in coding interviews, and this course will help you master them.
Ultimate Data Structures & Algorithms: Part 1
Ultimate Data Structures & Algorithms: Part 2
Ultimate Data Structures & Algorithms: Part 3
Design Patterns
Design patterns are engineered solutions to common problems in software design, and are often asked about in coding interviews. There are 20 classic design patterns commonly known as GoF (Gang of Four) patterns. The following courses help you learn and understand these patterns and appreciate object-oriented programming techniques.
Mastering Design Patterns: Part 1
Mastering Design Patterns: Part 2
Mastering Design Patterns: Part 3
Version Control and Collaboration
Version control is like a time machine for software engineers. It allows you to go back in time and see the exact state of your code at any point. This is incredibly important because it means you can easily track changes, fix bugs, and collaborate with others without the fear of losing or messing up your code.