Interruption is your enemy

You are working on a new credit card fraud detection algorithm when your Yahoo Messenger alert starts blinking on the lower right corner of your Windows desktop. It’s your Systems Analyst asking for a meeting for a new credit card report. “I am free tomorrow 10 am” is your answer. After closing the YM window, you get back to your Eclipse editor and look at your code. A few minutes later, your colleague in front of you answers his cell phone. You can’t help but hear the list of ice cream flavors they were arguing about. You stop working for a while. After your officemate hanged the phone, you tried to get back at your program. But as you were just trying to remember why you have ‘account[0]’ in your code, your male co-workers started converging on one area and started laughing out loud.

What was it you are doing again?

You are a smart software developer and you need a lot of time alone to finish the new credit card fraud detection algorithm. Unfortunately, only you and Einstein know that.

Programming is one of the most pleasurable moments any software developer will experience aside from sex. Unlike sex where you need at least 1 partner to enjoy it, programming requires an extensive period of time alone — something that is often forgotten even by fellow software developers.

Programmers produce their best code when they are in a ‘zone’ (others call it the ‘flow’). During this stage, developers are fully concentrated in their work as if they are in their own universe. They lose track of time and forget that their last meal was 8 hours ago.

Programmers need at least 2-3 hours of concentrated time to produce sensible work. Less than that, programmers rarely produce something important. There are moments that you go for another 5 hours but sometimes, after doing a lot of creative work, you just spend the rest of the day doing non-brain-intensive tasks like answering support inquiries, reading jokes, and surfing the Internet for the latest scoop on Paris Hilton.

Programming involves managing a lot of tiny details in your brain like variables names, parameter sequence, and where you are in that fraud detection algorithm. It is difficult to juggle these things if every 5 minutes or so you get interrupted by a phone call or laughing colleagues. This is why ‘time alone’ has a big impact on productivity among software developers. Companies like Microsoft and even small shops provide developers with their own private offices. Before you barrage me with MBA studies on productivity in an “open door everybody hears what others are talking about on the phone” study, let me ask you first if you have done any programming work. Writing a 100-page specification does not count. I am talking about dealing with arrays, pointers, recursions, hashes, joins, stack traces, Unicode. If you have not, please don’t interrupt me right now πŸ™‚

When a programmer tells you they want to work late at night until morning the next day, it is not because they hate the sun but simply because it is much easier to get in the zone when the rest of the world is sleeping. Even in the office, there is very little possibility that somebody would call after 7 pm so you would rarely be interrupted by a phone call.

Getting in the zone is difficult to attain and even harder to hold onto. Just getting in the zone takes an average of 15 minutes of uninterrupted time. So if you get interrupted every 10 minutes, you will never reach that productive 3 hour period. And you will just have to spend your 8 hours at work answering emails, listening to ambient noise, and wondering why you have ‘account[0]’ in your code. Even a 1-minute chat in your instant messenger can get you knocked out for another 30 minutes.

The key to reaching the zone is to avoid communication. To get started, you must give up instant messaging, phone calls, emails, meetings, and answering coworker questions. You must also protect yourself from ambient noise.

You can easily turn off stuff that you have control of like instant messaging, emails, and mobile phones. Meetings are often scheduled so if somebody asks for your availability, give the period that doesn’t overlap with your ‘zone’. Much better if you can set a ‘no interruption’ period among your co-workers. That way meetings won’t affect each other’s zone.

Ambient noise like those coming from your officemates’ keyboard can be solved by giving yourself a nice headphone. Rip some music from your Josh Groban collection and you now have your own ‘digital noise reduction system’.

Dealing with a coworker’s questions is more difficult. There is no incentive to ignore your co-workers unless you want to get ostracized. Helping a colleague is also another way to increase your good karma points. However, if you want to get productive you must give yourself uninterrupted time even if it means telling people to respect your “Do not disturb” sign on your cubicle. (You can also do that in your instant messenger) Don’t worry about people perceiving you as rude. People who knows the nature of programming and productive themselves will surely understand what’s going on when you are in the ‘zone’.

We are also guilty of interrupting ourselves. Sometimes when we are stuck in our work, we change tasks like surfing the Internet, reading a book, or updating our blog. Just as it is important for other people not to interrupt you when you’re in the zone, it is equally important that you manage yourself that you stay focus on the programming task at hand. Oftentimes, it is more difficult to tell ourselves to shut up and work than to tell our co-workers to “leave me alone”.

Don’t confuse working alone with not interacting with colleagues. You also need to set a time that you will be available to your team and customers. The key is to determine when you want to get interrupted and when you don’t want to, and to balance the time alloted for each.

So how would you set the no-interruption time? The simplest way to do it is to set up a no-interrupt time and make sure everybody follows – no instant messenger, no email, no “Hey”, no phone calls, no meetings. Just work, work, and work.

“The unspoken word is capital. We can invest it or we can squander it.”
— Mark Twain’s Notebook

Advertisements

18 thoughts on “Interruption is your enemy

  1. Spot on. This article rocks. Thank God for noise cancelling technology. Imagine software development without it in the modern world.

    I do hope this comment doesn’t interrupt you πŸ˜€

    cheers!

    nox

  2. …thats why I want to work from home. Software Dev companies (or any position whos task is to program) should make that a standard.

    cool post!

  3. Gorio,

    i definitely agree…

    The boss being the worst interruption. Sigh. Hahahaha.

  4. Nox: I am in non-thinking mode right now. You can interrupt me

    Jay: lucky for you. I used to have that privilege but not anymore πŸ™‚

    BrainBox: I can’t find your URL.

    Dexter: My boss reads my blog. Sorry can’t comment on that πŸ™‚

    Thanks for dropping by guys. Hope to see you again.

  5. very true. though for me I had to do some things to get into the zone , like sometimes I read an article or two , or sometimes I play some game , just so my brain could get a head start

  6. Great post! Though I do think this also applies to non-programmers. For instance, other creative-types who need their time to come up with interesting stuff, say, writers and artists, also need time away from any interruption. Otherwise, once the ‘flow’ is disturbed, one would need another few minutes, hours, or even days to get started again!

  7. Pingback: Forever Geek
  8. Wow πŸ™‚ I must tell that I was thinking the same while going back home! I opened my RSS reader and BAM! Link to this post at Forever Geek.

    Anyway, Digital Noise Reduction System (or DNRS) should be sold in a package for every developer πŸ˜› You could make some money out of it.

    Great post. Some parts were just hilarious πŸ™‚

    Keep up!

  9. The guy says that he allways programs infront of the PC…
    It is better to have a nice HB pencil, a soft white rubber and a very handful big notebook. And go to a quiet place to think as long as needed.
    The zone is my favourite suite of bars.
    * They generate a prison-like feeling: they are very crouded with people but the sum of all the voices produces a sort of white silence effect.
    * They are known just by me. (or their level of popularity is proportional to my needs of loneliness and thinking)
    * I never go with my cell phone active.
    * I feel as comfortable as required to start inspiring, thinking and coding.
    * After several bad sheets of paper, I reach the perfect code.
    * Then I can return to work and put it inside Eclipse or my notepad.
    alberto

  10. Sorry, I used the blockquotes in the wrong way…

    I would like to add that if you persist on the idea of using some music, you could record some binaural sounds to help you concentrate. Those sounds have a different rhythm at each earphone. That produces the desired sound programming effect in the brain…

    alberto

  11. Amen! Sad to say but majority of my co-workers (specially the Hardware People) don’t understand this. Even my Supervisor don’t understand this. To think, We are IT Department.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s