I went through countless articles and videos looking for the best way to learn software engineering. While it’s a vast field, the answer turned out simple: build things and learn along the way. It’s the most effective way to ensure what you’re learning is relevant and practical. However, there are some extremely useful courses to help you stay on track.
Generally there are 3 main routes to learn software engineering:
| Description | Pros | Cons | |
|---|---|---|---|
| Computer science degree | 3-4 year university program | Credibility which opens research/advanced roles | Expensive and time-consuming, Less practical coding experience |
| Coding Bootcamp | 3-6 month intensive, project-based coding course | Fast and practical, More career-focused | Expensive, Narrow scope |
| Self-learning | Learn via online courses and projects | Flexible and low-cost, Independence allows personalised learning | Can get overwhelmed with resources, No formal credential, Requires discipline |
It’s quite difficult for an institution to teach a subject that will completely change by the time of graduation, and coding bootmaps don’t fare much better. Either way, you’ll have to be a self-learner. The rest of this article outlines some of the resources I found quite helpful. These are all open-source (free) and are maintained to a high level.
Harvard CS50x (Fundamentals)
I started with Harvard CS50x, completing the 11-week course in 2 weeks by 2x lecture speed and going through problem sets late into the night. It’s quite difficult but perfect for programming fundamentals. I followed it up with CS50P (Python) and CS50W (Web development). However, while good for fundamentals, it doesn’t teach the systems thinking needed to build scalable solutions.
The Odin Project (Fullstack)
Regarding open-source fullstack courses, there seems to be 3 main options
- FreeCodeCamp: good for practice, but too hand-holdy and outdated.
- Full Stack Open: solid content, but a steep start and clunky UI.
- The Odin Project (TOP): clear, project-based, structured — the best fit.
I started TOP after CS50, finishing the foundations in a week and started posting daily progress on my X/Twitter to stay accountable. I chose the JavaScript pathway over Ruby for its versatility, strong community, and relevance to healthtech. NB you don’t need to install Linux on windows, you can just run everything on VScode, so feel free to skip this part of the setup process.
Kaggle (AI/ML)
There seems to be an ever increasing amount of AI/ML courses. Rather than learning the PhD-level maths to build foundational models and will probably change by the time you learn it, it seems more practical to focus on implementing AI using existing tools since much of the maths is done by libraries made for you (e.g. PyTorch). Kaggle is really good for a project-based framework to teach you the key concepts only.
Final remarks
The most important step is to start. Decide where you want to go, then reverse-engineer a path and choose the best resources. Courses can guide you, but real progress comes from taking action and iterating as you learn.
