I did something yesterday that doubled my daily coding performance. It was easy, cheap, and made a tremendous difference in my life.
Some of you may already know what it is. For the rest of you, its going to sound wacky.
I stopped working.
Or rather, I set a timer for 50 minutes, during which time I worked on only one task -- no emails, no IMs, no games, no distractions. At the end of the 50 minutes, I went for a walk.
It doubled my productivity, and as a side effect increased my happiness with my work.
I know what many of your are thinking. I've heard all of the common pushbacks whenever this (or the more specific Pomodoro Technique) is mentioned.
Let's take them one-by-one:
Won't this break up my concentration on this really tough problem I'm trying to solve? Oddly, and counter-intuitively, no. As your mind relaxes while you do something else, it will continue working on your problem, many times making breakthroughs and putting together pieces of the puzzle that you never would have accomplished because you're looking at the problem from afar, in the background, instead of being all tied up in it.
How do you stop? I don't even look at the clock when I'm coding. Yesterday I used a microwave timer, but I was so astounded at the difference in my performance that I ordered a stopwatch, pictured above
I have all sorts of interrupt-driven things in my life, emails, IMs, cell-phone text messages. This will never work for me. I have a rule: no interrupt-driven devices allowed during my time on-task. After my break, I take a few minutes to do all sorts of interrupt-driven responses: I check my email, respond to IMs, and return calls. Only after that work is completed do I start the timer.
Seems like it would add unnecessary stress to my life. Actually it does, but in a good way. I found myself struggling to see how much work I could accomplish in each section. I naturally started breaking my work into smaller pieces, and would push myself to see if I could finish the piece in the timebox. But it wasn't stressful. We have another word for pushing ourselves to achieve better and better performance: fun. I had fun. It made a tough problem more into a game.
How much time do you spend off-task? I don't know. Beats me. I went for a walk -- a long enough walk to take at least ten minutes. One time I went out on the deck and ate an orange while listening to nature. That time I set the clock for a ten-minute countdown so I would be sure not to come in early.
Can I just do anything I want when I'm off-task? I don't think so. I think you have to do a singular activity that mind-blanking. Walking, ping-pong, playing a musical instrument, meditating, napping. I think that activities which include moderate exercise and goal-oriented challenges -- especially those outside -- work better than others, but I'm only guessing.
What's the trick? The trick, in my opinion, is that forcing your mind to disengage with a problem that it is highly attached to causes some subconscious tension: your mind is really wanting to get back to that problem. So it continues to work on it and think about it. The more you tear your mind away from the work, the harder it will push to get back to it. The more dramatic the stop, the more involved you are in the problem, the farther you take your mind away from what you're doing, the more it's going to want to get back to it. This makes your mind work much more effectively than simply staring at the monitor and/or typing up a bunch of junk. You're able to step back and see the big picture. I can guarantee you, you have all sorts of better ideas about what you should be doing once you sit back down. It's almost like a mini-code and design review running as a background task while you play.
If you're so smart, how come you're just starting this? Hmmmm. Here is where our story takes a turn for the worse: I used to do this all of the time! In fact, I found that after doing this for a while I was able to dynamically allocate time-on and time-off task. I used to code like a banshee, but I stopped.
Why did I stop? Because as browsers became more and more interactive, and computers became more and more interruptive, I found that I started subconsciously confusing the entertainment value of computers with the work value of computers. I'd work a bit, then flip over to HackerNews, then read a couple of interesting articles, then work a bit more, then maybe comment some, then over to email, etc.
What I was doing seems so obvious in retrospect: I was bombarding my mind with all sorts of new stimulus to process. It couldn't work on my "main" problem because I was busy flipping back and forth between perhaps dozens of different stimulus-producing programs. Remember the goal here is to switch from being single-minded on a programming problem to being single-minded on something that has nothing to do with programming. If you'd like to be entertained by your computer, you can do it before you start work, during your lunch, or in the time before you start your next cycle. The more I look at modern computing, the more I am convinced that this general-purpose, entertainment-driven aspect of computers is diametrically opposed to using them as creative-work-producing machines. Over the years I've just slowly stopped doing micro-sprints and spent more and more time being "immersed" in the computing world. Not a good thing for your brain, trust me.
This is such a simple thing it's probably very difficult for you to imagine it could work. But give it a shot -- who knows what you might find?
As a side note, an interesting observation from all of this is that physically separating our electronic devices by function may be one of the other great hidden productivity boosters. (And a way to prevent slowly blurring the lines in your mind between a passive and an active tool)