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.
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:
- 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.
- 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.
- 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.