How to be the best programmer, according to Daniel Terhorst-North
Photo: Craft Conf
Or rather, they make themselves, carefully and deliberately, over time, said Dan as he explained more in detail what he had meant by ‘the best programmer he knows’ at the Craft conference in Budapest.
His presentation was inspired by a Twitter thread he wrote about the qualities of the best programmers that went viral. Dan’s blog post about the worst programmer he knows, but actually about the absurdities of measuring developer productivity, also went viral, but that’s another story.
The best programmer he talked about is a real person; he’s known that person for over 20 years. And that person is not the best programmer because they are the best at solving LeetCode or the best at solving algorithmic problems (those programmers are going to be the first ones replaced by the LLMs, says Dan).
That particular best programmer he knows doesn’t have a computer science degree, say Dan, but he’s not the best because of that. Some other best programmers have degrees. This particular one Dan described also happens to be male, but that’s also not why he is the best programmer. Some of the best programmers are female.
But why is he the best programmer, then?
As Dan says, the best programmers have an insatiable curiosity and the belief that they can convince a computer to do anything. They also have a healthy disregard for language and tool zealotry.
Here are the characteristics and ways of working Dan has managed to pinpoint that make a programmer to be the best programmer:
Getting the job done
The programmer’s job is to deliver. If you don’t get the job done, it doesn’t matter how good you are!
1.1. Just start
The best programmer doesn’t start by doing extensive research on the problem at hand, reading tutorials, etc. He just starts, even if he doesn’t know everything about the task. He does one thing, and if it doesn’t work, he then tries something else.
He resists the urge to procrastinate and knows that doing (and doing something wrong) is researching!
1.2. Know that you don’t know
Most people want to do something only if they can do it well. We fear showing that we’re not good at something. The best programmers know that it’s just ego and that they don’t have to do a good or the right job every time. They write their code with a motto: ‘If it’s not good, I’ll rewrite it!’
1.3 Iterate wildly
They are confident in trying, failing, learning, and repeating. And doing so repeatedly.
Write the best code you can, knowing half of it won’t be there next week (but half will, so don’t write shit code!).
1.4 Build a product
The best programmer is aware that his job is not to show software craftmanship or build beautiful software. Their job is to build a product!
That’s why they’re not emotionally attached to the code they wrote but to the outcome. They’re invested in the outcome, the product they build; code is just the means to that end.
The best programmer is interested in the problems of its final users when building a product. If he’s building a product for nurses, he would go and watch and talk to them and then represent those findings in code.
1.5. Solve for now
The best programmers solve the real problem, not some fancy generalized version of it. They learn to see what is really there and develop’ at first sight.’
Photo: Craft Conf
Choosing the right tool
Dan admitted that he had completely changed his opinion on how to choose the right tech stack/tool, and it took him a while. Now, he thinks that the best developers choose the right tool for the job, even if they haven’t used that tool before.
2.1. Teams can learn
Choose the right tool for the product, not for the team. It’s easy to choose to use Java on a project if that’s what the team knows. Teams can learn; they weren’t born knowing Java. The best developer figures out if the investment in learning the tool is worth it to solve the problem the right way.
Why is that so important? Because code outlives teams and organizations.
2.2. Do the simplest thing, not the easiest
It’s important to know that it’s not the same. The best programmer does not write code that’s easiest for him to write; he writes simple, obvious code that is easy to change later.
2.3 The right tool may change
The best programmers write code that is easy to decompose, restructure, and rewrite. As Kent Beck put it – make the change easy and then make the easy change.
You make the change easy by minimizing the blast radius, writing small, self-contained hacks, and using compostable materials that can be thrown away easily.
2.4 Be a polyglot
It’s crucial to explore languages, tools, and paradigms—not to be a know-it-all Leetcode smartass but to get different perspectives and points of view. Try hackathons and challenges like Advent of Code! The more things you have experienced and played with, the better you will be at picking the right tool.
Be a full-stack developer! Be curious about everything that makes a great web page, be it front-end, APIs or architecture.
Be REALLY full stack! Strive to also learn about processes, business, or hardware.
Care about the team
No best programmer works in isolation, and caring about the team is a big part of what makes him the best.
3.1 Helping others
The best developer finds joy in helping others. Sometimes, it’s just by saying encouraging words, and sometimes, it’s by teaching ( which is also the best way to learn)!
3.2 Send the team home
No one should be working late; a rested team is effective team.
3.3 Be kind
Assume everyone is doing their best
3.4 Stay in the loop
Join communities, try new things, practice, practice, practice!
The best programmer is the best because he works really hard for it. There is no innate software engineering talent; it’s conscious behavior.
3.5 Care about yourself
Although he works hard, he also does other things and has interests outside of programming. He makes sure to go home on time (sleep is the best debugger!),
Above all, says Dan, the best programmer he knows is kind – to his colleagues and to himself.
You might recognize some of these traits in yourself, Dan concludes – you might decide you want to aspire to some of them; you might choose to refer to them as an interviewer or as a candidate:
My hope is simply that you find this useful and, in some way, inspiring.