James Dobson says “Compassion is a central theme of the work my company does.” Maybe he’s right and we should add compassion to those three fundamental virtues of a programmer. I’m going to quote the full text from the Netropolis, in turn quoting Randal Schwarz:
- “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. Hence, the third great virtue of a programmer.”
In this context we could define:
- COMPASSION: What you feel when you want your team to work better together, and not let your fellow software developers suffer the pain of poor quality software development
It’s the Emotional Intelligence in the programmer virtues. When you start thinking of the way you work with others to deliver software, the other virtues kick in. Given that we are lazy, we want to deliver software features as quickly as possible with the minimum amount of work. We are impatient to deliver great software and move on to the next business feature without all that re-work in between. We have hubris about how we work together as a team: not just our software development process, or the tools that enable it, but our culture too.