On my last attempt to start a block, back in 2014, I took from some advice I had given in a Hacker News thread. It was based on some nascent ideas I had around what makes programmers bad and good. Over the last six years, I’ve kept it in the back of my head and I’ve pondered it in my spare time, doing interviews, reading what others have to say on the subject, and slowly coalesced around a handful of ideas.
I plan to expand on this, but as I have tried to figure out what makes a good programmer, I’ve slowly become more intrigued with what others think a good programmer is. This is a list that I’ve collected of articles, blog posts, and books tangentially connected to this question.
These are of varying quality. I am trying to drive a larger understanding of what people at all levels think makes a good programmer, rather than just what experts think. We may be missing something if we focus on what those predisposed to authorship write. However, it’s interesting to see what different people at different experience levels and perspectives see. By Grounded Theory, I should try to incorporate these multiple views.
(Anti-disclaimer: I have removed any affiliate links I have found and derive no income from any links.)
This indirectly touches on what makes good code rather than a good coder, but many of the pieces of what make good code can infer a subset of what makes a good programmer, if you assume a good programmer produces good code.
This speaks to what he believes a professional programmer should be. For him, in this book, this speaks to his ideas on how a programmer should interact with the world around him, and we can infer that these are qualities he would expect in a good programmer.
The Pragmatic Programmer: your journey to mastery - David Thomas and Andrew Hunt
This is a seminal book in the field, and rightfully so, as the book is all about becoming a more productive programmer. It is a great influence on the entire field, but I see all sorts of conflicting advice with it. This question drove me past “what makes a good programmer to me?” and “What is the larger consensus of a good programmer?”
Level Up! How to Become a Great Professional Software Developer - Steven Talcott Smith
I have not yet read this, but it is on my list. Looking at the table of contents, I don’t see anything that doesn’t touch on what has already been said by others, but going by Grounded Theory, I don’t want to miss important data.
Blogs and articles
Who is a Good Programmer? - Ed Weissman. This short comment was key to starting my journey. The whole concept is value laden and it made me want to further grapple with the question.
Programming achievements: How to level up as a developer - Jason Rudolph
What Really Makes a 10x Engineer - Charles Max Wood
Mastering Programming - Kent Beck
Rich Hickey on becoming a better developer - this is an unsourced copy of a comment by Rich Hickey (of Clojure fame) responding to Jason Rudolph’s blog.
Great Programmers - Bram Cohen
What makes a good programmer? - Eran Galperin
Making the Good Programmer … Better - James Sugrue
Done, and Gets Things Smart - Steve Yegge
What Makes Great Programmers Different? - Andrew Binstock - Dr. Dobb’s
What Makes A Great Programmer? - Treehouse
7 ways to be a better programmer - Amy Jollymore
Top 10 traits of a good programmer - “Jayson”
The key to being a good programmer - Andy Gibson
How To Become A Good Programmer - Simeon Visser
Laziness Impatience Hubris This is a wiki article that has summarizes a Larry Wall idea about the three great virtues of a programmer, and some comments on the insight.
He expounded later on Big Think that talks about it as a joke. He uses Persistence, Smart, Social, Literate, and Slightly Insane, using Lord Of The Rings as a metaphor. (This looks like another attempt at wit.)
Why Good Programmers Are Lazy and Dumb This is an old article that takes “Lazy” and “Dumb” as virtues, as Larry Wall does. “Lazy” is operationalized as writing code that is easy to modify later, and “dumb” as someone who realizes their own limitations and continues to learn and be critical of their own work, and keeping a childlike curiosity and creativity in solving problems.
Discussion Threads (in addition to those tied to blogs above)
I’ve kept these because it captures a wider variety of opinions from people going from their gut, and while it is low fidelity, it captures some interesting insights.
How Can I Know Whether I Am a Good Programmer? - Software Engineering Stack Exchange
What makes a great programmer? - Old Fog Creek Software discussion board post
What makes a good programmer good? - Reddit thread.