Larry Wall, creator of the Perl programming language, famously stated that the three great virtues of a programmer are laziness, impatience, and hubris (pride).

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.

: 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. 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.

: 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. Hubris: The quality that makes you write (and maintain) programs that other people won’t want to say bad things about.

Using sarcastic dry humor, he drives home the core values he feels all programmers should have.

A few years back I found myself interviewing for a software tester role. I was asked the perennial question “ What are your weaknesses?” Instead of making up some nonsense about working too hard or staying too late, (which are true!), I jokingly responded with what I would later realize are my three “great virtues” of a software tester- wasteful, distrusting, and paranoid.

Wasteful : The quality that makes you explore paths that really most likely don’t matter. Toggle a rarely used configuration setting to see what happens. Read through database tables even though it’s not immediately related to your job. Test parts of the product that aren’t in active development. By being wasteful, over time you’ll become all knowing about every corner of the product.

: The quality that makes you explore paths that really most likely don’t matter. Toggle a rarely used configuration setting to see what happens. Read through database tables even though it’s not immediately related to your job. Test parts of the product that aren’t in active development. By being wasteful, over time you’ll become all knowing about every corner of the product. Distrust ing: When developers tell you something is fixed or “done,” you are not to believe them. Until you can personally verify it, it’s not fixed and it’s not done.

ing: When developers tell you something is fixed or “done,” you are not to believe them. Until you can personally verify it, it’s not fixed and it’s not done. Paranoid: The quality that causes you to wake up in the middle of the night wondering if you checked everything thoroughly. Did you remember to test it on Internet Explorer? What about Android? What about entering the data in a different order? By being sufficiently paranoid you’ll come up with workflows you didn’t think about the first time.

I was offered a warm invite for the next round of interviews.