Learning Paths


The essential skills every software engineer must have.

If you're pursuing a career as a professional software engineer, you should dedicate the first three to six months to mastering the fundamentals.

Here are the courses I believe you should take, listed in order. Depending on your knowledge and experience level, you can take all the courses in order, or just pick the ones that are best for you.

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.

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.

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.

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.

The Ultimate Git Course

Beginner to Pro . 6h