From never having programmed to understanding algorithms
Thirty-six weeks, ten hours a week, in Python. The first twelve weeks teach you to program at all. The remaining twenty-four teach you how data is organised and how algorithms work. Every technical word is defined the first time it appears — click any underlined term to see what it means.
Nothing here assumes you have written a line of code before. By the end of week 12 you will have built about twenty small programs and will be able to write a class from a blank file.
The same skills, applied to the question of how to organise information so that programs stay fast as they grow. This half is where the well-known names live: hash tables, trees, graphs, sorting, dynamic programming.
Type every example yourself
Do not copy and paste, and do not just read. Watching someone code feels like learning and is not. The gap between understanding a video and writing code on a blank screen is the entire skill, and copying skips exactly the part that builds it.
Build each structure once, then never again
Implement every structure from scratch a single time, so it stops being magic. After that, use the version that ships with the language — it is faster and it has had its bugs found already.
Thirty minutes before you look at a solution
Struggling is the part that teaches. Reading a solution before you have genuinely tried feels efficient and leaves nothing behind.
Keep a mistake log
Write down the problem, why you failed it, and the pattern you missed. Read it back weekly. This is the highest-value habit in the whole roadmap, and the one most people skip.
Done means from a blank file
A topic is finished when you can re-implement it with nothing in front of you, and say what it costs in time and memory. Recognising code is not the same as being able to write it.
Six hours learning, four hours solving
Of ten hours a week, roughly six go on learning and implementing and four on problems. Reading without solving is the single most common way people spend months and gain little.
| When | Hrs | What you do |
|---|---|---|
| Mon–Tue | 3 | New topic: read and watch, then write notes in your own words. |
| Wed | 2 | Implement the structure or algorithm from scratch, with nothing to refer to. |
| Thu–Fri | 3 | Solve four to six problems on the topic, working from easy up to medium. |
| Sat | 1 | Re-solve two problems you previously failed, taken from your mistake log. |
| Sun | 1 | Review: say the costs out loud, update your notes, plan the week ahead. |
About eight to nine months at ten hours a week to reach the end of week 34. That is a normal, honest timeline starting from zero. Anyone promising mastery in eight weeks is selling something.
The week numbers are a guide, not a deadline. Two stages in particular — trees and graphs in weeks 20 to 25, and dynamic programming in week 31 — are where most people slow down or give up. If you fall behind, take the extra weeks there rather than skipping ahead. Everything later depends on those two.
This roadmap is written for becoming a better engineer rather than for passing interviews. Where the two differ, it favours understanding fewer things properly over covering more things quickly.