The Two Types of Programmers

4 minutes read •

You’re not bad at programming; you’re bad at unrealistic expectations.

The OG Goal Posts

I used to think a “good programmer” looked like this:

How do you feel about that list? Are you a “good programmer”?

If you’re like me, the answer is no. Here’s what changed my mind.


The Two Archetypes

I watched a video recently by Coding with Lewis called “The 2 Types of Programmers”. In it, Lewis suggests there are two programmer archetypes: craft-based and result-based programmers.

Craft-Based Programmers

Result-Based Programmers

Important

If you haven’t seen the video, go show @CodingWithLewis some ❤️


The Revelation

Listening to Lewis, something clicked for me. I realised my definition of a “good programmer” was entirely based on the craft-based archetype. But the other half of the spectrum—result-based programmers—is just as valid.

Looking at the two lists, I’ve never been a craft-based programmer, and truthfully, I don’t want to be. It’s not how I’m wired. I’ve always been drawn to the magic of results—seeing a program come to life and watching it solve real problems. That’s what makes me excited to code.

I realise now that I’ve had impostor syndrome holding me back. I’ve been overcautious. I thought I had to fit into a mould that didn’t suit me. I tiptoed around projects, overthinking my choices and hesitating to jump in. Whatever I chose felt like a major investment: I’d need to master it, build my 10-year BDFL project on it, contribute upstream— that sort of thing.

But knowing there’s a whole world of successful programmers who think how I do? That really reset my goalposts. I don’t need to rewire my brain to be what I’m not. It’s liberating. I feel validated, encouraged, and motivated to keep going—on my terms.


The Key to Joy in Programming

Interestingly, I still have craft-based inclinations, but when I lean into them too much, I find myself working in my weaknesses: premature optimisation, brittle abstractions, stuck reinventing wheels for a car I later realise I don’t really want. Beyond a certain depth, I lose sight of the magic and stop having fun.

Instead, my strengths come alive when I focus on the result: exploring, building, and deploying new tools and technologies; immersing myself in the melting-pot marketplace of open source, where people exchange code and comments as both developers and users. That’s where I find joy—that’s where I see the magic.


So, here’s my takeaway for you:

Look at the two archetypes. Which traits resonate with you? What brings you joy in programming? Have you had your own narrow definition holding you back?

At the end of the day, the best programmers are the ones who find joy in their work and play to their strengths.

You’re not a bad programmer. You’re just you—and that’s plenty.

And just for fun…

Remember…