The Good Programmer

What makes us good, and why that's not that important

18 Jun 2018

Have you thought about what makes a good programmer?

I mean have you sat down and thought hard about what it means? Of all the programmers you’ve met in your (maybe long) career, which ones were ‘good’ and why?

When I was in school I always aspired to be the ‘best’ at what I did, but this definition has changed dramatically over time…

Subject

Are good programmers ones that spend their free time reading up on their subject and being as knowledgeable as possible? Like a maths student, reading up for the final exam on calculus, they need to know everything about their subject.

I’ve seen a few people in this industry that have obsessed over knowing every single Rails API, knowing every single change that was made to it since 2009 and seemingly got annoyed when they had to look up documentation. This is a dangerous state to be in.

Programming isn’t a memory competition that requires you to retain huge amount of trivia like a magician remembering the order of playing cards; Programming is a creative endevour and can be deeply cerebral, but remembering the parameter order of Rails’s collection_select form helper isn’t creative or cerebral, it’s just a waste of brainspace.

It can be incredibly daunting to a junior programmer to see this huge mountain to climb. All the material to read, libraries to master, acronyms to learn.

This feeds imposter syndrome.

We all started where you did, and we all learnt along the way. You’re better than you think.

Choose a subject and play around with it creatively. Make a iPhone app or that thing with a Raspberry Pi if you want to. Programming is fun and deeply satisfying.

Community

I have never contributed meaningfully to open source, I have never maintained a large open source gem or library, I have no idea what the latest hot JS micro-framework is, I don’t live in San Fransisco, I don’t publish to Medium, I’ve never published a hot-take article (until now, ha).

You see these recommended a lot to juniors. You don’t need to do any of these things.

To say that as a good programmers must have a large open source presence, go to lots of conferences, or have an online following is disingenous - a lot of us simply don’t have the time.

Jobs are there to pay the bills, there I said it.

Also, most of us who program do it to pay the bills, and that’s great. They may find joy and fun in programming, but for most people it pays the bills a other things.

Find other people who like what you like - not just with programming, but other stuff too.

The Human

Be a kind person.

It’s easy to identify a bad programmer that I once worked with from purely a human perspective.

He used his time at work to do his pay-per-hour style contract work, in full view of everyone in the office. He was being paid well, and not being mistreated. He’d just given in his notice and waiting for it to end, so just sat there working a double wage. Yeah.

He was a person that I didn’t enjoy working with, even before this stage. He made working hard, stifled discussion, constantly thought he was superior and constantly put down other people. Don’t be him.

‘Good’ in this industry for me comes from learning from mistakes and past problems. If you get that and retain it from books or blogs, then great. If you can’t, then asking someone to mentor you may work wonders.

Most programmers get better by fucking up. Again and again in different and more creative ways. You’ll fuck something up so bad on that sunny and hot Friday afternoon, but that’s how you learn. Take the time to learn how it went wrong, post mortem it and identify the keystrokes. Learn how it should have happened. Then you might remember next time, and you get better.

Know when someone else is also going through this process, and act with kindness, help them out, offer as much help as you can. They’re not reckless or bad at what they do, they’re just learning their way. Help them as much as you can.


A good programmer isn’t defined by the blog they write, the books they read, the lines they write, or the library they know back to front. A good programmer to me is one that treats other people’s code with empathy and never thinks they were stupid.

A good programmer is born of the human, and not the code.