Interruptions ; they can take different forms. Some you can ignore, some you cannot. If I can switch of my inbox for a while and not be disturbed, when my Boss stands beside me at my desk – even pretending I did not see him won’t work – he will break my flow.
In software development, like any other creative work, interruptions are evil per nature since they pull you out of the “zone”, this state of mind where you are deeply focused on your task, in your thoughts and ignore the rest of the world.
Let’s make a short list of the possible means of communication and the way they interrupt you.
Direct interruption
This is the number one interruption. When somebody stands beside you asking for something or waiting to ask for something, there is little you can do. You might have put a sign to tell them “now is not the time” (for instance a headset on your head) but if they chose to ignore the sign, it is hard to train them to go away. I’ve ignored people a few times or told them “not now” after they stayed at my desk for a few minutes looking dumb… but most of the time, the fact that they were there was enough disturbance already.
Telephone
Telephone is also very disturbing and hard to ignore. If you have a noise canceling headset and you are in the zone, you can sometime fail to notice that someone is calling but most of the time it will pull you out of it no matter what. Somehow, developers (or the younger generation) seem not to like it that much. My colleagues mostly use it when there is some kind of urgency, this is quite often the “I-am-too-lazy-to-walk-to-your-desk-but-I-need-a-direct-interruption-anyway” card.
Email

Very good asynchronous communication mean, you can turn the notifications off and chose to check your emails only when you wish to do so. I like email communication when it leads to direct communication. I picture my inbox as a “to-do list”. Expose the problem in an email, give me something to think about and let us discuss this afterward. One email, one task incoming. But emails can very quickly go off track and should be avoided when it becomes a mean of discussion in itself.
Meetings
Meetings are pure planned-interruption. At their best [irony inside] those meetings will have 15-30 min between them to really prevent you from doing anything productive in the meantime. This leads us to blocking parts of our days with some “personal meetings” during which you can finally achieve something. And this leads to people inviting you when you have a parallel meeting anyway because-there’s-50%-chances-that-the-parallel-meeting-you-have-is-with-yourself-so-you-can-skip-it.
Instant Messaging
Instant messaging is a very powerful tool. It is intrusive but can be turned off. It is persistent until your computer is turned off, but not long enough to be used as an email. It will prevent asynchronous email ping-pong. Unfortunately, the instant messaging tools come with a drawback: the online status indicator.
The online status indicator is (in our case) linked with Outlook and will tell if you’re in a meeting or not in front of your computer. But as soon as you’re out of a meeting and at your desk, there is no other option. Either you manually set yourself as “busy” again or you’ll be “available” for anyone to use and abuse.
The trigger for this post was actually a colleague of mine calling me via the VoIP tool we have on the assumption that “since I’m green (available) on the IM, I must be ready to accept his call”. Don’t do that… ever… I mean it… if you work with an IM, chat with someone first (same way you introduce yourself in an online role playing game before asking somebody a favor)!
Conversation
Final interruption mechanism I will develop here are the “conversations in your surroundings”. Those are sometimes very hard to ignore. Right now I put my headset on because two colleagues are having an online meeting in my back and are probably shouting to bridge the 1000km distance with their correspondants. Here you’ll either have to cope with it… or buy good headsets.
Have you identified other sources of disturbance? Do you have some other solutions for those?