A programming mentality
Here's a rough and speculative outline of a psychological profile in software:
- Sensitive to bugs, but simply because there exist lots of bugs. Constantly pointing out problems, but not because they're a grouch or enjoy one-upsmanship. If the bugs weren't there, they wouldn't be complaining about anything.
- Optimistic and joyful about software, not in the sense of general techno-optimism but just in the sense of loving software. They have software they love and desperately want the world to have more of it. They appreciate both the general ability of software to do useful things and the fine details of craft that enable users to use programs fluently.
- Keenly aware that people make lots of mistakes. This is like (1), but up the supply chain. They're likely to doubt that a plan is clear (even to the person who is planning it) and to doubt that it will be easy (or possible) to implement cleanly.
- ...But not a jerk about it; for them, those are just facts of life. They are quite likely to like and trust their colleagues.
- Opinionated but fair.1 They believe in better and worse, in matters of design and taste, even as tastes vary. They are eager to describe and even to quantify all aspects of software, but don't subordinate human behaviors or aesthetic reactions to formulas or spreadsheets.
These constitute an idealized, but coherent, psychological profile. It describes many of my favorite colleagues and commentators. Some further notes:
- This profile is pretty rare, not just because it requires a lot of technical skill but because it has constituents that might be anticorrelated. This person is discerning but generous; pessimistic about roadmaps but optimistic about human potential; likely to delight in their colleagues and likely to believe that those colleagues will mess up constantly; eager to measure and eager to prioritize those considerations that cannot be measured.
- This is a profile, and the indefinite article is important. There are many ways to make and use software, and those will reward different temperaments. I don't know how generative AI will change the landscape, but I see talented people new to software doing cool and useful things. Even within a standard "Software Engineer" role, all sorts of people do great work. I dislike gatekeeping and I don't think there's one best mentality for making software. This is one mentality, described in terms of characteristics I've found striking and interesting over the years.
I came to the "opinionated but fair" formuation when I was thinking about why I like John Siracusa's and John Gruber's work so much.↩