Philipp Lenssen agrees that inspired laziness is a desirable trait for software developers:
.. only lazy programmers will want to write the kind of tools that might replace them in the end. Only a lazy programmer will avoid writing monotonous, repetitive code. The tools and processes inspired by laziness speed up production.
But Philipp adds one caveat: truly great programmers aren't just lazy. They're dumb, too:
Programmers who know they are smarta) stop learning
b) stop being critical towards their own work
In the endless battle between programmer and compiler, give up early and admit that it's always you and never the compiler who is at fault.
Nobody is really smart enough to program computers. The only way you'll ever succeed as a software developer is through humility and the Zen concept of beginner's mind: approaching everything as if you were seeing it for the first time. Most of all, that means not being afraid to ask the stupid questions:
.. when confronted with a problem from management, a good programmer will adopt the mindset of being dumb. He will start asking the most simple, child-like questions, because he doesn't accept the parameters someone thinks make up the problem.
Unfortunately, I frequently see developers who are afraid to ask basic questions for fear of looking stupid. Maybe it's our macho smarter-than-thou programming culture. Having the guts to ask basic questions is, ironically enough, a hallmark of the best developers I've ever worked with.
Being lazy and dumb isn't just good career advice: it's the key to running a successful software business, too. As Mark Cuban points out, everyone else is just as lazy and dumb as you are:
It was Aaron Spelling I believe who said that “TV is the path of least resistance from complete boredom”. Which is another way of saying that it's easier to watch TV than it is to sit there and do nothing.Which describes exactly how people make most of their choices in life. They take the easy way. They take the path of least resistance.
There are certain things in life we all have to do. There are certain things in life we choose to do. Then there is everything else. The things we do to kill time. In every case, all things being equal, we choose the path of least resistance.
Understanding this concept is key to making good business decisions.
In other words, the only way to build great software is to make things as easy as possible for your users.
Posted by Jeff Atwood View blog reactions
« Mavis Beacon Ate My Brain! The Rise of the PokerBots »
Right on! If you don't ask the basic questions, a "smart" developer will end up writing fantastic code that does the wrong thing.
Haacked on August 27, 2005 09:30 PMI totally agree. Here is similar article from a couple of years ago that offers practical applications of lazyness in programming.
http://www.vbrad.com/pf.asp?p=Articles/janmay01/art_LazyProgrammer.htm
Geez, you mean I've got to go register "dumbcoder.com" and "humblecoder.com" too?
Scott on August 28, 2005 11:10 AMGreat post. We all have to be "dump" and "lazy."
Stas Kubasek on August 29, 2005 09:59 AMYes. Be Lazy. In fact, eat your code, dump your tea and flirt with the trolley dream.
Life = morphed bilungualism. Peace.
edw
tymacia on February 28, 2008 11:16 AMhi guys.
i know this article is from 2005, but i still have to comment on this.
my opinion basically comes down to the following, although still simplified
(so you maggots can understand :D).
the presented ideas are definitely interesting and nice as a provocative start of thinking about these issues.
the first statement:
> .. only lazy programmers will want to write the kind of tools that might replace > them in the end. Only a lazy programmer will avoid writing monotonous,
> repetitive code. The tools and processes inspired by laziness speed up
> production.
...is very true (and actually give you a good feeling because its nice to find your laziness justified in such a convincing and cool way :));
apart from the 'only' - in reality, doing these things will simply be easier and come more naturally (due to intrinsical motivation) if you are particularly lazy, it's of course still possible to do them (even efficiently) if you're not though.
For example you can create tools which speed up production by a pretty formal approach, seeing it as a top priority to optimize workflows - not neccessarily your own.
The stuff about being dumb is obviously completely bogus and makes the whole article look more like a satire than anything else - and i love satires, but you're mixing some interesting and true points with satire in a way i don't really like...
i guess because i think it makes it harder for a lot of people to see the valid points from a useful perspective.
For clarification: It's bogus because you need above-average intelligence in order to program (anything useful, not talking about hello world here), and it's bogus because the ability you are mentioning (of asking basic questions like a child etc.) is in fact part of a highly advanced mental ability, not even only 'playing dumb', but part of the vast field of the ability to look at things from different perspectives, which can be so-called rational perspectives or trying to emulate other people's perspective for example.
This is also why the statement about good business decisions and the path of least resistance is very true; this is referring to being able to see things from the perspective of 'the masses'. It would be a massive fallacy to think that everybody is taking the path of least resistance all the time though. Some examples are
gurus and people who meditate a lot and try to improve themselves (even if it means hard work, which it usually does), people who think that the easiest way doesn't count, is boring or of no real value(very strong in so-called perfectionists), people who manage to recover from an addiction etc. ppp.
> In other words, the only way to build great software is to make things as easy > as possible for your users.
After all (still not the only way btw, think about expert tools and stuff targeted at geeks), making a software very easy to use for the average consumer/user usually means the programmers have to put even more effort into creating it;
a vast 'collective' of smart people put a lot of thought and time into creating tools which enable masses of people, including those who are far away from being smart, to do things they would not be able to do otherwise - or at least much more slowly/with a worse outcome etc. They are using the 'frozen' (manifested in programmed concepts etc.) and added up intelligence of hordes of developers (from the hardware devs, to firmware devs, to os devs, to application devs etc.) so to say.
process this. :)
Yeah, this is still in 2005 but we are still reading it... nice article... =)
simoncpu on July 16, 2008 06:01 AM| Content (c) 2008 Jeff Atwood. Logo image used with permission of the author. (c) 1993 Steven C. McConnell. All Rights Reserved. |