How to explain to a layperson why a developer should not be interrupted? (2011)
softwareengineering.stackexchange.com
softwareengineering.stackexchange.com
This is not something specific to programming, at all. I'm not sure why "the zone" and specific euphemisms are used in programming and being reposted, as if concentration was specific to programming itself (and I say that as a programmer).
Consider this thought: a layperson not understanding what concentration is all about speaks volumes about his background.
And I'll add: sadly.
For me, everyday starts with a period of time (15 min to half an hour) spent just trying to get myself to get back in the flow of what I need to get done, and if I'm interrupted by, say an unplanned meeting, or an impromptu chat with my manager, then I need to start all over again! :(
When I'm in the zone, I can crunch stuff up in half or even a third of the time compared to if I'm repeatedly interrupted, but that's pretty much a nobrainer I guess
For example I asked an engineer uncle of mine what kind of salary to expect when moving back to Australia. He immediately started talking about middle-manager compensation.
I've been through the "explaining" phase of trying to help my spouse, who cares a lot about my ability to do my job, and yet is a prolific interrupter, "get it". It hasn't worked for me. It leads to bitterness and arguments.
The healthy solution: If you need peace and quiet to concentrate, like me, get yourself your own space. Start going to a different room to concentrate, or a co-working space (if you work from home). Depending on your job, you might only need a certain percentage of the day for solid concentration.
What has worked was showing her the bill for a monthly office lease. I said I cannot do this any longer so I rented my own office outside of home. First she was very angry that I spent money like that "because you can work from home!", but I said that I can't because she doesn't respect I can't be interrupted. She promised that she will try not to do that if I cancel it. I did cancel (although I lost the deposit), but she stopped doing this. We agreed that I cannot be interrupted between 9 to 5 except lunch time.
Classic example when money talks :)
One answer on the actual post that I found interesting was the analogy to falling asleep. For most people, that takes X minutes. Let's pretend that is 10. It seems pretty relatable to say that if I am falling asleep and you engage me with questions about something that this timer resets. It will now take me X+ minutes to fall asleep. Everyone has been interrupted when trying to fall asleep so I think at the least it would provide empathy even if they can never fully "get it" as to why it takes 10 minutes to get into the zone.
I think the other thing that people could understand is that part of developing involves moving the code and systems you are working on into a complete and active model in your brain. This is why the loading time is required so you can then leverage this model to plan and make changes.
Going to a coffee shop and putting headphones can be more productive
Of course, it makes sense if you really think about it. In a coffee shop, no one is going to come up and tap on your shoulder and ask you some stupid question they could have asked in email, nor do people generally have loud, annoying conversations right next to you there. There's plenty of people in a coffee shop, but they're strangers, they keep to themselves, and they don't talk except perhaps to their singular companion in a quiet manner.
In fact, it's especially bad when it looks like I'm doing nothing. Often, I'll be working out the structure of a long article in my head, crafting the argument and how each paragraph contributes to it. The whole thing collapses when I'm interrupted. At that point, asking if I want a cup of tea is likely to receive a sharp response.
Today, I don't bother explaining: I just make sure that I have a place I can go where I won't be interrupted.
This is a very clear articulation of something I have been trying to put into words for years. My family doesn't understand why I can't get anything done when they are around, even if they aren't speaking to me. It's because I know there is the potential for interruption, which in and of itself is enough to prevent me from truly getting into the "deep work" state.
I don't remember any of it afterward, no idea what I said, but apparently it's good enough and coherent to get people off my back. "Yes, tea please."
Dr. Stephanie: "So what did you do today?"
Leonard: "Well, I'm a physicist, so... I thought about stuff."
Dr. S: "Is that all?"
L: "I wrote some of it down."
Sure, if someone interrupts you while you have set it up to be clear you are busy (whether on your work messenger or email) then that is annoying and not cool. But it's hard for me to get annoyed at others when I haven't done the ground work to set up those obvious protections.
Working from home and having three kids between 6 and 10 months, the onus is on my to manage my expectations and my spouses expectations for when I'm going to be working, what work is interruptible, and what's most important to me. Given that my priorities go: family, friends (spouse included here), work, volunteering, that means that if the family isn't functioning well, that's where my attention goes until we're in a good place.
I've seen a lot of people either neglect their personal priority list or simply not have one, and then wonder why their life is falling apart around them, or they from time to time feel void or uninspired.
All this to say, productivity for productivity's sake is the behavior of cancer. If I have an un-productive day from a work perspective, it's usually because I was tending to higher priorities in my life, and thus it is hardly the end of the world, and I make a plan for getting things back on an even keel there so tomorrow or the next day I will have a more productive day, and make sure to communicate this to my supervisor in my next 1:1.
Your priorities are excellent. But unless you are wealthy enough that money is not a priority and/or have a wife that's a housewife, or nanny or maid... all interruptions in the "zone" are real interruptions that have a significant cost involved.
PS. Modern stoicism is awesome.
If I were a single parent, or primary care giver, my solution to interruptions while working from home would be considerably different, but all I can offer an opinion on is my own personal circumstance.
P.S. I have found great joy in stoicism, and avoided even greater strife :)
A quick search yielded this site: http://modernstoicism.com. Any other references would be appreciated.
This is just a really good book. Get the hardcover version, so it feels a bit like a bible :)
Thankfully, ancient stoics were quite avant garde in many of their social norms, so it doesn't have be modified as much you might thing. Musionus Rufus makes a damn good argument for the intellectual equality of men and women, in the first century after the purported birth of Christ.
But now I see you mean 6 years old and 10 months.
Thanks for sharing your perspective, I work in a similar situation (at home and family around). I'd be curious to hear more about
> I make a plan for getting things back on an even keel there so tomorrow or the next day I will have a more productive day
And
> make sure to communicate this to my supervisor in my next 1:1
First off, I mean I don't get angry about the disruption. Honestly, nine times out of ten, volunteering once a week to do something like take my daughter to gymnastics class with the other kids and leave my wife at home puts things on an even keel faster than almost anything else I've encountered. That's just one example, but acknowledging the flexibility working from home provides and taking advantage of it, so long as deadlines don't slip.
Then making sure I'm honest in my conversations with my supervisor about the time I took off in the middle of the day, especially if she wasn't aware of it, so that she knows what I was doing, my plan for getting my work done (usually a little work after kids go down instead of a TV show with my wife), and that I don't plan on doing that every week.
Skype, steam and slack do not flash, beep or pop up when I get messages, they just put a discreet number on the taskbar. I've learned to ignore that number until I'm ready.
As a result, I'm always online on my chat programs but my responses can take anywhere between 30 seconds and 4 hours depending on what I'm doing. If it was really that important, people would walk over to my desk. That only happens about once a week.
My experience has been most developers and managers are fine with this.
That this may not be the most effective way of reaping the value of employing you is a different concern.
I use it sparingly to good results.
You're not a good PM if you've done this. The alternative from a good manager:
"Hello... I need you to input your time on Kimble"
What about my Skype status "async mode on" don't they understand?
On KDE, I'd use the "Filters" setting for either the Task Switcher (Alt+Tab thing) or the Task Manager (taskbar), or both. They can show or ignore windows from other virtual desktops, screens, or minimized ones. [Or "activities", but I've never used that feature, and I'm not sure what it's for.]
I usually keep Skype on my second screen, covered with other work, and have the task switcher set to only scroll through not-minimized things on the current screen.
Edit: So "Activities" are something like super-virtual desktops, and appear to be exactly for this purpose, to separate different tasks.
The OP himself dismisses "the funny guy from accounting", as if accountants didn't need to concentrate!
OP doesn't dismiss all accountants, it is an example picked at random. If OP only said "that funny guy", would you say "as if guys didn't need to concentrate!"?
I mean the accountants probably complain about the funny IT dude who's always pulling their legs.
My point is that the guy from accounting is probably very focused when he has to close the year's budget by the end of the day, but once it's done, he doesn't care anymore, he's very happy bothering people by joking around.
It's not a matter of explaining what focusing is. It's simple office dynamics.
If you find your productivity is declining because of interruptions, you need to find ways to avoid being interrupted rather than asking others to not bother you.
http://heeris.id.au/2013/this-is-why-you-shouldnt-interrupt-...
This comic is the perfect explanation of interrupting the thought process.
If you interrupt the cook cooking the food often and/or long enough, the food will come out burnt, too soggy, or etc.
1. The key lesson is coding involves juggling many things, just in our head. 2. Cooking involves juggling many things in pot, on frying pan, etc.
Anything that interrupts the juggling in cooking can cause one ingredient to come out bad, and you have bad tasting food or worse you have to start from scratch again.
Same with coding.
So, please do not bother coders. Even if they seem to be just browsing websites and not typing away furiously. They are most likely looking for answer to a coding question they need help with by reading on sites like stackoverflow.com. And this requires same amount of focus.
Thank you.
If you can't get back to coding productively after an interruption, it probably means that your code or your process isn't really up to snuff (or more charitably, that it could be improved).
I try (and do not always succeed) in coding like this, privileging tiny changes, keeping a backlog of tasks to complete, avoiding "recursive tasks" (starting a task in the middle of another because it would help), putting in a lot of helpful comments. It also entails refactoring early and often, sometimes rewriting.
I work on highly sophisticated programs (compilers) and if I didn't do that, I'd get nothing done.
I also do this for my side-project. I optimize them for "re-starting". When I open them after a few weeks of inactivity, I don't want to get discouraged, and want to be able to start being productive as fast as possible.
It also lets me just ignore people who interrupt me during one with a quick "I'm busy, I'll be with you in (X<25)" or "Ask me in (X<25)". Sometimes the response they get during that break-time convo is that I'll get back to them even later, I need to think about it.
But it's surprising how quickly people will pick up that if they bother you on the hour or half past, you'll respond and othertimes you'll blow them off.
For now I have:
- write down everything: tasks, discussions & conclusions, etc (you said "keep a backlog of tasks")
- when interrupted while coding, insert a //TODO with a few words that will help rebuild context on resuming, maybe with a statement that does not compile to quickly get back there (if the interruption leads you to navigate away from that file/editor)
- if a few seconds are not enough, explain "I need a few minutes to write down stuff and I'll get back to you". This is always accepted without issue. Although it's difficult when the person politely waits behind you :)
- if you figure you really cannot be interrupted on the spot, make great effort to explain this as gently as possible, and offer to get back to them later: again, always accepted by peers (in my experience). If the interaction stays below a few seconds, AND I stayed agreeable & polite, I have little problem getting back in the flow. When I reply too curtly or let the slightest trace of anger show, then I fail to get back in, because my thoughts are polluted with remorse & guilt.
- over time, learn to identify in advance when you are about to enter a "really-really-no-interrupt zone", and then wear audio gear or something to signal this. And don't do it too often.
- I also noticed "recursive tasks" are a challenge. You suggest to avoid them when they are just ideas that help the previous task, but what if they are impediments that MUST be fixed? (Google "malcolm hal fixing light bulb" for hilarious illustration). For this I only have "write down everything", but it gets frustrating with the feeling I'm getting slow due to constant swapping, and could be faster if I could count on short term memory alone (and no interruptions...).
Anwyay... would love to read more about "embrace interruptions" & "optimize for re-starting".
I'd argue the closest profession would be lawyers. Lawyerese casts "variables" (collective) all the time and you need to remember what each collective means while reading through a verbose document that could span multiple pages and references itself constantly (see the exceptions listed in §2.7 and §4.2b). You have to keep the entire document in your mind at a single time to actually be able to read and understand it properly.
The "layperson" understands not to interrupt a lawyer they see reading through a stack of 100 pages on their desk. They don't understand not to interrupt the coder who has 12 lines of code open in their IDE.
Seeds of truth often grow cargo cults of self importance around them.
They are primarily mental processes that require focus and concentration on specific things. Any distraction, no matter how small, will derail the entire process.
Once interrupted, the person cannot just pick up from that point, they have to start over from the beginning and redo all that work.
I've found this analogy pretty solid, even though it sounds silly. You certainly don't need to explain to anyone about interrupted orgasm, or what it takes to get back on track.
(Of course, for orgasm, that re-work is pretty enjoyable, unless you are a professional who gets paid to produce orgasms for other people who demand them of you. Therefore all coders are whores. ;)
It is a known inside joke among Brazilian programmers to call ourselves "garoto de programa", which means "program's boy" - laymen therefore think we are referring to male prostitution.
One is a value function, which is best described by Tilly-Odlyzko: v = n * log(n)
(Tilly would be @tilly on HN, BTW.)
The "log(n)" factor means that as you add additional elements, the positive benefit decreases as n increases.
The other is a cost function, which is probabalistic between any two nodes. It's actually closer to the old (and incaccurate) Metcalfe rule: c = k * n^2
Where k is some cost constant. The larger k, the smaller the productive size of the network, the smaller k, the larger the network can grow. Hence: network size is constrained by the cost constant.
What you're observing is the cost constant of team size as a factor of interruptions. Since any member might interrupt you at any time, and those interruptions all have roughly equal cost, but the positive contribution a team member can make is limited by their ability to provide useful inputs, and the k factor is relatively large, few technical teams seem to scale much beyond about 6-12 members.
(Larger teams are almost always subdivided into smaller effective working groups.)
One way a manager can help minimise interruptions is to create a policy. Have an issue? Create a ticket and the team will get back to you when we are available.
The manager's priority should be organisational productivity; he's managing a team of people for the purpose of contributing to the greater organisation, not for the personal seclusion and self-fulfillment of each team member. Those are, sadly, secondary or tertiary goals.
If other people in the organisation can't be productive because he's blocking them from validly interrupting one of his reports then he needs to change.
"The needs of the many", and all that stuff. Sometimes the most productive days are those spent helping other people to be productive.
Of course, if your job is to be part of a responsive support org, you probably can't expect much seclusion at any time.
For some people it's much shorter, but I find saying 1 hour gets the point across. Otherwise folks may think "bah, it only takes them 15 minute... I think it's worth interrupting him".
Bottom line: we need to teach awareness to those who are ignorant, set boundaries, and defend those boundaries once they are set. Otherwise you are dealing with disrespect. I can tolerate many things, but I do not, and will not, tolerate disrespect.
The problem is (my theory) that programming work looks like any other work/play done in front of a computer: you're sitting there, typing and clicking, looking at some windows with text and menus and stuff. Some people seem unable to grasp that it's breaking flow to interrupt.
I have a friend, let's call him "Jeff", who cannot seem to understand that he can't talk to me when I'm using the computer to work. He was my roommate for awhile in a small place where he had to pass my workstation to get to the kitchen. I got in the habit of just closing the laptop when I heard him coming, because he was going to interrupt me and that was as close as I could get to saving my mental state while I waited for him to go away again. I tried to explain it to him several times. I got a t-shirt that said "Don't talk to me when I'm not listening". Still, he kept interrupting me while I'm trying to work.
Finally, one morning he comes in to where I am, sits down with his bowl of cereal, and starts playing some earworm cat song on his phone. I lost it and yelled at him, and now he thinks I'm the jerk. I moved out.
Some people just don't get it, it's a problem, and the OP was just asking for help dealing with that.
I think a better question is why, of all the kinds of "flow"-based knowledge work, has programming become so strongly associated with the idea that interruptability and collaboration should take precedence over sitting down and working through the problem?
All in all, I'd say that there just aren't that many jobs these days that require a lot of individual concentration and focus. Those that do seem to have the reputation that it's needed: novelists, some college professors (when they're writing theses/dissertations/whatever), etc.
But it's weird; if you asked most people if they think novelists would be more productive at home in their private office, or in a loud, bustling open-office environment, I'll bet most would answer the former. But for some reason people don't seem to think programmers need that.
This Is Why You Shouldn't Interrupt a Programmer (comic) https://heeris.id.au/2013/this-is-why-you-shouldnt-interrupt...
And it's gone https://jaxenter.com/aaaand-gone-true-cost-interruptions-128...
(Includes reference to meetings: "If you think an unplanned interruption is bad, how about a planned one? If you know you have a meeting later today, your whole day is ruined because you unwillingly tailor it to make sure you finish your tasks on time.")
Programmer, Interrupted http://www.gamasutra.com/view/feature/190891/programmer_inte...
Programmers teach non-geeks the true cost of interruptions http://www.daedtech.com/programmers-teach-non-geeks-the-true...
@pg, "Maker's Schedule" http://www.paulgraham.com/makersschedule.html
Don Knuth, on email: http://www-cs-faculty.stanford.edu/%7Euno/email.html
Email is a wonderful thing for people whose role in life is to be on top of things. But not for me; my role is to be on the bottom of things. What I do takes long hours of studying and uninterruptible concentration. I try to learn certain areas of computer science exhaustively; then I try to digest that knowledge into a form that is accessible to people who don't have time for such study.
Peiter Hintjens noted that meetings are serialisation points http://hintjens.com/blog%3A100
As numerous people have noted, writers and other creatives, not just programmers, viscerally hate interruptions.
Neal Stephenson, "Why I am a Bad Correspondant" http://www.nealstephenson.com/why-i-am-a-bad-correspondent.h...
John Cleese: "Busyness and interruptions kill your producti vity": http://www.flowfinders.com/productivity/busyness-interruptio...
Charlie Stross (@cstross): Writer, Interrupted: http://www.antipope.org/charlie/blog-static/2016/08/writer-i...
A Brain Pickings piece has selections from Hemmingway, Dylan, and Mann: https://www.brainpickings.org/2014/08/25/the-psychology-of-w...
There is much general advice to writers on avoiding and minimising interruptions: http://productivewriters.com/2011/10/10/minimizing-writing-i... http://greatergood.berkeley.edu/article/item/please_stop_int...
Generally, the work of Mihaly Csikszentmihalyi https://en.m.wikipedia.org/wiki/Mihaly_Csikszentmihalyi
And of course there's Samuel Taylor Coleridge, and his Person from Porlock: https://en.m.wikipedia.org/wiki/Person_from_Porlock