Monday, March 7, 2011

Stop powering through code

Much like a sleep pattern, most people work in a fairly predictable cycle in which they need a little warm-up time, get into a groove in which productivity steadily rises then falls, and finally they burn out. This is usually over the period of a few hours or much more.

Not me. All night hackathons for school or work were fun in my twenties but I've found I'm now most effective in shorter "bursts" of coding. I think I've always been this way but it's definitely manifesting itself more that I'm in my thirties.

Back in my startup days, someone set up a web cam over the foosball table. People could log in from their desks. If someone was practicing (yes, some people were really serious about learning the angles and working on 'footwork'), others would inevitably meander over and start a game. These kinds of environments really helped me hit a sweet spot between creativity and burn out.

I can't sit in front of a monitor for 4 hours like some people and write a Java library or bang out some shell scripts. I need breaks or else the quality of my code really dips. Currently, my day job doesn't entail programming so I'm doing it at night and weekends. I also have a toddler at home so any opportunity to lock myself away for 3 hours straight and code is out the window. That's fine and here's why:

  1. I write better code by coding less. It seems the longer someone sits at their computer trying to solve a problem, the more likely they are to write shitty code. This can be because they don't see the big picture or just want to get through their current objective. Great article today in Hacker News detailing this hazard. During frequent breaks, I find myself debating my next move or talking myself into/out of a course of action.

  2. I get bored. 2 hours is about all I can take before I need to stand up and do something else.

  3. I don't need that long to ramp back up. Since I've probably already thought of what I need to do, I'm usually able to get into "the zone" and reach high productivity within a few minutes.