Skip to content

Three Virtues

Larry Wall named three virtues of the programmer: laziness, hubris, impatience.

I thought it was a joke the first time I read it. Years in the field taught me it was not.

An impatient engineer cannot wait. Slow builds get fixed. Too many manual steps become a script. A lazy engineer refuses to do the same thing twice. Any task done once gets automated so hands never touch it again. Put impatience and laziness together and tedious work disappears on its own. Complex problems converge toward simple structures. It just happens.

The problem is hubris.

The better the engineer, the less they listen to anyone they consider beneath them technically. They nod along. Inside, they believe they are right. I know this about myself. During code review, there are moments when I weigh the reviewer's skill before deciding whether to accept their comment. Not an admirable trait. But engineers are largely built this way.

Leading people like this requires one thing: technical ability. Logic will not move them. Being correct will not move them. The only thing that earns a hubris-driven engineer's trust is the conviction that you can write better code than they can. No amount of management skill or communication ability substitutes for that.

This is why the tech lead role exists. To wrangle creatures who are lazy, hubris-filled, and impatient, you must be one yourself.