Coding Horror

programming and human factors

Get Me The Laziest People Money Can Buy

Omar Shahine recently posted an inspiring ode to laziness:

An email every few minutes and desktop alert + sound to go with it makes it to easy to lose focus on my task at hand and look at my inbox. While I loved this feature when Outlook came out, it's become the achilles heel of my productivity.

If you like getting work done, you learn to appreciate inspired laziness as the positive character trait it really is. And I take this one step further: I turn off notifications for instant messaging, too.

Hard work often pays off over time, but laziness always pays off now.

There's more on this in Ole Eichhorn's Tyranny of Email and Tyranny Revisited:

Whenever you are not doing something which requires concentration, by all means, run your email client, run your IM client, have notifications turned on, take 'phone calls, the works. But when you really need to get work done, turn everything off. Isolate yourself.

There are a few ways that laziness can be harnessed to work for you, if you let it:

  1. Choosing what not to do
    Today's world is a combinatorial explosion of possible approaches. The signal-to-noise ratio keeps increasing. Choosing what not to work on is just as important-- and arguably more important-- than choosing what to work on. This is laziness as efficiency: why spend 5 days doing in-depth research on ten different solutions when you could have quickly discarded eight of them based on some key criteria? Cut to the key goals. Cultivate the skill of discarding approaches as quickly as you can. It's a lot faster to download code than it is to write it.
  2. Balancing communication with isolation
    Every day we creep closer to the Dick Tracy communicator watch future. Constant communication is the norm-- via cell/smart phone, instant messaging, email, blackberry, you name it. The price of all this constant communication is a serious uptick in interruptions. For some fields, like management, interruption is how things get done. But it's poison for software development. If we can't get into a flow state, it's difficult for us to be productive, so communication has to be carefully managed and sometimes deferred.
  3. People don't scale
    Truly lazy developers let their machines do the work for them. This is partially motivated out of self-interest, it's true, but smart developers know that people don't scale-- machines do. If you want it done the same way every time, and with any semblance of reliability, you want the human factor removed as much as is reasonably possible. I know for every problem I encounter at work that causes me to lose time, I ask myself-- how can I make sure I never have to deal with this problem again? If my solution fixes it so nobody ever has to deal with that problem, that's a nice side-effect, too.

Now, there's a pretty clear distinction between inspired laziness, as described above-- laziness that makes everyone's life a little easier-- and just plain not getting off your butt. If I was running a software company, I'd endeavor to hire the laziest people I could afford.

Written by Jeff Atwood

Indoor enthusiast. Co-founder of Stack Exchange and Discourse. Disclaimer: I have no idea what I'm talking about. Find me here: http://twitter.com/codinghorror