Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

If you just consider the second part of my question, "Why a developer should not be interrupted while neck-deep in coding", that has been discussed a number of times by smart people. Heck, even the co-founder of SO, Joel Spolsky, wrote a blog post about "getting in the zone" and "being knocked out of the zone" and why it takes an average of 15 minutes to achieve productivity when participating in complex, software development related tasks. So I think the why has been established.

What I'm interested in is how to explain all that to somebody who doesn't know beans about Beans (khmm I mean software development). How to tell the wife, or the funny guy from accounting at the workplace, or the long time friend who pings you on Skype every 30 minutes with a "Wazzzzzzup?!", that all the interruptions have a much deeper impact on your work than the obvious 30 seconds they took from your time. Obviously you can't explain it by sentences like "I have to juggle a lot of variable names in my short term memory" unless you want to be the target of blank stares or friendly abuse.

I'd like to be able to explain all that to non-developers in a way that will make them clearly understand - without being offensive, elitist or too technical.

EDIT: Thanks to everyone for their great insights. I've accepted EpsilonVector's answer as his analogy was the closest one to my original needs. The "falling asleep" explanation is neither offensive nor technical, almost anyone can relate to it, and the consequences of getting disturbed while falling asleep or while being in the zone are very similar: you experience frustration and you "lose" 15-20 minutes of time.

share|improve this question

We're looking for long answers that provide some explanation and context. Don't just give a one-line answer; explain why your answer is right, ideally with citations. Answers that don't include explanations may be removed.

migrated from stackoverflow.com Feb 10 '11 at 13:56

This question came from our site for professional and enthusiast programmers.

34  
Have them start from 0 and count to a very large number, mid way through yell look! squirrel! –  Tim Post Feb 10 '11 at 14:12
8  
Surely relevant to most professions, try stopping a surgeon mid-flow. –  Ozz Feb 10 '11 at 14:23
24  
get off skype at work. –  Josh Feb 10 '11 at 14:28
6  
"without being offensive", I knew there was a catch somewhere. :) –  biziclop Feb 10 '11 at 19:40
5  
@Josh At work we use Skype for interoffice communication. We need it open. I have a separate work account, but you still run into these issues. –  Matthew Scharley Feb 10 '11 at 20:10
show 9 more comments

18 Answers 18

up vote 97 down vote accepted

Try the following analogies: First one: "How long does it take for you to fall asleep?" "X minutes" "Now imagine that when you are close to falling asleep, someone walks in and interrupts you, how long will it take you to fall asleep now? Those few seconds you had left, or will you have to start again to 'sink back' to where you were?" "I'll have to start again" "Great. Same thing. Just like falling asleep, it takes me a while to 'sink' into focus mode, and it takes me a while to get back to it once I'm interrupted, except that I also forget half of what I was doing."

Second one: "You know how when you're reading a book you 'sink into it'- after a while you don't even notice the words anymore, and you block out everything around yourself, and are totally immersed in the mental images you see." "Yes." "How long does it take for you to get there?" "About X minutes" "Now imagine that when you are that immersed in the book someone walks in and interrupts you, how long will it take you to get back to that? Will it happen immediately, or will you have to start again to 'sink back' to where you were?" "I'll have to start again" "Great. Same thing. Just like with reading, it takes me a while to 'sink' into focus mode, it's just as annoying when someone breaks me out of it, and it takes me just as long to get back to it once I'm interrupted, except that I also forget half of what I read."

share|improve this answer
10  
+1 excellent, excellent, especially the "falling asleep" one. Exactly the kind of explanation I was looking for. –  András Szepesházi Feb 10 '11 at 14:53
1  
Might not help - I can fall straight back to sleep normally... –  Alison Feb 10 '11 at 15:29
1  
@Alison I don't know about can't, but there's plenty of people who don't read and hence can't relate to the second point. –  Matthew Scharley Feb 10 '11 at 20:15
2  
Love the falling asleep metaphor, but I won't be using that to explain my job to my wife any time soon! ;> –  dthorpe Feb 10 '11 at 20:42
5  
Don't Wake Up the Programmer alexthunder.livejournal.com/309815.html –  Chris Nava Feb 17 '11 at 5:22
show 6 more comments

I don't think that the state of reverie that Joel describes is technical. It's the same right-brain shift that anyone experiences when they draw or fall under the spell of a really good book. (Betty Edwards' "Drawing on the Right Side of the Brain" describes it perfectly.) Everyone has experienced that sense of concentration where you're unaware of the passage of time.

I think it's condescending right off the bat to imagine that this is something that only technical people understand, that the concept needs to be dumbed down for non-developers to understand. Just explain in plain language - they'll get it.

share|improve this answer
13  
In my experience, they not necesserily get it - they might accept it as a fact, but still can't relate to that. For most people I know, work is just work that can be suspened or continued any time. –  András Szepesházi Feb 10 '11 at 13:40
3  
Not the people I talk to. In my experience, everyone who does work that's doing non-rote tasks would be able to relate perfectly. Maybe you're talking to too many people doing rote tasks. –  duffymo Feb 10 '11 at 13:42
3  
@duffymo: Hmm. I don't consider a sales person who is writing a customized offer for a customer doing a rote task. Still, if I interrupt him/her, he/she will lose maximum half a minute until getting back on track. That's what I meant - most jobs are a lot easier to suspend/continue than ours. IMHO. –  András Szepesházi Feb 10 '11 at 13:55
4  
It's a matter of how much state you lose. Programmers tend to need to keep a whole program state in their head while coding, but other professions that involve more writing keep state on the document they are constructing. Which state is easier to restore? –  Michael K Feb 10 '11 at 14:01
2  
I think a lot depends on whether the person actually experiences the state of flow during his/her work (or free time). If they ever did, they will understand better what we mean. –  Péter Török Feb 10 '11 at 14:16
show 2 more comments

Re-route your internal thread to verbal IO, i.e. turn round when they interrupt you and keep mumbling code and looking into the middle distance until they give up and go away. If they talk, just mumble louder.

share|improve this answer
14  
LOL this is good but certainly leads to a divorce if the interruptor is the wife. –  András Szepesházi Feb 10 '11 at 14:02
show 1 more comment

A few months ago I had someone walk into my cube and pull my earbuds out while I was coding. Internal fury aside, my approach was to explain that often times programmers are deep in logical thought which requires a different and concentrated approach to thinking and that interrupting suddenly can really mess up the thought process. It hasn't happened from that person again, so maybe it worked. Another thing you might consider is the busy/free sign. I have a friend that does algorithms and he has a two sided sign that say "Coding - Do not interrupt" on one side and "Free to Chat" on the other. Removing ambiguity is the key here.

share|improve this answer
16  
As long you leave the "Free to Chat" side up a reasonable amount of the time. If the "Do not interrupt" side is always up, you may as well not have a sign at all... –  Dean Harding Feb 10 '11 at 14:06
4  
Seems like it would get annoying, having to flip the sign around all the time. –  rmx Feb 10 '11 at 14:14
3  
You could have a Thinking Cap instead of a sign. Whenever you've got your Thinking Cap on, people shouldn't interrupt you. –  Ant Feb 10 '11 at 14:31
3  
Wouldn't "Free to chat" imply (to managers): "I don't have enough work to do"? –  badgerr Feb 10 '11 at 14:42
8  
At my workplace our undocumented "in the zone" indicator is presence of headphones. The boss has said, "even if you're not listening to anything, put them on if you're concentrating. We'll take that to mean you're busy." –  JYelton Feb 10 '11 at 16:23
show 10 more comments

Ok, I'm adding my own answer (I know this is a bit dorky, but maybe it sheds some extra light on what I was aiming at).

I said the following to someone who interrupted me recently at a bad time: "Developing software is like driving a car in a very busy road for the first time in your life. All your attention is focused on the wheel and the pedals and the cars rushing around you, and you simply don't have any extra bit of attention for a nice chat. If you start focusing on what the chat is about, you're bound to lose control over the car and you'll end up in an accident".

This was something the person could relate to, but it is far from a good analogy. If I get interrupted the consequence will be very different from an accident. I've been doing sw development for 2 decades so why do I compare this to something that is being done for the first time. And so on.

share|improve this answer
1  
It's a good analogy. Just remove the 'first time' part and emphasize that it is a very busy road, with lots of crossroads, traffic lights, trucks an bicycles and that's it. Especially since the crossroads are good to represent all the decisions you have to take, without always knowing what can hit your car behind the corner. –  Goran Jovic Feb 10 '11 at 15:37
3  
Just add that there are already three screaming children in the back that you're struggling to ignore (all your own natural distractions). –  Benjol Feb 11 '11 at 8:16
show 2 more comments

Tell them that coding (or insert other high concentration activity here) is like being a circus performer who does the spinning plates act.

First you start by spinning one plate on a stick, get that going, then start spinning a second plate, get that going, go back to the first plate, give it a little extra spin to keep it going, then start spinning a third plate, get it going, then go back to the second plate, little extra spin, first plate extra spin, third plate extra spin, then start spinning fourth, etc etc.

Then the phone rings and all the plates fall down.

Flow state is gone. You now have to start all over. Get one plate spinning...

I like to think of each plate as a chunk of data, variable, concept, state, etc that you have to maintain in your head.

share|improve this answer
show 1 more comment

"Mihaly Csikszentmihalyi on flow" is a good TED Talk about this idea of being really productive under certain conditions that may or may not appeal to people. Don't forget that for some people they may never want to understand the explanation and thus it is kind of like beating the dead horse recursively ad infinitum.

share|improve this answer
show 2 more comments

I call it a programmers trance. There are lots of good analogies here, so what's one more eh? As has been said earlier, a programmer will mentally navigate several different logic flows until the right one presents itself. THEN it gets written in code and saved on the computer.

So, say you're writing a term paper or important document. The thoughts are flowing into words into the computer but you haven't saved the changes yet. Then poof, the power goes or the computer crashes. Getting all that back will take as long or longer and will never be the same as the original. (How many of us old timers have had THAT happen?)

This is what happens to the code in your head when interrupted. Thoughts are as fragile as smoke. If they have not yet been saved and something comes along to disrupt them, they're gone.

share|improve this answer
show 1 more comment

Dear Distinguished CoWorker, In an effort to become more efficient I am focusing on my work and am answering questions through email at moments between work to keep interruption at a minimum to better serve you and Company name_. Please email me and I will get back to you as soon as I can. Thank you.

share|improve this answer
add comment

If you listen to music, put up a sign that says something along the lines of

Headphones on? Please do not interrupt.

This is only effective if anyone reads and you don't always have your headphones on.

share|improve this answer
show 1 more comment

I think of it as a big web of complex connections that I have to build up in my mind, a structure of interlocking relationships that affect each other in varying, not-always-obvious ways, all of which have to be understood and kept clearly in focus as I write code. Building this web takes anywhere from 5 to 15 minutes on a project I'm reasonably familiar with, and several times that on one less intimate.

When my concentration is interrupted the web begins to collapse, and if the interruption lasts more than a few seconds or I'm required to think about some other even-slightly-complex thing ("When the server went down last week, what did you tell the customer?"), the web utterly collapses. When the interruption is over I have to build the whole web up again, largely from scratch.

If it takes me 10 minutes to build the web and I'm interrupted for just 2 minutes three times an hour, you need to understand that instead of coding for 50 minutes of the hour I'm only getting 24 minutes of work done. Those 3 tiny interruptions cut my productivity in half.

share|improve this answer
add comment

I don't explain. I kindly inform them that the interruption just added 6 weeks to schedule.

share|improve this answer
4  
This suggestion is along the same lines as "be rude, and people will stop bothering you." It might be effective, but is not a good way to work in a team. –  Marcie Feb 10 '11 at 16:49
show 1 more comment

Neil Ford told about it last Devoxx. He wrote a book about it: The productive programmer. He explains tips about 'flow' breakers. If you are in the flow you are at your highest concentration point. But if you get interrupted it takes +-20 minutes to get back in your flow.

You might want to explain em if you get out of your flow you random access memory in your brain loses the data about what your are working and you need 20 minutes to get the data back in you RAM ;)

share|improve this answer
show 1 more comment

I usually put the following status on my IM Clients:

I am at work and since I cannot multi-task, please do not bother me...

At least it seems to do the trick with the

long time friend who pings you on Skype every 30 minutes with a "Wazzzzzzup?!"

share|improve this answer
1  
You do know that you can go offline or just exit your IM Client, Skype, etc. –  Spoike Feb 10 '11 at 21:04
1  
@EricWilson Register a different account for use at work, and don't tell the long time friend who pings you on Skype every 30 minutes with a "Wazzzzzzup?!" –  Daniel Beck Mar 9 at 16:16
show 2 more comments

You could try explaining, but you could also try this:

You interrupt them, while they are doing something that requires deep concentration, whether it is reading, watching a movie, calculating or even better counting something. Then, all you have to explain is that it is exactly like that for you when they interrupt you. Should do the trick. Just please don't bother them while they're driving or something like that :).

share|improve this answer
show 2 more comments

What I do at the office is find hotdesk spots (hiding spots) in different departments in the office, this way no-one knows where you are and cannot disturb you, but if this is not an option, just get a sign and exlpain that unless it is of vital importance do not disturb!

share|improve this answer
add comment

I don't know about the rest but for Skype at least I would suggest using the "Do not disturb" mode. And if you must use it to communicate in work, having a second work-only account that you don't share with anyone you don't want to disturb you at work :)

share|improve this answer
add comment

It doesn't have to be complicated. Something as simple and non-hostile as "I'm working on something that takes a lot of concentration. Can this be put in an email? I promise to look at it as soon as I'm done here."

share|improve this answer
add comment

protected by Thomas Owens Nov 30 '13 at 20:20

Thank you for your interest in this question. Because it has attracted low-quality answers, posting an answer now requires 10 reputation on this site.

Would you like to answer one of these unanswered questions instead?

Not the answer you're looking for? Browse other questions tagged or ask your own question.