Hackers are impatient as they don't want to hang around wasting time when they could be solving the "real" problem. They don't want to be jumping through pointless political hoops before they can get to real work.
They are lazy because they don't want to have to type in the same command 50 times with small variance in the command - they write a script to do it for them. This script is by far the better solution, not only saving time now, but saving time in the future and expanding the hackers experience and knowledge.
Hackers are hubristic not because they think their ideas are the best, or they can do anything. Far from it, hackers are very often very deferential to other, more senior hackers, and very often use other "good" solutions as part of their own. You need to have some sort of hubris to actually start a bit of work in the first place. Without hubris, the Linux kernel probably would never have been started.
Impatience: Why is this code taking so long?
Hubris: I could write code that is way faster/better than this!
Go to a lazy person's house and the whole place is a mess;
Go to a diligent persons house and it is very tidy, because they clean everything top to bottom.
Go to an engineer's house and they have arranged everything so that it can be made reasonably clean in under 30 mins.
Unfortunately, not everyone sees that distinction.
Reminds me of favorite fact from 'The Information'. The original use of logarithms was by human 'computers', literally, people paid to run the calculations to fill tables, which were then printed and sold in books. They used them to turn difficult multiplication and division problems into simpler addition and subtraction (reducing error and effort apparently). Sometimes I think math should be taught with much more historical context!
Basically, if you're using a naive Bayes classifier, you may have to multiply really small probabilities. Floating point numbers are not great at multiplying really small numbers. So the trick is to take the logarithm of the probabilities and add them together.
It's the people who realize "this could be done more easily" that innovate. I guess lazy is just a simpler way of saying it.
They also put of things and alot of tasks negate themselfs or were redundant to start with. Manager asking for a report say. You could do it then and drop other things or you could leave it and if it is important you will get chassed up for it. If this happens alot a lazy person will write a script to do it, not tell said manager and gain from it. Others do the script, tell the manager and then get workbombed for no extra return. Lazy is in many ways another word for smart. Thing is though when you say lazy, most people think of poor hygiene, says alot about them mostly.
Meanwhile everyone watches in horror as the inventor spends all that time looking for the solution thinking how insane the inventor is because they could just "do the work already".
Hopefully your physics teacher also made a point similar to this:
Even if it takes the inventor 10 years to automate something that takes a worker one day to do, it can benefit everyone in the long run if that task is done often and on a large scale.
Seriously though, I get what the writer is talking about though I would think it is more of a desire for efficiency. I don't want to keep writing the same code repeatedly but that isn't really laziness.
Programmer laziness = You are doing something that annoys you because it's slow so you take a whole day scripting and automating something that accelerates it.
Ofc, didn't take me a day to do that.
When someone works to make work more efficient, he is still working! By definition, a lazy person is unwilling to work (and that includes work that optimizes work).
I'd hire a smart hard-working developer over a smart lazy one any day.
I'm just going to leave that here...
Charles, from the parable, is just smarter than Alan. Alan wasn't able to find the simple efficient solution and thought the problem was so complex he had to hire three more employees. He's just an idiot.
If you're showing me the article because "yea but Charles played Space Invaders, so he's lazy!". Well, an employee who would have done exactly what Charles did without playing Space invaders would have been a better person to hire...and that is my point.
Well yeah. I think you're the one missing the semantics here.
Part of the point was that Charles was working for quite a bit longer than his supervisor thinks he did. Besides the space invaders (Which was poor form, and something I would never dream of doing on an hourly wage.) he was in fact planning out the program. (See the time spent scribbling notes.) It just didn't look like it because he wasn't creating a huge fanfare surrounding the process. Alan jumped right in with some hazy OOP sketches and sort of "hacked it out by committee." as he went along.
He's lazy because he thought about the problem instead of doing the "straightforward" OOP, headache inducing four module style design favored by Alan.
>-Unwilling to work or use energy: "he was too lazy to cook".
>-Characterized by lack of effort or activity.
And now you're telling me he's lazy because he "thought about the problem", "worked for quite a bit longer than his supervisor thought" and "planned out the program". What do foresight and smarts have to do with being unwilling to work?
It's a reference to this:
If you feel that these usages are entirely too subversive, go yell at Larry.
This is laziness: "inactivity resulting from a dislike of work." Please note: it says "inactivity", not "activity". What Larry Wall is describing is just being an efficient and smart programmer. But calling it "laziness" is funnier and fits with the three-weaknesses-that-are-really-virtues joke he has going.
He did everything he was expected to do and some more, a very industrious guy. He didn't seem bothered about doing a complicated design, writing lots of code, coordinating the other developers and the testers, revising the code several times and maintaining it. He wasn't lazy at all.
On the other hand, probably Charles didn't want to do all that stuff. He just wanted to write as little code as possible with as few bugs as possible and be done with it, no maintenance at all. And that required thinking very carefully and deeply about the problem he had to solve in order to get it right and write the necessary code.
In trying to do as little work as possible and return to Space Invaders, he had to be smart and efficient. That's the lesson here, great hackers use their brains and write great code to solve their problems with the absolute minimum amount of work required. It's really about laziness.
"great hackers use their brains and write great code to solve their problems with the absolute minimum amount of work". Sorry, but I disagree. Just because, in the parable, Charles' solution ended up being the better one, that does not mean that all solutions with less code and less work are "greater" (remember, it's just a parable). Sometimes, you need extra work to make the solution more stable, more maintainable, more bug-free, etc. Great hackers recognize these situations and do the extra work and planning to come up with an elegant design when necessary.
I would never hire someone who always does the "absolute minimum amount of work", because if it's a poor solution, we'll end up doing more work later (fixing bugs, refactoring, debugging, etc.).
In the second paragraph, we have a problem of semantics. If you need to do some work in order to have a more stable, maintable and bug-free solution, it's not extra at all, just the necessary amount to avoid doing even more work in the future.
By planning carefully you are actually avoiding rewrites, bug hunting, failures and maintenance problems. In other words: future work. And I think that identifying the problem and its best solution from the start will always reduce the total amount of work in the long run. Always.
As both of us are saying, a poor solution means more work. So, someone who truly wants to do the absolute minimum amount of work required should never build a poor solution intentionally. It's not the truly lazy thing to do. They are not as lazy as us, lazy people for real, they just want to avoid work in the present ;P
If you want to work less, then get the problem right and build a wonderful solution that should not present complications in the future. I know it's not a foolproof method, it's a bit ideallistic, has many grey (and black) areas, but for me it's a great principle to follow at work.
I've learnt that I concentrate wonderfully and solve problems while walking. I know other people see just a guy walking in an absent-minded way, but I'm working!
For me Charles and CharlesPrime are exactly the same example, they just do the same thing in different ways. If it isn't Space Invaders then it will be another thing, they both need time to think. Otherwise you are hiring code monkeys.
Honestly, I've been Charles before, and no one cared because the work was done well and on time. I was still responsive to my coworkers, but there were definitely periods where people understood I was recharging my "psychic energy" or whatever they thought made the magic happen.
I believe that there is precedent for this connotation, which granted is different than the denotation. This is the best example I have on hand since I remember this book from grade school. I could imagine Larry Wall had a similar encounter with this usage of "lazy".
But, aren't they little hard to come by?
People are lazy because they are not challenged by the things around them.
The point of this article is that some people are lazy in a different way. They aren't lazy because they aren't challenged. They just appear to be lazy because their hands aren't at the keyboard. They're actually the opposite of lazy because they are tackling the additional challenges of evaluating all of the possibilities and trying to find the most expressive and easiest maintained implementation.
Don't get me wrong, there's a time and place for a quick and dirty hack session, and sometimes you just need to hard-code the stuff to get the first version out the door, but if you have the luxury of making it right the first time, go for it. Just don't forget to counter-point, "Perfect is the enemy of good".
"If necessity is the mother of invention, then laziness must be the father"