I'm totally with you on this. People are confusing laziness with efficiency and smarts.
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.
Showing me this clearly demonstrates the confusion of semantics I`m talking about...
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.
>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?
> 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?
Larry Wall doesn't get to change the definition of laziness. His definition which explains a lazy person as going through "great efforts", fully "documenting what you wrote" and writing "labor-savor programs" goes against all definitions found in English dictionaries.
This is laziness: "inactivity resulting from a dislike of work."[1] 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.
It's a little more complex than you present it. You only get to think of Alan as inefficient because you know what Charles did in a similar situation. However, if you only knew what Alan did you'd say he was smart and efficient.
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.
"industrious" does not been intelligent. "Industrious" means hard-working. No, I would not say Alan was smart, because he ended up writing a product with half the functionality, triple the amount of bugs, quintuple the amount of code, and quadruple the amount of employees. He didn't engineer the solution to minimize costs, maintenance, and simplicity while maximizing functionality. He just jumped into writing code thinking he knew best. So, to re-iterate, he's an idiot (compared to Charles).
"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 first paragraph you just repeated what I said. Yeah, Alan is an idiot, but you can only conclude that comparing him with Charles. Otherwise he just behave as any corporate developer is expected to.
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.
Would you hire a Charles, or would you hire a CharlesPrime who does exactly the same thing as Charles minus all the time spent playing space invaders at work?
But Charles wasn't just wasting his time, he was thinking about the problem while playing games! At least that's my interpretation.
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.
Again, we'll just leave it as is, because I still think you have the definition of "lazy" wrong. A lazy person doesn't play Space Invaders to think, he plays Space Invaders to avoid working (as per the definition of "lazy").
What if playtime is essential to creativity and developing models? Aren't children encouraged to play in different ways for this very reason?
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.
"A lazy man, Dad believed, always makes the best use of his Therbligs because he is too indolent to waste motions."
Cheaper By The Dozen, 1948, Frank B Gilbreth Jr. and Ernestine Gilbreth Carey
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".
After I read the first part, I felt really good about the beginner. But after the sequel, I see that this is something which does happen in real life. It is just sad.
The terms lazy and hard-working are used loosely here. I definitely would hire a smart programmer that's not afraid of doing things the 'hard' way when the constraints of the project demand it, but a programmer that too easily falls into doing it the hard-way may not be considering alternatives that are more maintainable long-term, and I've seen enough people get burned out by marathons of working the hard way that some surveys of the technology and pilot projects before jumping in (or just having an experienced specialist on-board) would have saved lives and careers.
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".