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.)

Books

Clean Code: A Handbook of Agile Software Craftsmanship - Bob Martin

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.

The Clean Coder: A Code of Conduct for Professional Programmers - Bob Martin

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

Levels of Seniority: How to Step Up as a Junior, Mid Level or a Senior Developer? - Kamran Ahmed Associated Hacker News comments

What Really Makes a 10x Engineer - Charles Max Wood

Mastering Programming - Kent Beck

What Makes a Good Programmer Good? - Josh Symonds Associated Reddit comments

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

How to be a great software developer - Peter Nixey Associated Hacker News comments

What makes a great developer? A story of an extraordinary blacksmith Associated Hacker News comments

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

Becoming a Programming Rock Star: 5 Traits that Make a Great Programmer - Matt Weisfeld

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.