Darkmont logoDarkmont ← Journal
Craft

Why learning to code is hard — and that's normal

Almost everyone who tries to learn to code hits the same wall, in the same place, at roughly the same time. The tutorials go well. The exercises make sense. And then they sit down to build something of their own, from nothing, and freeze. The gap between following instructions and making something is wider than anyone warns you, and falling into it feels like proof you're not cut out for this. It isn't.

The trouble is that tutorials teach you to read, not to write. Following along, you're handed every decision in advance: which tool, which step, which next line. It feels like learning, and some of it is. But the actual skill of programming is the part the tutorial quietly did for you — deciding what to do when no one is telling you. That muscle doesn't get built by watching. It gets built by being stuck and working through it.

Being stuck, it turns out, is the job. Experienced programmers aren't people who stopped getting confused; they're people who got comfortable being confused for longer. The work is mostly a loop: try something, watch it fail, read the error, form a guess, try again. Beginners often read the error messages as a verdict — proof they're doing it wrong. The errors are the process. Everyone's screen is red most of the day.

There's also a quiet trap in how visible the gap is. You can see, instantly, the distance between the polished app on your phone and the broken thing on your screen. What you can't see is the months of broken versions that came before that polished one. The comparison is rigged — finished work against your rough draft — and it convinces a lot of capable people to quit right before it would have started to click.

What actually gets people through is smaller and less glamorous than talent. It's tolerance for friction: the willingness to stay with a problem that isn't working, to break it into pieces small enough to test, to look things up without shame, and to come back the next day. Coding rewards stubbornness more than cleverness — and stubbornness can be practiced.

So if you're learning and it's hard — if the tutorials made sense and the blank page doesn't — you're not behind. You're exactly where the actual learning starts. The wall isn't a sign you should stop. It's the first real thing you've been asked to climb.

We say this partly because we've been on that wall ourselves. Everything we build started as somebody stuck on a problem, deciding to stay with it one more day. That's not the exception in software. It's the whole craft. More about how we work →