(I finally tracked this down to the glossary of the Camel
book, but I'd swear I've seen it in slightly different form
elsewhere.)
The Camel book
mentions these three qualities:
- Laziness
- The quality that makes you go to great effort to reduce overall
energy expenditure. It makes you write labor-saving programs
that other people will find useful, and document what you wrote
so you don't have to answer so many questions about it. Hence,
the first great virtue of a programmer.
- Impatience
- The anger you feel when the computer is being lazy. This makes
you write programs that don't just react to your needs, but
actually anticipate them. Or at least that pretend to. Hence,
the second great virtue of a programmer.
- Hubris
- Excessive pride, the sort of thing Zeus zaps you for.
Also the quality that makes you write (and maintain) programs
that other people won't want to say bad things about.
[Also, the thing that makes you write programs to do something
that's already been done, because you believe you can do it
better --- Wim.]
Hence, the third great virtue of a programmer.