TE
科技回声
首页24小时热榜最新最佳问答展示工作
GitHubTwitter
首页

科技回声

基于 Next.js 构建的科技新闻平台,提供全球科技新闻和讨论内容。

GitHubTwitter

首页

首页最新最佳问答展示工作

资源链接

HackerNews API原版 HackerNewsNext.js

© 2025 科技回声. 版权所有。

Programmers, teach non-geeks the true cost of interruptions (2014)

293 点作者 davikrr将近 4 年前

49 条评论

eggy将近 4 年前
I have been programming since 1977&#x2F;78, and sometimes for work, but most of the time for fun. As someone who does technical work at heights with rope access, and many years of technical diving on hydraulics, pneumatic, and electrical equipment, I can say it all depends on your ability to shut out interruptions and get to a good stopping point. I get frustrated when I am programming and I am interrupted, but my most frustrating experience was troubleshooting a technical issue at heights, underwater, or on the deck during a show with almost 2000 patrons getting impatient, while a COO&#x2F;CFO wants an estimate on when you will solve the as-yet-unidentified issue. They call the show off if you can&#x27;t get an estimate to repair or resume after 15 min. and they expect you to hold to your time-to-repair or resume estimate. Oh, and half a million to one million USD are at stake! You might be standing in front of a controls cabinet with hundreds of wires and devices and some indications of where to look, or 10m underwater trying to find a source of the fault. I think interruptions suck for any person who is focused on doing a good job - bus drivers, pilots (yes, I know - autopilot!), soldiers in combat, air traffic controllers, chefs, almost any job. This is why I never took a job coding full time. It is always secondary to my actual job even if it is important. And, I like J and APL for the very reason that you are looking at a few lines of code vs. a few pages of for loops ;)<p>I code in C and other languages as well, so no offense to those who work mainly with scalars ;)
评论 #27792151 未加载
评论 #27790316 未加载
评论 #27791441 未加载
评论 #27793227 未加载
评论 #27793232 未加载
harrisonjackson将近 4 年前
The example I like to use is sudoku. Often, after a day of programming, it takes me a while to &quot;come out of it&quot; and I explain that to my SO as if she&#x27;d been doing hours of sudoku and then had to jump into a social situation.<p>Similarly, if you are interrupted in the middle of a &quot;solve&quot; it may be difficult to jump back in - especially if the puzzle hasn&#x27;t been created correctly and you are trying to &quot;debug&quot; which numbers conflict. Some puzzles are harder than others. At times you don&#x27;t have a pen and paper so you have to keep a mental model of the whole puzzle in your head which makes an interruption that much more jarring.<p>Not a perfect analogy, but close enough to get me a 15 minute buffer at the end of the day and fewer knocks on the office door :D
评论 #27790151 未加载
评论 #27795749 未加载
评论 #27788109 未加载
ideamotor将近 4 年前
Interruptions are very challenging with any deep work that takes hours. This is true.<p>What I am facing however, is a related issue. Perhaps because I have not been doing much programming lately, I find it increasingly difficult to actually get and be in the zone. When I go in, I go all in, and enter a kind of fugue state where the hours slip away. While for some this may sound advantageous, in the past, it has been associated with some bad physical and psychological health outcomes. Now, I actually have anxiety about going into such a state, and try to piece meal my problems, and focus on the non-programming work and thinking.<p>Situations change, and I am about to be in one where I do really need to perform a lot of coding myself. I suppose I am answering my own question, but I need to split up my work and take notes to reduce the numbers of abstracted layers upon which I am working. Take more breaks with confidence I can return.<p>I suspect this technique can help ease the burdens of interruptions as well, but it does come at a cost in time. For me, the severe crunch time requirements and gained insane last minute skills should still be less necessary for some time. This is likely called being in a startup and getting older and, well, recognizing long-term limitations.
评论 #27792484 未加载
评论 #27791715 未加载
评论 #27793239 未加载
PragmaticPulp将近 4 年前
&gt; Your non-techie peers just don’t get it, no matter how many times you try to make them understand.<p>We really need to get past this smug idea that tech work is uniquely difficult in a way that no one else can understand. Any deep work suffers from interruptions, and programming isn&#x27;t the only type of work that has significant mental context. This idea that programmers are uniquely vulnerable does no favors when trying to address the problem.<p>Interrupted work is common to everyone, so use that commonality to your advantage when politely navigating interruptions.<p>Also, I hope nobody takes the author&#x27;s fantasy literally:<p>&gt; Well, worry not, because I think I have a way that you can actually demonstrate to them just how devastating interruptions are to your productivity compared to, say, theirs. In other words, here’s how to make someone understand that, for you, an interruption isn’t just a delay after which you can get right back to work but a complete total of your efforts up to that point. Here’s how. Invite the PM&#x2F;manager&#x2F;sales&#x2F;whatever person to sit at his desk and tell him to humor you. Open up notepad and type a series of 3 or 4 digit numbers in sequence, like so:<p>Better advice is to learn how to communicate professionally. Real adults don&#x27;t sit each other down and force them to add up a long list of 3-digit numbers while peppering them with interruptions to make a point.<p>Instead, communicate like peers: &quot;Sorry, I&#x27;m in the middle of something important. Can you come back at lunch time?&quot;<p>Or: &quot;Is this urgent? I can&#x27;t really stop what I&#x27;m doing right now, but I can stop by your office around 3PM. Will that work?&quot;<p>Don&#x27;t be afraid to assert yourself in the conversation. Communicate the concern (&quot;I&#x27;m in the middle of something important&quot;) and propose an alternative that would work better for you (&quot;Can this wait until lunch time?&quot;). Scale the assertiveness up or down depending on who&#x27;s interrupting you. We all know some people who will take the hint and disappear, and we all know other people who will try to ignore your concerns and press forward anyway. Adjust accordingly.<p>Finally - Recovering quickly from interruptions is a skill that can be developed and learned. Obviously, you can&#x27;t negate the damage of interruptions entirely. However, making an effort to gather your thoughts and return to work after interruptions goes a long way to limiting the damage. The worst thing you can do is pop open HN or Reddit or Twitter after an interruption because you&#x27;re already out of the groove. Knowing how to manage yourself and get back into the groove as quickly as possible is a valuable skill.
评论 #27789247 未加载
评论 #27791479 未加载
评论 #27791667 未加载
评论 #27788068 未加载
评论 #27788482 未加载
评论 #27788510 未加载
评论 #27788257 未加载
评论 #27788227 未加载
评论 #27789139 未加载
评论 #27788301 未加载
评论 #27791333 未加载
评论 #27788153 未加载
评论 #27788305 未加载
评论 #27791408 未加载
评论 #27788357 未加载
评论 #27788362 未加载
评论 #27788136 未加载
评论 #27788220 未加载
评论 #27793292 未加载
评论 #27788268 未加载
评论 #27791995 未加载
评论 #27788108 未加载
评论 #27791911 未加载
评论 #27795108 未加载
评论 #27788085 未加载
aroundtown将近 4 年前
You know what helps:<p>1. Stop being passive aggressive about being interrupted.<p>2. Take notes.<p>Dealing with [1]: it is ok, to interrupt some one who starts talking to you, tell them &quot;Hang on&quot;, &quot;Just a minute&quot;, &quot;Come back in an hour&quot;. You have to put your foot down if you are working, even with bosses.<p>Note taking[2]: early in my career I kept too much information in my head, including debugging. Life is so much better with notes. Nowadays, I work problems out on the paper and not in my head. It&#x27;s harder to start doing, but once you start you have a paper trail of where you have been and where you are going. Sometimes, you do need to drop everything and go be part of the action. When that happens, notes will get you back where you were quickly.
评论 #27789233 未加载
评论 #27788725 未加载
评论 #27797079 未加载
评论 #27790327 未加载
评论 #27788667 未加载
评论 #27788687 未加载
mmarq将近 4 年前
&gt; Your non-techie peers just don’t get it, no matter how many times you try to make them understand<p>In my opinion this is more common to software development only because software developers, at laest in Europe, do not have the same social recognition as other professionals. An undisciplined PM&#x2F;PO interrupting everybody to get estimates to update their GANTT chart will be as disruptive in an operating theater or in a legal office as they are in a software development team. Society just decided to not allow randos (as in people with no medical training) in operating theaters while welcoming them (as in people with no development training) in software development teams. Worse than that, these randos often have more power than the professionals doing the work. Surgeons would be complaining and people would be dying, if scrum-certified noisy &quot;servant-leader&quot; PMs were allowed to decide how to carry out operations.
评论 #27792755 未加载
评论 #27792679 未加载
SamBam将近 4 年前
&gt; Now, tell him to add those numbers in his head. He can look at the screen and talk&#x2F;whisper&#x2F;mutter to himself, but he can’t write anything down and he can’t type anything.<p>&quot;Why can&#x27;t I write anything down?&quot;<p>&quot;Because when I&#x27;m seven to ten levels deep in a stack of issues, I never write anything down, I need to keep it all in my <i>head</i>.&quot;<p>&quot;But why?&quot;<p>&quot;Well... I have a whole mental model constructed. I couldn&#x27;t possibly write it all down.&quot;<p>&quot;But it seriously wouldn&#x27;t help you to keep <i>some</i> notes while you work? And perhaps add to the skimpy comments in the codebase while you&#x27;re doing it?&quot;<p>&quot;I seriously don&#x27;t see how that would help.&quot;<p>&quot;You literally just said you&#x27;ve written down the code &#x27;8xZ204330Kd&#x27; and now you have no idea what it was for. Did you imagine you&#x27;d be guaranteed to remember it between writing it down and finally solving the bug? Why didn&#x27;t you at least write some context about what that string was?&quot;<p>Seriously, just like most kids somewhere between the ages of four and ten goes from &quot;I <i>know</i> I will remember this!&quot; to &quot;I should write this down so I don&#x27;t forget,&quot; programmers could stand to recognize that sometimes taking some notes can help clear their brain when they&#x27;re too many levels deep in a stack.
评论 #27789000 未加载
评论 #27792900 未加载
评论 #27808768 未加载
werber将近 4 年前
To add to this, there’s a lot of neurodiversity in the programming world. A lot of people have brilliant brains that just don’t work well with interaction. I had a discussion with other people on my team recently and realized I was the only extroverted person on the team. I think it’s also worth saying I personally think I’m one of the worst developers on the team but being able to context switch is unfairly rewarded and gives business people the impression I’m way more competent than I am. Furthermore, to me COVID was the worst thing in the world in terms of social isolation and a majority of my team mates loved it. I wish respecting communication preferences Was more respected. Asynchronous and non intrusive messaging seems so much better for the majority of my coworkers
评论 #27788237 未加载
评论 #27788347 未加载
评论 #27788018 未加载
wruza将近 4 年前
Re-diving is not only hard but also demotivating and morally tiring. You spend the same efforts again and again and at the fourth try you just stop understanding why they need you, a deep-analyzing guy, in the first place, when they could just hire a “friday ETA at any cost, boss” guy and ship whatever they could do right at friday evening.<p>I wore these shoes, but one case was special. I was being young, debugging some live show-stopping issues at the client side (the sales department of a plastics factory, a part of a lingered project) when their production manager who I didn’t even know approached and asked in a very demanding tone when the entire project will be done. I distracted and politely redirected them to our PM only to hear a tirade about me doing nothing for months, despite the fact that all the work was thrown on me only recently, after our low-skilled part of the office managed to create enough mess. I politely explained that (omitting the “mess” part) and repeated what I’ve said before, again to no avail. And then my ego decided that it is reasonable to elevate my tone a little and ask them to please not interrupt me at this part of work, because it doesn’t make it easier. God, that hit him unexpectedly hard. Management is never ready for that sort of a dialogue, as I learned later. He left in rage and never greeted me again. (To not look too grumpy, I must say that everyone else, including some high-profile nose-up positions there, sort of adored me for solving their needs at least partially after a long time and for being not yet another silent display-peering guy.)<p>Wasn’t long before the story was relayed to our PM. I was criticized and expected to apologize but I refused because morally I didn’t feel guilty and to that moment I understood that this project was unlikely to succeed anyway. Few days later I just took the costs of my time and a fellow developer’s at my own expense and left this project completely. It was worth it.<p>No moral here, but another example that they don’t really understand the difference between a grinder operator and a developer. Also, I may play sir-vs-peasant games with management, but I still don’t get it as a human and <i>will</i> bite back if they play too much. Nothing is worth losing your dignity, unless you’re seriously leveraged. (And in my experience 99% of the client employees never exploited it anyway for personal attacks or sort of that)
评论 #27792368 未加载
ebiester将近 4 年前
PMs explicitly know the issue with interruptions. Most PMs I know work 1-2 hours either before or after business hours precisely because this is the only time they can get work done.<p>Engineering Managers understand this too. And the goal is to minimize interruptions - and meetings are an interruption!<p>The problem is that the time pressures on someone on a manager&#x27;s schedule are such that they do not get the information needed to make the necessary decisions. As such, Managers are in a trilemma:<p>* The PM makes the decision without the information necessary, and the team goes &quot;why didn&#x27;t you get me involved?&quot; The PM or EM (Often working 50+ hours a week) then has to do rework and is not ready for the team. * The PM or EM interrupts someone on the team, reducing the team&#x27;s ability to do useful work and being frustrated about how many meetings they have. * The PM&#x2F;EM waits and is in a continual multitasking situation themselves, unable to do the creative work because they do not have the information necessary at the time they can do the work. (This also lends itself to long post-standups, and long hours for the PM.) Or, it turns into a &quot;slack in a general channel and wait&quot; situation. Slack is the same interruption in most organizations, even when not using direct mentions.<p>I&#x27;ve tried to constrain the times I meet my team around other necessary meetings, and it throws out my day trying to accommodate, and even then I can&#x27;t always do it.<p>As an engineer, which do you prefer? (It&#x27;s always great when the PM and EM are on a 7pm call because that&#x27;s the only time we can do it, let me tell you.) Some engineers say that everything should be on paper from the PM, but that does not account for the extra time that it takes to put documentation together that may be based on faulty assumptions.<p>It&#x27;s a fundamentally hard problem. Let&#x27;s not treat it as trivial to solve.
camhart将近 4 年前
Programming is like riding a bike. It takes time to get on the bike, to get momentum going. Interruptions are like someone hitting you with a stick while you ride.<p>Getting hit, falling off, and climbing back on the bike takes a lot of effort, and you have to rebuild your momentum each time it happens. The more times you&#x27;re knocked off in a day, the more tired you get of climbing back on.<p>Rebuilding the momentum when programming can take 30 minutes or so. Then you just get whacked with another stick.
评论 #27792306 未加载
ntrz将近 4 年前
The suggested `adding game&#x27; in the article seems pretty smug and patronizing to me.<p>Surely explaining the situation to the `culprit&#x27; like an adult would do just as well without stooping to the ``I&#x27;m interrupting you! I&#x27;m interrupting you! See how annoying it is?&#x27;&#x27; solution. If someone has such little regard for you that a normal conversation won&#x27;t work, I feel like that `demonstration&#x27; is likely to just garner you a reputation as an ass.
评论 #27795763 未加载
评论 #27788144 未加载
1-6将近 4 年前
Actually, HN is more of a distraction to me than random people popping by.
评论 #27788167 未加载
评论 #27787981 未加载
评论 #27788352 未加载
评论 #27788029 未加载
评论 #27788184 未加载
igitur将近 4 年前
I&#x27;m a quantitative finance &#x2F; actuarial programmer. I&#x27;ve flipflopped between the programming and business side a few times in my life. At one stage I was in the Actuarial Valuations team, responsible for the periodic valuation of a set of life insurance books. Timelines were very tight, input data was a mess, the products themselves were complex. This wasn&#x27;t easy stuff. During valuation time all of us were on edge.<p>But for some reason, being interrupted then didn&#x27;t cause nearly as much damage to my mental house of cards as they do now, where my day job involves translating messy actuarial spreadsheets to code.<p>I can&#x27;t put my finger on it. Both tasks were complex. Maybe the fact that actuarial valuations (like most financial roles) are based on spreadsheets and you have a visual model right in front of you, or accessible within a few clicks. I think that relieves some pressure on the mental model.<p>Programming, on the other side, even with all the IDE tools like a watch list and call stack, seems to require a larger mental stack, given the same complexity in another field.<p>Side note: work from home has been a dream come true in terms of the disappeance of interruptions. But I do miss the coffee breaks with colleagues (or what others would call water cooler conversations).
hboon将近 4 年前
To those advocating writing (more notes) to help context switching, just a thought — do chess players keep notes during a running game?<p>---<p>And I added this part later, just to frame the question in case it suggests that I think notes are useless here:<p>I have been writing and keeping notes of my work for more than a decade, mostly writing them as I go.
评论 #27791543 未加载
评论 #27791442 未加载
评论 #27791653 未加载
evilotto将近 4 年前
If you had to use a piece of software that ran lengthy operations and had to start over from the beginning if it was interrupted for any reason, would it be more effective to prevent interruptions as best you can and hope they never happen, or to fix the program so it saves its work along the way and can restart after an interruption? There are a lot of reason why you can get interrupted, not all of which are your boss stopping by for an update.<p>This article is exactly why programmers are seen as whiny prima donnas. Too many refuse to work in a way that accommodates working with other people.
评论 #27792606 未加载
rreyes1979将近 4 年前
The only way I could explain this to my wife was telling her that programming is like falling asleep. And people asking stuff while you try to program is as destructive as people asking you stuff while you are trying to fall asleep (or sleeping already): if you asked and I answered, damage is already done. No matter how small the response or how simple the question was.
lamontcg将近 4 年前
&gt; &quot;Any chance I can get an ETA on having that fixed?”<p>This is the most annoying question in the world.<p>I usually want to respond &quot;probably sometime before the heat death of the Universe, but honestly that could slip&quot;.<p>Until I write the fix I have no idea that the direction I&#x27;m taking will actually work. Very often I discover some $SADNESS while trying to actually do the fix. Some test may blow up in some way I never expected (often on some platform that I&#x27;m not actively testing until I run it through CI because I don&#x27;t have an AIX virt on my laptop). That could derail me for a week or two.<p>Then there&#x27;s CI itself which breaks quite often due to how complicated it needs to be (we have to support AIX builds and things like that). I can&#x27;t give you an estimate on that because I don&#x27;t know how that is going to fail or how long it&#x27;ll take to fix it, but if I tell you we can fix it next week that&#x27;s exactly the time CI gets broken in some way that&#x27;ll take 2 weeks (often for a different team that I don&#x27;t have any control over) to sort out all the mess.<p>The realistic estimate is often closer to 4 weeks for something that might seem like it&#x27;ll only take a few days at the start. And it doesn&#x27;t matter how vitally important it is to some customer. I&#x27;ll try to get it out in a few days &#x2F; next week, but it might slip for a month due to the unknown-unknowns and breakage outside of my direct control.
评论 #27789107 未加载
kokey将近 4 年前
I&#x27;ve been tempted to hack together a web based game. It will be some simple puzzles requiring working memory, like that addition of numbers example. It could even be word problems with multiple choice answers, but the questions has to be relatively wordy with several data points to consider. Periodically it will get interrupted, by several things, but mainly a face with a speech bubble, asking various questions like &quot;are you busy?&quot;, &quot;can I ask you a question?&quot;, &quot;how much longer do you think you will take to complete this?&quot;. This will completely take over the screen and you won&#x27;t see your last question. You can select some answers (yes, no, 5 minutes, etc.) and some answers will lead to more questions especially if you give wrong answers. Also questions that you need to visualise to come up with an answer, like comparison of sizes or distances of things you don&#x27;t often compare (bus vs yacht) After each interruption you will return to your puzzle game. The first interruption will only kick in after a while so you get used to how easy it is without interruptions, but then they&#x27;ll start to kick in frequently but also randomly so you have some breaks sometime but never know for how long.
评论 #27789684 未加载
dekhn将近 4 年前
Hahahah. I tried this with my wife and she said I was being an asshole and go feed the kids.<p>These days I have to actually look at my calendar and pay attention to where my family is and force myself to drop work at certain times. Further, I&#x27;ve begun not starting deep work until I know that I am not likely to be interrupted for hours at a time. I still get calls hours into that, &quot;hey somebody else&#x27;s plans changed at the last second, I need to drive 20 minutes to get somebody and then drive them home and feed them&quot; which is basically gonna kill my productivity for 3X as long as it takes.
NewEntryHN将近 4 年前
The problem is that sitting in front of a computer gives no indication of business. You wouldn&#x27;t interrupt a surgeon during an operation, or a pilot landing a plane, or a crane operator moving some load on a construction site, or a carpenter currently doing woodwork; because you can very visibly see them being focused on their work. Sitting in front of a computer is the default position of the modern office workplace, which makes it a meaningless signal.
bentcorner将近 4 年前
I probably interrupt myself more than anyone else.<p>But my strategy for overcoming this with long and involved investigations is to write my thinking down in a stream-of-consciousness format.<p>Write down all my thinking, dead ends I went down, why certain assumptions can or cannot be made, everything.<p>Then if I have an interruption it&#x27;s much easier picking everything up again, even if I have to start over from scratch with a new set of IDs or whatever.<p>Think of it like frequently committing in git.
cesaref将近 4 年前
It&#x27;s true that interruptions are a source of significant cost for programmers, but the other side of the coin is that talking through problems and design decisions with other programmers can generate a massive gain in productivity.<p>Let&#x27;s say you are struggling with a design choice, or something in the production system looks screwy, how do you know who you can approach to discuss this?<p>Well, the way i&#x27;ve worked in the past (when we used to all sit in an open plan office which seems like an age ago) was that you signalled &#x27;do not disturb&#x27; for those times when you needed to be in the zone by putting headphones on. You weren&#x27;t necessarily listening to music, some of us did, some didn&#x27;t, but it was used as a clear signal that you shouldn&#x27;t be disturbed.<p>The result of the headphone rule works pretty well. I&#x27;ve worked places where there&#x27;s been a full production meltdown, serious money being lost (well, not earned) due to the downtime, and all sorts of people and teams being pulled in to help identify and resolve the issue, meanwhile on the same desk someone in headphone mode being totally unaware of the problem.
nkingsy将近 4 年前
I Don’t get it.<p>I certainly get grumpy when I get knocked out of flow state, but it’s more about having to cut my direct feed to the universe than any measurable loss of productivity.<p>Maybe I’m lucky to be able to get into flow quickly, or maybe people are misrepresenting the cost. Even 10 minutes of lost context&#x2F;flow ramp seems like more than I’d estimate for the cost of one distraction.
评论 #27788437 未加载
charles_f将近 4 年前
Related to this, I love this comic, because it so much exactly what happens when you get interrupteurs <a href="https:&#x2F;&#x2F;pics.onsizzle.com&#x2F;focus-poof-hey-do-you-have-isec-nevermind-what-was-41938227.png" rel="nofollow">https:&#x2F;&#x2F;pics.onsizzle.com&#x2F;focus-poof-hey-do-you-have-isec-ne...</a>
mikesabbagh将近 4 年前
I agree with the destructiveness of meetings and interruptions. Many times the only productive work takes place after 5pm. I find creating protected time is a good solution that helps, but you cant have this every day when you work for an enterprise.<p>So you just learn to work while the meetings are running.
sagivo将近 4 年前
This also applies to remote interruptions like slack and email messages. The difference is you can control these interactions better by hitting the &quot;do not disturb&quot; mode. Just make sure people understand why you&#x27;re not responding right away.
teddyh将近 4 年前
Whenever this comes up, I usually link to this:<p><i>Don&#x27;t Wake Up the Programmer!</i><p><a href="https:&#x2F;&#x2F;alexthunder.livejournal.com&#x2F;309815.html" rel="nofollow">https:&#x2F;&#x2F;alexthunder.livejournal.com&#x2F;309815.html</a>
itqwertz将近 4 年前
People are generally selfish and focused on their own goals. Everyone has their stress and tries to relieve it either by working machines or working people.<p>Due to the unpredictable hours of salary positions, programmers should be defensive and stand up for themselves more often. Being walked all over is typically a sign to find a better work culture elsewhere.<p>This article is a fantasy situation that would never play out in the real world. PMs don’t have time to mess around with a stupid mental exercise, nor would the lesson change their reality.<p>“Just get it done”
tgv将近 4 年前
The first level of interruption rarely bothers me. I can get back to what I was doing almost instantly. The second level, when the interruption gets interrupted, or comes very quickly after the first one, that&#x27;s the one stresses me and make me slowly forget details of the original task that makes it costly to go back. Not everyone reacts the same, I guess.
gego将近 4 年前
...what is described here for programming is the case for most creative work where we weave something into a tight compact whole... also in academic writing, where you build up to the moment of writing by copying all the papers you need into your head... and any disturbance empties the cache and sets you back the 30-40 mins again...
jaggederest将近 4 年前
You can use dual n-back as a systematized way to do this. Get them to do it for a bit uninterrupted, and then use a random beep generator to generate interruptions. Most people will score drastically lower with random interruptions.
cratermoon将近 4 年前
Do programmers really need to have the skill of &quot;Holding a Program in One&#x27;s Head&quot;? <a href="http:&#x2F;&#x2F;www.paulgraham.com&#x2F;head.html" rel="nofollow">http:&#x2F;&#x2F;www.paulgraham.com&#x2F;head.html</a>
bigbillheck将近 4 年前
All else being equal, I think that &#x27;being unable to handle interruptions&#x27; is grounds for self-improvement, in the same way that &#x27;cannot cook&#x27; or &#x27;cannot drive a car&#x27; are.
jrockway将近 4 年前
I think pg explains this better: <a href="http:&#x2F;&#x2F;www.paulgraham.com&#x2F;makersschedule.html" rel="nofollow">http:&#x2F;&#x2F;www.paulgraham.com&#x2F;makersschedule.html</a><p>I think it&#x27;s important to make sure you have the infrastructure in place to support your team&#x27;s productivity. It isn&#x27;t something that won&#x27;t happen without work:<p>1) Have an escalation flow, and have someone dedicated to handle escalations. The example about the order API crashing should never hit anyone except the person who is on call that week, and that person shouldn&#x27;t have any project work assigned. (They can be doing project work, but your planning should assume they&#x27;re AFK the entire week. Sometimes on-call weeks are like that, and sometimes nothing comes up. Don&#x27;t aim for the 50%-ile on that variance, aim for the 99.9%-ile, or your projects will be set-back 50% of the time instead of 0.01% of the time. And you&#x27;ll burn out the on-call engineer.)<p>2) Forbid DMs. All questions should be posted to a public channel. (I guess people still use email, but I haven&#x27;t seen it anywhere I&#x27;ve worked for several years, so it might be one of those things that&#x27;s dead now.) Many questions that are directed at a specific engineer can easily be answered by the manager or lead who is probably on a &quot;manager&#x27;s schedule&quot; and not a &quot;maker&#x27;s schedule&quot;. Forcing someone else to investigate also spreads the knowledge around on the team. (If there&#x27;s only one person who knows how something works, they can&#x27;t go on vacation, will get burned out, and quit; leaving you with 0 people that know how something works.)<p>3) Most meetings should be very targeted and be predicated on pre-work, and have an agenda. For example, if you&#x27;re a product manager, you shouldn&#x27;t invite 10 random engineers and say &quot;hey can I have X by next Monday?&quot; Write a PRD, solicit comments asynchronously, and then have a 1 hour working session to resolve the comments that require high-bandwidth discussion. Once the PRD is ready, eng leads can prioritize the feature, and assign resources to write a design document, and treat that as normal project work. Assigning people underspecified work just leads to disappointment on both sides -- the PM doesn&#x27;t get the feature they want, the engineer has to delete the code they spent a month on. (It&#x27;s also important for product to not change their mind too often: <a href="https:&#x2F;&#x2F;apenwarr.ca&#x2F;log&#x2F;20171213#slide13" rel="nofollow">https:&#x2F;&#x2F;apenwarr.ca&#x2F;log&#x2F;20171213#slide13</a>)<p>4) If you can get software to bin-pack meetings, you should. There are very few cases where the exact time of the meeting matters -- what matters is making sure that the global interruption cost is minimized. (This is NP-complete, but there are still services that will do it for you. Great is the enemy of good here, and &quot;Everyone is free on 2pm Thursday&quot; is the worst possible way to schedule meetings.)<p>5) Don&#x27;t have status meetings. If you want a daily slot to discuss issues that come up, that&#x27;s totally fine, but going around the room to ask what you did yesterday is a colossal waste of time. It&#x27;s always &quot;today I&#x27;m working on the same thing that I worked on yesterday&quot;, because nothing that is worth paying someone $200,000 a year to do is done in a day. (How do you know if someone is done with their high-impact project? Don&#x27;t worry, they&#x27;ll tell you.)
guskel将近 4 年前
I wish I could be so lucky to be interrupted for work relevant things and not discussions about Adam Sandler movies or the neighbors dog when I’m clearly focused and typing into my IDE.
Vaslo将近 4 年前
This reminds me of the scene in The Shining when Wendy disturbs Jack. I can’t tell you how many times I’ve wanted to do Jack’s reaction when someone interrupts me.
clipradiowallet将近 4 年前
Are managers interrupting your work and making it hard to concentrate? Try working at home with young twin children. Great article though.
Wistar将近 4 年前
At Microsoft, it was easy to see which teams were in crunch mode: the closed doors had &quot;email only&quot; signs on them.
Spooky23将近 4 年前
If some dev decided to teach me these lessons, I would be tempted to go out of my way to bug the dude as much as possible.
tomjuggler将近 4 年前
Love the description of the problem in the article, so familiar.<p>I do my best work at night, when everyone is asleep.
peakaboo将近 4 年前
This article is why I&#x27;m not a programmer anymore. It&#x27;s just impossible to be a programmer in the office while also trying to be social. I don&#x27;t want to sit in an office surrounded by other people and get frustrated because it&#x27;s not quiet or calm. I rather talk to people and have fun.<p>For me, programming only works when working from home and I&#x27;m alone.
novaleaf将近 4 年前
required viewing: <a href="https:&#x2F;&#x2F;heeris.id.au&#x2F;2013&#x2F;this-is-why-you-shouldnt-interrupt-a-programmer&#x2F;" rel="nofollow">https:&#x2F;&#x2F;heeris.id.au&#x2F;2013&#x2F;this-is-why-you-shouldnt-interrupt...</a><p>(circa 2013)
monkey_monkey将近 4 年前
This is my favorite cartoon about the cost of interrupting developers.<p><a href="https:&#x2F;&#x2F;heeris.id.au&#x2F;2013&#x2F;this-is-why-you-shouldnt-interrupt-a-programmer&#x2F;" rel="nofollow">https:&#x2F;&#x2F;heeris.id.au&#x2F;2013&#x2F;this-is-why-you-shouldnt-interrupt...</a>
nathias将近 4 年前
I really don&#x27;t get this exaggeration about interruptions ...
评论 #27788592 未加载
rStar将近 4 年前
i like to remind people that it’s their time they’re paying for it, but my time starts at 4pm and thats when I’ll be exiting the elevator into the parking lot.
hahamrfunnyguy将近 4 年前
should be: Programmers, Teach Non-Geeks the True Cost of Interruptions (2014)
kqr将近 4 年前
I agree interruptions are expensive for personal productivity.<p>However, these discussions very often commit a big mistake: the Ford mass production mistake of being too myopic, optimising too locally.<p>In an organisation there are many people working complex problems toward a common goal. You can optimise for local productivity, i.e. one programmer steams ahead, ignoring the rest of the organisation, and gets a lot done. But when local productivity is optimised at the cost of shutting down quick communication between people, the organisation will grind to a halt.<p>The programmer will, eventually, make the wrong things, in the wrong amount, and at high cost -- not to mention how the other people that needed help from the programmer will just hover around and not know what to do.<p>Or worse, but more likely: they&#x27;ll improvise an incorrect solution to the problem. Eventually that solution will blow up and the programmer will have even more work to do to fix it.<p>This is similar to the problems Ford made for himself with the mass production paradigm, in that you can install a machine to really efficiently make parts for a car at a rate of 1,000 per second -- but if it needs to make them in batches of 50,000 and it takes hours to set up the batch, you&#x27;re adding so many hidden costs to the process. Local optimisation can easily kill global optimisation. (Entire books have been written about this, so I won&#x27;t expand too much on it.)<p>If you truly want good results, you can&#x27;t take a myopic view of optimisation and only look at your personal ability to crank out solutions to what you think are the right problems.<p>For good results, you need to optimise the productivity of the entire system, and the entire organisation is a good start. (Later, you should include suppliers and other peripheral entities in your optimisation process.)<p>The inefficiencies of the organisation is, in my experience, almost <i>never</i> the ability of a programmer to crank out solutions to what they think are the important problems.<p>In my experience, the inefficiencies are almost <i>always</i> lacking communication. Failure to understand the important problems. Slow feedback. Code lying around not making things better for the users. Code written for a problem someone decided were no longer important. Bad documentation and internal support. Bad teamwork, especially across division and team boundaries.<p>Essentially all the problems we know from the old bad days of manufacturing.<p>Please, realise that the person interrupting you definitely think they are doing it for a good reason, and they are probably trying to spare you from meaningless work -- now, or in the future.<p>If that&#x27;s not the case, then the discussion must be centered around organisational productivity, not just the idea that personal productivity is more important than anything else.
satya71将近 4 年前
I’m going to use this.