« Make something people hate| Main | The HN Heartbeat »

To code quickly, you must quit coding

| | Comments (9)

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)

APPEND: Several readers wrote and noticed how similar this is to the Pomodor technique. If you're interested in following this up more, I suggest you take a look a the material.

By the way, months ago I decided to start using Amazon affiliate links in all my blogs. I guess I should put this on the side-bar, but haven't had time to rebuild the blog lately. Also, speaking of Amazon affiliate links, if you're into hacking yourself and technology, and love startups, check out my micro-site hn-books.com. I took all the books that hackers recommended to each other and put them in a sortable ranked list, along with reviews and internet searches of all the conversations.</self-promotion-housekeeping stuff>


Great essay. I struggle all the time with this sort of thing and have tried various approaches. Each one seems to work for a while and then it's like my ADD overcomes it. Right now I'm in a kind of hybrid of what you suggest with a GTD overview that I do periodically, tied into a priority ranking so that the items on the list keep moving around.

hn-books.com link is broken.

hn-book.com link fixed.

As far as the previous commenter mentioned, things working for a while then stopping, I don't have an answer to this. I think there's a bit of an arms race going on between hardware/software manufacturers and the rest of us. It's in their best interests to keep us amused and entertained and make everything into a game. It's in our best interests to set aside time for things that might be difficult, time-consuming, and very rewarding. We're going to need to evolve some new strategies of our own to stay ahead in this battle. This is getting to the point where I'm not opposed to even extreme measures like electric shocks, if it works for the user. We need to relax and be entertained and let our thoughts drift, but not all the time.

Take this very instant. I'm sitting here, just finished writing the blog and doing my daily startup activities, and I have roughly 20 tabs open on my browser. My email and IM light flicker every few minutes. While I'm consuming many different articles on all kinds of interesting things, and responding here on the blog, I'm also kind of drifting mentally, not focused on doing any one thing (although I have a very clear task I need to complete this morning)

I know that the instant I set the countdown timer, I'll switch gears. It's almost like by committing to stop programming, I give myself permission to start. It's a very strange experience if you've never experienced it. And highly rewarding.

Hey, nice description of the process. Read a similar post a week or so ago, so I coded up a "Countdown" timer app for fun at work and have been using it (and improving it on breaks... it's different enough from my "day job" programming that it's a nice break).

I'm finding it works pretty well; ask me again in a month :-). But I do see some of what you do -- more concentration, more focus, more urgency (which I'm keeping under control, kind of feels like it could turn to panic if I let it go too far).

And I really, really find that the amount of time the "little interruptions" took out of my work time is amazing. It's a nice change.

This is probably why I've become less productive since stopping smoking:

Before, as a smoker, I'd give myself goals to reach before I could go have a cigarette - now I don't.

this article is insteresting. It inspired me to think that the 20 tabs on our browser evetually "open 20 threads" in our brain. So our brain become multi-threading too. Will this practice be a important and positive driving force in our furture evolution.

If I were you, I would ban the websites distracting me by adding them to /etc/hosts. :)

Decided to give this a shot. Chrome has a nice extension (simply called timer) with a few different preset times, which you can change. Going to give this a shot! Hopefully it will not only keep me from getting distracted on the net, but give me a reason to step away, even though I always feel like I'm "in the zone" and "can't stop now". Good write up!

Thanks! Hope it works well for you.

Over time I've found that I have to make myself start the stopwatch -- very strange. I know that it means more productivity, but for some reason it bugs me to have to start the clock -- even though I know it's the best option.

If you can, come back and tell us how it went! Would love to hear your experiences.

Leave a comment

About this Entry

This page contains a single entry by DanielBMarkham published on November 12, 2010 8:21 AM.

Make something people hate was the previous entry in this blog.

The HN Heartbeat is the next entry in this blog.

Find recent content on the main index or look in the archives to find all content.

Social Widgets

Share Bookmark this on Delicious

Recent Comments

  • DanielBMarkham: Thanks! Hope it works well for you. Over time I've read more
  • d3vkit: Decided to give this a shot. Chrome has a nice read more
  • Yunfan Li: If I were you, I would ban the websites distracting read more
  • Ding Jianghao: this article is insteresting. It inspired me to think that read more
  • Mark: This is probably why I've become less productive since stopping read more
  • yachris: Hey, nice description of the process. Read a similar post read more
  • DanielBMarkham: hn-book.com link fixed. As far as the previous commenter mentioned, read more
  • Oliver: hn-books.com link is broken. read more
  • Todd: Great essay. I struggle all the time with this sort read more

Information you might find handy
(other sites I have worked on)

Recently I created a list of books that hackers recommend to each other -- what are the books super hackers use to help guide them form their own startups and make millions? hn-books might be a site you'd like to check out.
On the low-end of the spectrum, I realized that a lot of people have problems logging into Facebook, of all things. So I created a micro-site to help folks learn how to log-in correctly, and to share various funny pictures and such that folks might like to share with their friends. It's called (appropriately enough) facebook login help