Three great virtues of a programmer

📄 Wiki page | 🕑 Last updated: Dec 21, 2022

In his book "Programming Perl" (also known as "Camel Book"), Larry Wall encourages us to develop these three great virtues of a programmer: laziness, impatience, and hubris.

There are many ways to interpret this, but in the second edition of the book, we have a glossary with definitions of these terms:

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. Also hence, this book. See also impatience and hubris. (page 609)

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 pretend to. Hence, the second great virtue of a programmer. See also laziness and hubris. (page 608)

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. Hence, the third great virtue of a programmer. See also laziness and impatience. (page 607)


I've seen a lot of criticism of this, especially in the context of the author and his design of Perl, but leaving that aside, I think there's some truth to this.

Almost all great programmers I've met had these virtues, at least to some degree (and in some sense of these words). A sort of pride or hubris is a huge motivator to improve things, to come up with something better. And the combination of impatience and laziness can help you to force yourself to find less wasteful, less broken ways.

That being said, I've also seen lousy programmers with these virtues, so I'm not sure I'd recommend actively developing them; but if you already do have them, maybe you can use them to your advantage.


Ask me anything / Suggestions

If you have any suggestions or questions (related to this or any other topic), feel free to contact me. ℹ️


If you find this site useful in any way, please consider supporting it.