This is the first article in a four-part series on programming effectively that’s based on my new learning tool, Programmer’s Pyramid. Each article contains one big idea and one or more ways to apply it. Here’s the next one in this series.
A common challenge when learning to program is identifying what topics to learn and what skills to build. The more you learn, the more you realize there’s to learn, and all of it seems to be important right now.
As a result, we get caught up in the details, progress slows and frustration mounts. We’re spinning our wheels and overwhelmed by everything we need to learn. Many of us have been there, myself included.
Identifying what to learn matters most. If you’re not focused on the right things, then your time is being wasted. And when it comes to building a skill, which programming is, then the fundamentals is what you ought to focus on. Everything takes off from there.
When the core 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, the details are much more meaningful when there’s something to “hang onto.”
The idea of focusing on the fundamentals may seem obvious. And it is for the best programmers I’ve studied. In fact, it’s a point of distinction between the best and the rest. Moreover, it’s a well-worn path for experts in other fields, too. Think of Pablo Picasso of art; Josh Waitzkin of chess; or John Wooden of basketball.
However, a popular approach today is to focus on technologies, like React and Node. The fundamentals of programming are usually an afterthought, if they’re addressed at all.
That’s a problem. Heading straight to the technologies bypasses a number of core programming topics and skills. As a result, programmers build a shaky foundation of knowledge.
This is why Programmer’s Pyramid advocates a different approach, which I call the bottom-up approach. It focuses on the fundamentals of programming. The Pyramid clearly defines what those fundamentals are, the sequence to learn them, and what resources to use.
Although you certainly need to learn the technologies, the fundamentals are the enabler. They’ll enable you to use technologies better; write more effective code; and be a more adaptable and competent programmer.
There are two ways to apply today’s idea. First, study experts in skill-building fields, like programming. Even better, talk to them. Find out how they’ve built their skills and see what commonalities you can find. One that I’ve found is the relentless focus on the fundamentals.
Second, rate yourself on the programming fundamentals outlined in Programmer’s Pyramid on a scale from one to ten. For example, how would you rate yourself on algorithms? How about software design?
This personal self-assessment will help you identify weaknesses, so you know where to spend your time as you work your way through the Pyramid.