You realize that learning technologies, like React and Node, isn’t enough. So you want to enhance your skills and deepen your knowledge by learning the fundamentals of programming.

But you have some questions:

  • What are the fundamentals of programming?
  • What topics should you focus on first?
  • Which resources are best?

You’re not alone. These are some of the questions I’ve repeatedly asked on my own self-taught journey. What I needed most was a roadmap.

I didn’t have one, so I created it: Programmer’s Pyramid.

This free, self-guided learning tool teaches you the fundamentals of programming. It defines what you need…


Programming is a fantastic skill to develop. But, as a self-taught programmer, I’ve found the learning process unnecessarily ambiguous and complex. I’ve spent a lot of time figuring out what to learn (and when to learn it), which resources to use, and how to learn a vast number of technical topics.

So I’ve put together five lessons I’ve learned (so far) from my own journey. I hope the ideas and resources in each lesson will set you up for a more direct route for learning and getting better at programming.

1. Learn the fundamentals of programming.

One piece of advice shaped my entire learning trajectory as…


Something about Julia Child caught my attention. This American author, teacher, and television personality is famous for bringing French cooking to America. Indeed, mastering the French cuisine and having such a remarkable cooking career is impressive.

But what’s equally impressive is that Child found her “life’s calling” — French cooking — when she enrolled as a student at the Le Cordon Bleu school of cooking at age 37. In other words, Child wasn’t a French cooking child prodigy. Rather, she learned the art and craft of French cooking later in life. …


There’s so much new and dense technical information coming at you when you begin learning to program. How do you learn and retain it all?

That’s a question I’ve asked myself many times on my own programming journey. In an attempt to find an answer, I’ve experimented with many learning tactics along the way. However one stands out among the rest. I call it the apply first, study second approach.

If you’re looking for an efficient and effective way to learn to program, I suggest you give it a try.

Learning in Action

Apply first, study second means attempt the problem first. The…


It’s sometimes thought that short, “clever” code is the aim when writing programs. However, shorter isn’t necessarily better. Neither is “clever” code. You know, code that reads like a cryptic puzzle, which causes you to spend an unnecessary amount of time trying to figure out.

We shouldn’t aim for short, terse code. We shouldn’t intentionally make code complex or confusing. Instead, the best type of writing, be it prose or code, is clear and meaningful. This should be our aim.

That’s because it’s the easiest for the reader to understand. “Clarity is not the same as brevity,” writes Brian Kernighan…


This is the fourth and last big idea in my series on programming effectively, which is based on my new learning tool, Programmer’s Pyramid. Each article contains one big idea and one or more ways to apply it. In case you missed the last one, you can read it here.

We’re often in such a rush to move on to the next new problem or program. But hold on for a minute.

Just because you’ve solved a problem doesn’t mean you’ve learned from it. …


This is the third article in a four-part series on programming effectively, which is based on my new learning tool, Programmer’s Pyramid. Each article contains one big idea and one or more ways to apply it. In case you missed the last one, you can read it here.

The first two ideas in this series on learning to program effectively covered what to focus on and how to go about it.

Today I pick up where these two themes left off by raising this question: now that you’ve got a roadmap in place, how can you tell if you’re making…


This is the second article in a four-part series on programming effectively, which is based on my new learning tool, Programmer’s Pyramid. Each article contains one big idea and one or more ways to apply it. In case you missed the last one, you can read it here. Or click here to read the next one.

Learning to program is a crash course in learning how to learn effectively. There’s so much new and dense technical information coming at you. How do you learn it and retain it?

I’ve spent a lot of time learning how to learn on my…


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…


After completing one project, we’re often in a hurry to start a new one. But why the rush? If you complete a quality project, recycle it: iterate on it and create your own mini projects along the way.

I do this myself. The process is helping to build my skills and solidify concepts — and it can help you, too. So in this article I’ll share my process for creating programming projects.

Let’s start with an approach I’ve adopted from the famous basketball coach, John Wooden. It’s called the “whole-part method.”[1]

1. The Whole-Part Method

Coach Wooden used his “whole-part method” when teaching his…

Amy M Haddad

Programmer and Writer: amymhaddad.com | programmerspyramid.com | @amymhaddad

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store