Your programming roadmap
Who’s Programmer's Pyramid for?
Maybe you’re working as a programmer, returning to the field after some time away, or perhaps you're knee-deep into your learning journey as a self-taught programmer, bootcamp attendee, or highschool or college student.
Regardless of your specific path, you have some programming experience: you’re familiar with a language and basic programming concepts and tools. You also realize this key point: knowing technologies isn’t enough.
So you want to level up by learning the fundamentals of programming, and want an effective way to learn them. You want to strengthen your skills, enhance your abilities as a programmer, and prepare yourself for more advanced study. Programmer’s Pyramid is for you.
What types of resources are included in the Pyramid?
Each topic in Programmer's Pyramid contains two types of resources: “Reference” and “Apply It". The “Reference” resources are books, courses, and the like. The “Apply It” resources are exercises, problems, and programs to complete.
A good resource is hard to find. What I’ve included in the Pyramid are some of the best resources I know about for each topic.
Feel free to supplement the provided resources with others. In fact, attacking a topic from multiple perspectives with multiple resources (what I call “multiple streams of learning”) is a fantastic way to learn something really well.
Despite the resources you use, the core topics presented in the Pyramid remain the same: these are the areas to focus on.
How do I use the Pyramid?
Programmer’s Pyramid takes a bottom-up approach to learning: build a solid base of knowledge and skills. That means start at the base layer and work your way up. The layers build on each other.
Within each layer, you can move among topics as you wish. For example, in Layer 3 (in teal), you can tackle “refactoring” first or “testing.” The order doesn’t matter.
Most topics contain resources for two categories: “Reference” and “Apply It.” I recommended trying a problem from the “Apply It” section first. Then, using the provided resources in the “Reference” section when you get stuck. Or, if you’re completely new to a topic, learn just enough and apply right away.
Keep in mind that you don’t have to master everything in each topic immediately. One approach to using the Pyramid is breadth, then depth. Get the main ideas in each topic on the first pass through. Then, circle back through it. You’ll see things differently—and you’ll solidify your knowledge—each time through the Pyramid.
Why are most of the resources in Python?
The Pyramid is about programming concepts that are applicable across languages.
In order to give the Pyramid some continuity, many of the recommended resources are in Python. Plus, Python tends to be a bit easier for people to pick up.
Who created Programmer’s Pyramid?
My name is Amy Haddad, and I created Programmer’s Pyramid based on my experience learning to program. As a self-taught programmer, I routinely found myself asking these questions:
I was overwhelmed by the number of topics I needed to learn, and struggled to prioritize what to focus on first. I knew that there had to be a better way to learn to program.
I couldn’t find one. So I created it. Not only to help myself, but also to help others.
As I began blogging about my experience learning to program, I found out that there are a lot of people just like me. We’re fighting the same fight: we want to get better at our craft, and need an effective way to go about it. The result is Programmer’s Pyramid.
But like any endeavor, nothing is ever done alone. That’s why I have many people to thank who’ve weighed in with their feedback and suggestions, which have helped me to refine the Pyramid over time. The Pyramid is better because of their input.
What about specific topic "x"? Why isn’t it included in Programmer’s Pyramid?
The core comes first. When the structure is in place, the details follow naturally. It’s a point made clear by Elon Musk:
“It is important to view knowledge as sort of a semantic tree — make sure you understand the fundamental principles, i.e. the trunk and big branches, before you get into the leaves/details or there is nothing for them to hang on to.”
Plus, details are more meaningful when there's something to “hang onto.”
How’s Programmer’s Pyramid different from other learning tools?
There are three ways Programmer’s Pyramid differentiates itself.
First, it focuses on the fundamentals of programming, not technologies.
Second, Programmer’s Pyramid is a mental model for learning to program. The pyramid shape gives learning its structure: start at the base and work your way up. Finally, there’s a clear roadmap for what you need to learn and when you ought to learn it.
Nailing down what you need to learn is absolutely critical in any pursuit. You can be the best learner on the planet, but if you’re learning the wrong topics, your time is being wasted. More to the point, everything may seem important. But not everything is important right now. The Pyramid will help you to narrow your focus.
Third, the Pyramid emphasizes active learning, not passive watching. If you really want to learn something, you’ve got to apply it.
That’s why I recommend using an approach I call apply first, study second. Try solving a problem from the "Apply It" section first. Then, consult a course, book, or article in the "Reference" section if you get stuck.
The best way to learn is to “do.” Put your knowledge to work from the start!