Rants, rambles, news and notes from another geek

The Lazy Programmer

Wow. What an excellent article. I especially liked the following comment posted by Ambrose.

_You’ve heard of the four types of people that the Germans used in WWII to determine what military positions a person would be suited for. They’re based on combinations of two factors: laziness and intelligence.

If you have someone who is lazy but unintelligent, he would make a good grunt.

If you have someone who is very hard-working and intelligent, he would make a good staff officer.

If you have someone who is very hard-working but stupid, don’t let him in because he’ll cause more trouble than he’s worth.

But if you have someone who is very lazy and very intelligent, he will make the best general because he’ll find the most efficient and least expensive (laziest) way of achieving a goal. _

This article really made me think about myself as a programmer. I’ve always recognized that deep down inside I’m lazy, but I was always hesitant to point it out. When I explain why I like test-driven development so much, I try hard to explain how doing it will help you write better code the first time, so that you don’t have to write as much code in total. This is because I’m lazy, but I’ve always been afraid of saying it that bluntly.

Along the same lines, when I’m helping developers understand why writing well-modularized code is good, I want to tell them, “Trust me. I’m the laziest programmer you know and I do it.” Except I’ve always felt that saying I’m lazy would be unprofessional.

Now, I can just say that I try to use 4LF (4th Lazy Form) whenever possible and resort to 3LF (3rd Lazy Form) otherwise. 1LF is the kind of laziness that we know is bad. More like the biblical “sloth”. People who stop at 2LF think that they shouldn’t be doing 1LF so they try to do better, but they aren’t lazy enough (or intelligent enough) to recognize that they should take one more step.

[UPDATE] Eli posted 2 more followups to this thread: More Lazy Programming&nbsp_place_holder;and Lazy Programming III.