I have found that, let alone explaining it to laymen, it's hard enough to explain it to your own team members and expect them not to keep interrupting you. I have realized that, the bigger the team, the less productive I keep getting, due to the constant interruptions.
I'm looking at networks as having two primary operational functions.
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.)
If you have a good manager they will protect you from all these interruptions. Your manager's job is to ensure you are productive. These constant interruptions aren't making you productive, so your manager should do their best to minimise these interruptions.
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.
> Your manager's job is to ensure you are productive.
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.
If supporting the wider org is part of the teams responsibilities, perhaps you will need to dedicate a first line person on a rotation to deal with incoming noise, to shield the rest of the team. It kind of sucks for the person in that role, but it's good for the rest of the team.
Of course, if your job is to be part of a responsive support org, you probably can't expect much seclusion at any time.
Instead of even bothering explaining, I used to just code at home during the night... You can guess what that did to my body in the long run, so even if it's a hassle, letting people who could distract you during same working hours know to leave you be for a time is worth it.
Related question: how to explain a non-developer manager that you will switch Slack off for periods of time even when working from home? With all seriousness, Slack somehow became the measure of at-work-ness, but it's the worst when I'm programming. It's like an all-day meeting without an agenda.
They still write in a 'I'll put this here and they respond when they can, it's at least someone else's problem' manner. Slack won't play the sound effects, but the badge will be there, red and proud with a big number on, and you'll see it at every cmd-tab. (I wonder how common OCD is among programmers.)
> the badge will be there, red and proud with a big number on, and you'll see it at every cmd-tab
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.
That's why I had a custom script which always set the counter to zero for HipChat. The numbers are very annoying. We had a Lunch room where people discussed what to get for lunch, and it had a counter near it's name. Also reseted the tab counter.
I actually installed slack in my backup mobile and that is always on. I just put the phone is silent mode & it's inside my drawer. When I want to respond, I open slack on my laptop.
"Async mode on" makes sense to a developer, but it's meaningless jargon to a non-technical PM. Perhaps "I'll get back to you" or "Leave a message" would work better?
My strategy for this is to modify my do not disturb settings to make it shut the fuck up, and then leave it in that mode permanently.
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.
Well, that's easy: you just keep Slack running, but disable its notifications. Then you check your Slack from time to time and respond to all the questions that came since the previous time you checked it. Text messaging is called asynchronous communication for a reason: if someone wants to talk to you synchronously, they call you instead of writing a message.
One thing that has worked for me is posting on Slack about unavailability. I just post something like: "Turning off Slack to work on X with no distractions". I'm usually super-active on Slack and posting something like that lets my team know, which I think is important given the context.
I would use cooking analogy. Once you start cooking a dish (well, most of the dishes), you can't stop the involved steps until the intended food is ready.
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.
I agree with the second answer on that thread... "I just need to focus for a while" is a perfectly understandable explanation. The problem is that other people just don't care that you need to concentrate...
The OP himself dismisses "the funny guy from accounting", as if accountants didn't need to concentrate!
> 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'm not saying he dismisses all accountants. The connotation that I get from reading this is "that funny guy from accounting (who really doesn't know what focusing means because non-developers don't get it)".
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.
I'm a doctor that performs minor surgical procedures, as well as a coder. Unless something is going wrong in the procedure, I'd much rather get interrupted while performing surgery than while coding. YMMV.
1.)blame the CEO - fastest way to disaster is to distract
the driver of train or nuclear power plant.
2.)developer mistake can correct and rollback in 2 days.
System Adminsitrator mistake takes out SSH, SSL, DNS
bad router for entire country? WTG? or the letter before
the letter G.
3.)developers are RE-active and not PRO-active or thinking
to prevent. Tell everyone not to disturb. Unless the
hotel is burning down, DO NOT DISTURB. I am on my
honeymoon night and need to 'concentrate.'
4.)IMHO, personal opinion only after 21 years work.
Stupidity and active DOS or denial of service is common.
GET USED TO IT. Maybe you or I have to ask to work at
NIGHT SHIFT ONLY. I needed to 'fool around' with the
company database at that time.
5.)night shift at midnight means goodbye to 'normal life.'
see your girlfriend? see your friends? trouble sleeping?
boss keeps wondering if you are 'just sleeping on the job'?
6.)productivity, bonus and 'strange looks' are all in play!
LOL. I wrote a lot less LOC lines of code. I spent
time thinking like a CTO at high levels. this is very
dangerous. No financial bonus for pleasing and sucking up
to the bosses.. I am just a lowly system adminstrator
doing 'special projects' and helping out a few consultants.
7.)I knew we had almost crashed a few times. I knew
the company paid consultants a LOWER than good market rate.
I knew I had the will and the amazing insanity to do
the night shift.
8.)does this help you how to explain to the 72.5% of
'useless eaters' and less than 102 on 100 scale IQ
normal employees how the game is played?
9.)Yes, I did want to get to an independent company,
but that was only a 'motivating dream.' Its a fair
amount of luck or maybe I just call it sour grapes.
10.)this is a fairy tale or fictional or maybe it did
happen during the times of the competitors to AT&T
mother bell telephone with XXXXXX orgs.
LOL
PS. It's you and one other guy. We are not friends, nor
gay lovers. When the simple Perl mistake or s wit
you know the word - XXit hits the fan, you have no witnesses
nor allies. Your career is finished and you move to the
other coast. NYC to Silicon Valley or the other way.
No, and I don't even like Perl, maybe shell, but....
I'm a writer by trade and I have a similar problem. It's nigh-on impossible to communicate why it's painful to be interrupted when I'm typing or even just staring into space thinking. Much conflict with significant others has been caused by their inability to understand that breaking my train of thought costs me more than 30 seconds of productivity.
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.
I have this when I'm fully "in the flow". I can talk with people about trivial / irrelevant things on full autopilot. OTOH, when I'm struggling with something that requires unpleasant amounts of concentration, any interruption is likely to receive a very unpleasant response.
I came to the same conclusion. If you have someone around who can't help interrupt you, either by directly asking you for responses or doing distracting behavior, it's wise to simply get your own room, in the house or in a coworking space or a proper office. It doesn't matter how much you try to coach and train someone to respect your need for peace and quiet while working. It only leads to arguments and bitterness. It's much healthier to solve it by physically moving to a quiet place. I found that while it's possible to get work done in that environment, moving to your own space by yourself is a whole different experience. You can finally concentrate without fear of distraction (which is itself a distraction).
> You can finally concentrate without fear of distraction (which is itself a distraction)
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.
Am I the only one getting slowly more and more infuriated by this modern trend of writing a statement and pretending it's a question just by adding a question mark at the end?
I don't think you can "explain" to people that you need to concentrate, if you've already told them in ten different ways, then they know what you think you need, and either (1) don't care about your needs, in which case you are doomed, or (2) they see in your actions that you still do your job anyway, so it can't be that bad. The fact is, for most of us, even if we are interrupted, we still do get the job done. Just not as comfortably or in such detail as we'd like.
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.
I find coworking spaces can be worse, especially if you are the kind of outgoing person who's been to various tech meetups. Everyone wants to say hi and ask what are you working on, invite you for coffee, or ask random questions about their business.
Going to a coffee shop and putting headphones can be more productive
It's funny how, for many people, working in a coffee shop, a place that's open, public, and full of people, allows them to concentrate better on their work than most other places.
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.
I agree that if you can't make them get it, you need to remove the opportunity for the problem.
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.
It was not possible to explain my spouse that I can't be interrupted when I work from home.
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.
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. ;)
Fun fact: in Portuguese, we call prostitutes "garota de programa", which literally means "program's girl", or "a girl who makes programs". "Program" in this context means "sexual service".
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 tactic I would use (and have used before) if I can't switch places is to just put on headphones and listen to music. You could even leave the music away and just have the headphones on. This was usually quiet successful in letting people know that I don't want to be distracted.
I've tried that, and it doesn't work, in fact it makes it much worse. You get lulled into deep concentration successfully, and then some asshole comes up behind you and taps you on the shoulder.
What about embracing interruptions, in the spirit of anti-fragility?
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.
Good point. While I still don't think this general idea can be applied universally, lately I've come to realize it can help a lot. But I feel I only have a blurry/incomplete understanding of what exactly "it" is or entails to, and would love to hear other ideas or insights.
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've never understood these complaints about being interrupted. Unless someone is walking over to your desk every 5 min, you should be able to handle the few interruptions you get in a day. Also this idea that a "layperson" doesn't understand why someone shouldn't be interrupted while in the middle of something is laughable. Like programmers are the only ones that concentrate.
Many professions have more `write` than `read`. You're doing more and not needing to keep everything in your head at once in order to understand what you are doing. As a cook you can clear your mind of steps that have already happened - you only need to worry about the next steps in the recipe and not everything that came before it. I don't have to worry about preheating the oven as I'm flipping something that is already in the oven. It has already happened - I can forget about it! Programmers can't forget about things that have already happened because those are the most important things to remember.
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.
Ive switched to using Pomodoro timers just for my own personal reasons. I find that constantly switching back and forth on a task forces me to be more explicit and keeps me fresher. It takes some adjusting, but I've found that I can do pretty high level stuff that way, and keep it in my head just fine as long as I schedule distractions. (Ex: I've recently been working through knot/tangle theory, to try and get up-to-snuff so I can work on higher dimension TQFTs.)
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.
I agree, while there certainly are tasks that can be similar to building a tower of cards, most programmers who have a no interruptions attitude come across as arrogant. This creates schisms for new developers and non-developers.
Seeds of truth often grow cargo cults of self importance around them.
There is something to be said about this problem diminishing over time with lots of practice being in chaotic environments. I've worked at home for over a decade and have 3 young sons. There are varying degrees of distraction to overcome. Not to be overlooked, one is just being alone itself with the ability to do anything else. Ambient or sudden noise without direct interruption is another in which Drum Code trance techno seems to help. The last level is the ability to ignore people or hand gesture you are busy in such a way that it neither offends yet also conveys empathy in both directions while not taking you out of the zone. These are not easy things but are achievable because you can't keep exposing to Bob or Sally analogies while maintaining sanity.
I work from home almost every day, in a house with a four your old and a 1 year old. Ultimately, my wife does a pretty good job at not having them interrupt me, but often I find I have the opposite problem of hearing my wife struggling with the children and go help her. It's self-serving in a way, because my wife is generally happier if her day isn't a struggle. Often if I need to focus on something uninterrupted I'll put on some headphones with some trance/house music and pound away for a bit. This only kind of helps though, because I find it's only good if you have a lot of manual work to do where you already understand the solution. I'm often at the whiteboard for an hour or so for every 20-30 minutes of coding.
A lot of this seems to blame others for a personal lack of attention and productivity. Even the Joe Spolsky article someone linked to below, lists a whole lot of reasons that diminish his productivity, none of them being directly caused by him. I am quite the opposite. I tend to think focusing on maximum productivity makes me less productive, as I will tend to get peeved about things I have no control over.
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.
So much this. As a practitioner of modern stoicism, the idea that my productivity should be tied to external influences is anathema to my philosophy.
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.
Aren't you throwing many different things on the same pile here? If your 3 kids interrupt you, each one each hour. Do you get stuff done?
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.
Off topic: When you say "modern stoicism", do you mean applying classical stoic principles to modern life or are there certain books, authors, or websites that offer a modern interpretation of classical stoicism you're referring to?
A quick search yielded this site: http://modernstoicism.com. Any other references would be appreciated.
Basically, yes. Classical stoicism applied to modern life, with concessions made where needed to adapt to reality.
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.
I should add that I am blessed to have a housewife for a partner, though I realize I may get thrown under the PC bus for acknowledging that. Also, I'm not wealthy enough that money is not a priority (i.e. my debt exceeds my income), but I do not consider money to be the pinnacle of my wealth, either.
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 :)
3 kids between 6 and 10 months.. I was struggling to understand how it's physically possible with the same mother to have 3 kids between 6 months and 10 months.
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
Yeah, typing too fast. Thanks for parsing my terrible grammar. Ah to be human :)
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.
Work profitably for yourself in your own private (non-co) working space. Most of us though are not in that situation, but I think (naively) it need not be like that.
Concentration should be familiar to anyone having done any sort of higher grade education. Or skilled work. Martial arts. Music. Even several art forms.
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.
I would guess 'management' would be the more likely target. In jobs like sales and administration, being able to rapidly switch focus to what just came up is advantageous. The people on the manufacturing floor or operations I have worked with have the same issues with being interrupted during their work, though it's often an engineer that's the culprit. (Managers can quantify 'blue colar' productivity losses easier.)
The in such situations, engineers often are the managers.
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.
You'd be amazed at how many people just don't get it. I know people just like the ones described in the article who are more social butterflies, never needing to get "in the zone" as you put it (or needing to get into it much less often). For them, it's never about understanding depth, but more surface level stuff.
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
104 comments
[ 3.2 ms ] story [ 95.0 ms ] threadOne 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.
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.
That this may not be the most effective way of reaping the value of employing you is a different concern.
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?
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.
I use it sparingly to good results.
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.
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.
3.)developers are RE-active and not PRO-active or thinking to prevent. Tell everyone not to disturb. Unless the hotel is burning down, DO NOT DISTURB. I am on my honeymoon night and need to 'concentrate.'
4.)IMHO, personal opinion only after 21 years work. Stupidity and active DOS or denial of service is common. GET USED TO IT. Maybe you or I have to ask to work at NIGHT SHIFT ONLY. I needed to 'fool around' with the company database at that time.
5.)night shift at midnight means goodbye to 'normal life.' see your girlfriend? see your friends? trouble sleeping? boss keeps wondering if you are 'just sleeping on the job'?
6.)productivity, bonus and 'strange looks' are all in play! LOL. I wrote a lot less LOC lines of code. I spent time thinking like a CTO at high levels. this is very dangerous. No financial bonus for pleasing and sucking up to the bosses.. I am just a lowly system adminstrator doing 'special projects' and helping out a few consultants.
7.)I knew we had almost crashed a few times. I knew the company paid consultants a LOWER than good market rate. I knew I had the will and the amazing insanity to do the night shift.
8.)does this help you how to explain to the 72.5% of 'useless eaters' and less than 102 on 100 scale IQ normal employees how the game is played?
9.)Yes, I did want to get to an independent company, but that was only a 'motivating dream.' Its a fair amount of luck or maybe I just call it sour grapes.
10.)this is a fairy tale or fictional or maybe it did happen during the times of the competitors to AT&T mother bell telephone with XXXXXX orgs.
LOL
PS. It's you and one other guy. We are not friends, nor gay lovers. When the simple Perl mistake or s wit you know the word - XXit hits the fan, you have no witnesses nor allies. Your career is finished and you move to the other coast. NYC to Silicon Valley or the other way.
No, and I don't even like Perl, maybe shell, but....
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.
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."
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.
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."
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.
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.
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.
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 :)
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.
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.
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.
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.
Seeds of truth often grow cargo cults of self importance around them.
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.
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.
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 :)
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.
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 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.
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