Again, confusion is the result of describing two different things with the same word:
1. Desiring efficiency, so one can achieve more with less effort.
2. Not wanting to think very hard, and putting off difficult decisions.
This article argues that programmers aren't number 2. I'd agree. Others argue that programmers are number 1. I'd agree. There's no conflict here, just confusion!
But the first definition doesn't make much sense does it?
For example: if you're in good shape you can run up a flight of stairs without any effort. But is getting in shape laziness? Not by any sane definition.
I'm sure you can think of a dozen other analogies, but they all illustrate the same thing: educating yourself, improving your tools, getting in shape are not laziness but the opposite.
And I think that's what original author meant. There is conflict between the definitions, and only the second definition indicates laziness.
I use the term intelligent laziness, that is the constant desire to minimize the effort you will need to invest long-term in your life to achieve your goals.
Suddenly writing code cleanly becomes a very lazy thing to do, it reduces the amount of effort you have to invest in a program over the program's lifespan, unless its a throwaway and then ugly stuff makes sense.
Working out isn't a lazy thing, it is easier to climb a flight of stairs than to train 6 hours a week for a year and climb a flight of stairs. It increases the efforts you invest in things, it might be a goal to be healthy and energetic but then the lazy thing to do is to try to hack your training schedule and get the most benefit out of every drop of sweat.
I think the confusion comes from applying real world constraints to code. Most people would be in shape if you only needed to get in shape once and you maintained that body with zero effort over time. Lazy programmers recognize you only have to build the code once to benefit every time you use it. So building tools can be useful but only if they are going to save you effort over time.
The problem I see with many lazy programmers is they tend to hide how easy it is to fix problems over time. If might take them five minutes to do something, but they don't feel the need to share this with other people. But, in the end lazy programmers tend to get more done than average even if they don't spend much time actually working.
What if I decide to take the elevator? Some would say I'm lazier than the person who takes the stairs, but if the goal is only getting to the 6th floor, then being lazy (resistant to exertion) was more efficient.
Getting in shape would be like working to increase your typing speed so you can write 1k-line programs easier when a lazy programmer would just write a shell one-liner (take the elevator).
The article is pointing out that "lazy" is often used like this:
"I program because I’m too lazy to do the same thing again and again!"
i.e. I want to abstract the concept of doing it into a computer program (or shell script, or cron job, or whatever). But the author understands "lazy" to mean something different, and more to the point, negative.
The point that I'm trying to make is that this argument is not about whether programmers are lazy, but it's about what people understand by the word "lazy".
I understand what you're saying. And I think this whole mess could be clarified by simply not using "lazy." I think it's pretty normal for people to assume the dictionary definition, and I don't think I would challenge anyone against thinking differently.
1. Desiring efficiency, so one can achieve more with less effort.
2. Not wanting to think very hard, and putting off difficult decisions.
This article argues that programmers aren't number 2. I'd agree. Others argue that programmers are number 1. I'd agree. There's no conflict here, just confusion!