The 5 Phases of Learning to Code
Why are there not more tutorials targeted toward senior devs?
They don’t need them.
The way you learn changes over time. It took my a long time to realize this. Once you understand the different paths to learning, you can grow much faster.
# My software learning evolution:
# Phase 1: Classroom
When I first started to learn how to code, it was in a classroom setting. The whole concept of programming was new to me. I needed to be walked through every step and new concepts needed thorough explanations.
# Phase 2: Video tutorials
Then I decided to teach myself web development. I loved comprehensive, step-by-step video tutorials during that phase. They gave me exposure to lots of topics with mini-challenges in a safe environment.
# Phase 3: Blog posts
During the start of my career, I was obsessed with small, specific articles. Want to create a full stack CRUD app? There is a tutorial for that. Or want to lazy load images with React? A tutorial can gracefully walk you though the steps.
Unfortunately, as you become more experienced, the problems you face get larger and are no longer universal enough to be solved by reading a tutorial. For example, you won’t find an article on how to effectively architecture a solution given your unique constraints and tech debt.
When searching problems on Google no longer yields relevant results, you are forced to move to the next phase.
# Phase 4: Documentation
As you progress in your career, learning new tech becomes easier. Skimming documentation is often enough to get started. This speeds things up dramatically and prevents you from relying on often outdated blog posts. You skip the middleman and go straight to the source.
With the industry finally understanding the importance of great docs, this phase becomes a sufficient stopping point for most projects. Sometimes, however, you need to dig a bit deeper, which leads you to the final phase.
# Phase 5: Source code
Sometimes you want/need to learn the specific implementations of a project. If this is the case, popping open the proverbial hood and inspecting the source code directly becomes your only option.
The prevalence of open source code is one of the greatest aspects of being in this field. While other industries keep their processes and solutions hidden from the world, software companies often leave it in the open for anyone to review. Doing so, we are given the opportunity to emulate people at the top of the field and spread knowledge at a much faster pace. We can literally see the source code running billion dollar companies. Sometimes we need to step back to remind ourselves how uniquely powerful that is.
# Transitioning between the phases
These phases are not mutually exclusive. You can read tutorials for a problem in the morning and review source code for another in the afternoon. As your career progresses, however, you will likely notice yourself spending more time in the later phases. If your goal is to speed up this learning curve, there are a few key steps:
- Know your language(s) of choice deeply. Even the weird parts.
- Familiarize yourself with design patterns and their usage across a variety of different projects. Studying open source examples is a good place to view design patterns in the wild.
- Understand the tech landscape comprehensively. Don’t specialize too early. There is great understanding to be gained by learning the technology adjacent to your chosen subdomain.
With these prerequisites in place, you will be able to seamlessly jump between the five phases and learn much faster.