Live data from Hacker News

Three virtues of a great programmer

thethreevirtues.com

41–50 of 141 posts

Re: Three virtues of a great programmer

#41
post #14

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.

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.

Re: Three virtues of a great programmer

#42
I’ve had a variety of responses to this list over my programming life (~10 years hobby, ~10 years professional).

When 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

#43

I'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…

Seconded, and I’d add this is a quality of a great human being.

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

#44
post #38
post #33

I 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?

No, I'm 90% certain both Dijkstra and OP meant that what's critical is mastery of any tongue. In context, he was talking about what makes someone good at programming, not about the need to contribute to a team or communicate ideas.

https://www.cs.virginia.edu/~evans/cs655/readings/ewd498.htm...

Re: Three virtues of a great programmer

#45
post #38
post #33

I 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?

I don't think so. I think the core of Djikstra's thought is that mastery of your native tongue coincides with strong communication skill and ability to logically organize and present thoughts. You can articulate your thoughts and do so in a way that others can understand. Working outside your native tongue may add hurdles, but from my experience having worked with brilliant people who's native tongue is not English, those hurdles can be overcome. The skills still translate.

Re: Three virtues of a great programmer

#47
post #14

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.

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.

Yes, but that is not what the word hubris means. It means pride in the seven deadly sins sense. The pride that comes before a fall. Hubris would not mean working hard to reduce the scope for criticism. It would mean not accepting valid criticism because you think you are better than the critics.

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

#48
post #36

Earlier 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!

Do you work too hard or spend a lot of time on work? (before downvoting me, please consider that those things maybe different)

Re: Three virtues of a great programmer

#50
post #36

Earlier 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!

As someone who has worked hard for years (at some point I had three con-concurrent jobs), I’m not sure working hard is the variable that causes burnout :thinking_face:

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.

Post reply on HN