(Click here for the full list)
Lazy Ones
I once worked with a guy named Ed. He was one of the most conscientious programmers I’ve ever met. He wrote beautiful code, well organized, easy to understand, virtually bug-free and rigorously commented. One day we were discussing programming, and he said that he wrote all those comments because he was lazy - he didn’t want to have to work hard to change the code later.
I’ve lost track of Ed through the years, but I often think about that conversation. For me, well-written unit tests are my way of being lazy. A good, use-case level automated test suite is (in my experience) an incredibly powerful way to validate the behavior of the core of the system, a great tool for teaching the key concepts, and, most importantly, an outstanding way to minimze the amount of frustration involved in changing and re-doing the system over time. And so far, it has worked very, very well - I don’t have to spend a lot of time maintaining old systems. They run, they do their job, and I revisit them occassionally to add features.
Many of you might have had a different image in your mind when I wrote “Lazy Ones.” - you were probably thinking of the slothful slackers who stealthily sneak and slither, souring source code serendipitously. (Sorry, couldn’t resist) But I don’t think they’re lazy. If anything, they are Tired.
Good Things
- Lazy programmers look at the whole system, and try to find the way to satisfy as many goals as possible, having learned through experience that not satisfying as many goals as possible will surely lead to annoying rework
- Lazy programmers often seek to improve themselves, learn new languages and techniques, so they can find new ways to solve problems efficiently.
- Lazy programmers hate doing grunt work, and will, whenever possible, find ways to automate or scriptify the work, instead of doing it by hand.
Bad Things
- If they get work that is not only tedious grunt work, but essentially impossible to automate, Lazy programmers get very, very grumpy
- Sometimes (perhaps more often than others) Lazy programmers are prone to overbuild - overreaching the actual need
- Lazy programmers often hate/despise/deplore the concept of having to fix and debug crappy code
[…] Lazy ones […]
Pingback by Indefinite Articles » The Fourteen Types of Programmers — October 24, 2006 @ 12:54 pm
Am I a lazy programmer? most probably yes. wuahahahaha.
Comment by PohEe.com — October 29, 2006 @ 12:03 pm
Seems like I’m a lazy liker of shiney things… Quite interesting.
Comment by Vest — October 29, 2006 @ 12:16 pm
A lazy programmer doesn’t debug, he just refactors until the program works as he intends.
Comment by Echo Nolan — November 1, 2006 @ 9:04 am
Another Bad Thing about lazy programmers:
When given someone else’s non-lazy code, they are more prone to chuck it and rewrite than try to understand it and re-factor.
Comment by bob — November 1, 2006 @ 3:57 pm
They also tend to fail in systems that measure productivity in the volume of code produced rather than its functionality.
Lazy programmers tend to find ways to do more with less code, thus reducing their output while still meeting functional requirements.
In many environments this leads them into trouble, as such practices are frowned upon because it doesn’t lead to a large codebase (which is often still seen as a good codebase by definition).
The best example of that I encountered a few months after starting as a professional programmer.
My team performed a major cleanup of our codebase to save maintenance work, reducing the net size by several tens of thousands of lines of code (comments were not counted), despite writing several tens of thousands of lines in the process.
We were given an official reprimand for not meeting productivity goals, as the automatic metrics tools had flagged us as having had negative productivity over the period.
Comment by jtw — November 2, 2006 @ 9:54 am
Very well written … and so true :o)
you can find more thoughts on (another type of) programmer laziness under
Comment by Mario Gleichmann — November 2, 2006 @ 1:07 pm
Good explanation of lazy programmers, it completely meets my understanding of them. That said, yes, I’m in this, too. Alas, you have, in my opinion, forgotten two points:
Good Things
- Lazy programmers think twice before hitting a key on their keyboard.
Bad Things
- Lazy programmers think twice before hitting a key on their keyboard.
And yes, this was not only lazy cut’n'paste… .
Comment by Georgi — January 15, 2007 @ 11:02 pm
[…] small tasks almost bordered on something that I could do myself, but since I can be a lazy programmer, I figured a small lightweight JS library that people much smarter than myself have written and […]
Pingback by nolancaudill.com » jQuery: a new joy — November 8, 2007 @ 1:28 am
hehe, i, lazy
Comment by some dude — December 8, 2007 @ 8:54 pm