I've never really liked his inclusion of hubris here. Hubris is often defined as unjustified arrogance. Justified confidence, even if you're a jerk about it, was never the fatal flaw of a Greek hero. So I've always substituted arrogance for hubris: the belief that you better understand, and can better address, the requirements than any off-the-shelf library/program/ecosystem.
Three virtues of a great programmer
41–50 of 141 posts
Re: Three virtues of a great programmer
#42When I first encountered them as a hobbyist, they were surprising, as perhaps intended, due to the framing of classic vices as virtues. On some reflection though, it made sense, and shaped my understanding of programming as somehow _inherently different_ than other types of creation.
When I got started with a professional career, they functioned to soften the edge of anxiety. It meant that the community of programmers who came before me - which presumably included Larry Wall - would understand that these patterns in coder behavior were ultimately beneficial and that I would maybe fit in with a corporate programming environment. (Now I know that this isn’t always true; sometimes coworkers, both programmers and non-programmers, don’t always realize these unintuitive points, and in some special cases, those programmer instincts aren’t actually valuable.)
At some point, I disagreed with the framing. As others have pointed out, the patterns can be reframed as classic or functional virtues such as curiosity. Then I backpedaled and realized that the framing is important because these are unintuitive patterns and it makes us re-think habitual incentives that reward, e.g., work that is more productive but not more effective.
How did it hit me now? I realize that it’s also related to power dynamics. Programmers are assets to their employers but they’re also potential disrupters. The traditional “virtuous” framing of potentially-less-effective behavior, like patience, is related to the organizing and taming of a workforce.
It’s also related to the types of problems we encounter. When we work with computers, Larry’s list does usually lead to more effective outcomes. But when working with other humans, who have their own agency and idiosyncrasies, the traditional virtues are better-adapted behavior. This is also more true for the complex technical systems we deal with nowadays. So, as our careers transition from programming to system engineering and/or management, the traditional virtues become more relevant.
Anyhow, this is an evergreen and thought-provoking nugget of wisdom. Thanks to Larry Wall and those who have preserved it.
Re: Three virtues of a great programmer
#43I'd add Curiosity instead of Impatience. Impatience is related to Laziness. In both cases we want the computer to do the work instead of us. But Curiosity is orthogonal and important. The best programmers I know were always curious: Why was it built that way? Why does it give that output? Why did she say that? Curiosity is the beginning of knowledge. If you're not curious, you will miss out on a lot of opportunities…
Curious people are curious about others too, not just systems.
It’s related to caring. You have to care to be curious and we could use more people taking care in their lives.
Re: Three virtues of a great programmer
#44I think programming is an basically an exercise in effective communication. Edsger Dijkstra said that "Besides a mathematical inclination, an exceptionally good mastery of one's native tongue is the most vital asset of a competent programmer." This means being able to write down a description of a problem or a solution in a clear and concise way. This is the test I would use if I hired people (not only programmers).…
> ”… an exceptionally good mastery of one's native tongue …” Does that imply that one cannot be a competent programmer if working on an environment where the spoken tongue is not their native one?
https://www.cs.virginia.edu/~evans/cs655/readings/ewd498.htm...
Re: Three virtues of a great programmer
#45I think programming is an basically an exercise in effective communication. Edsger Dijkstra said that "Besides a mathematical inclination, an exceptionally good mastery of one's native tongue is the most vital asset of a competent programmer." This means being able to write down a description of a problem or a solution in a clear and concise way. This is the test I would use if I hired people (not only programmers).…
> ”… an exceptionally good mastery of one's native tongue …” Does that imply that one cannot be a competent programmer if working on an environment where the spoken tongue is not their native one?
Re: Three virtues of a great programmer
#46Re: Three virtues of a great programmer
#47I've never really liked his inclusion of hubris here. Hubris is often defined as unjustified arrogance. Justified confidence, even if you're a jerk about it, was never the fatal flaw of a Greek hero. So I've always substituted arrogance for hubris: the belief that you better understand, and can better address, the requirements than any off-the-shelf library/program/ecosystem.
I read hubris here as...you want to be the best, you don't want to be criticized, so you will work hard and be super motivated to make your program work very well, handling all the various edge cases, making it better than the competition.
He could have just used the word "pride" (which is far broader and has positive meanings too) instead. In some ways "ambition" might be a better fit.
Re: Three virtues of a great programmer
#48Earlier quoted context omitted.
What is your biggest weakness: "I work too hard" -- humblebrag
As someone currently recovering from burnout, that is indeed my greatest weakness, and it's anything but a brag! Working too hard means you're liable to disappear for 6+months, no sane employer should want that!
Re: Three virtues of a great programmer
#49Re: Three virtues of a great programmer
#50Earlier quoted context omitted.
What is your biggest weakness: "I work too hard" -- humblebrag
As someone currently recovering from burnout, that is indeed my greatest weakness, and it's anything but a brag! Working too hard means you're liable to disappear for 6+months, no sane employer should want that!
I will say tho, it gave me persistent back problems and RSI for two years :). But that again is not just “working hard”. It was bad posture, lack of stretching, breaks and exercise, I think.
Edit: Perhaps it’s the nature of the work or working hard unhealthily (physical and mental?) or the person’s characteristics.