Almost universally learning to code is hard. It is hard and it is frustrating. Resources to go from 0 to 1 as a beginner are easy to find but figuring out the path from 0 to mastery are not.

The modern coding environment only complicates this as more and more options, tools, frameworks, and potential paths are invented. These options are designed to make coding more manageable, but for a beginner can be overwhelming.

My goal here is to lay out a clear, structured path from 0 to mastery I call “The Hero’s Journey of Coding.” The Hero’s Journey is hard. The Hero’s Journey will be frustrating and will feel hopeless at times. But the Hero’s Journey works.

I heavily based the strategy on research from Cal Newport (computer science professor at Georgetown University) and Barbara Oakley (professor of engineering at Oakland University), as well as on a large body of research into learning, and more specifically, learning technical subjects.

Learning to code is a non-linear process and forcing a strictly linear structure on it will slow your learning process. It is analogous to learning a language.

Two hypothetical people start studying Mandarin at the same time with no prior knowledge of the language. One begins a course that promises mastery of the language by the end of the course. The other takes the same course… but supplements it with reading books in Mandarin, watching shows in Mandarin on Netflix, speaking to Mandarin-speaking people in his or her area every day, listening to the news in Mandarin, listening to podcasts in Mandarin, memorizing Mandarin grammar structures and vocabulary words, switching to the Chinese servers in the online games they play, asking about aspects of the language that confuse them in Mandarin language forums etc.

Because the second person is varying their types, contexts, and methods of learning, they will learn Mandarin surprisingly faster than the first person while preventing burnout by altering the kind of cognitive load they place on their brain.

Additionally, since the gains are cumulative, the second person will exponentially approach mastery faster. This approach is backed by research. If you want to look into it further, Harvard has an excellent compilation of research into the topic here: https://bsc.harvard.edu/study-tips-guides

Differing your types and content of learning also promotes neurogenesis (production of new neurons in the brain). Here is a study on the fact: https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3445739/. The other thing proven to increase neurogenesis, by the way, is exercise (specifically aerobic exercise). The same study linked covers that topic as well if you are interested.

In this guide, I’ve put together the findings of this research into an actionable sequence I call “The Hero’s Journey of Coding.”

Some parts of this guide, particularly towards the end, will upset people and may be construed as overwhelming or discouraging towards beginners.

I’ve purposely constructed this guide to be the antithesis of the other guides I’ve read (and I’ve read hundreds) which have been too vague, too introductory, and too afraid to get into the nitty-gritty of how the actual process usually looks.

What I lay is not the only way to learn, but it is a research-backed, experientially backed, and effective way to learn. Here I offer the gory details of the whole process, so I hope you are ready.