44 ms·
Programmer interrupted: The cost of interruption and context switching (2022)
- dagorenouf 4y agoI view coding as creative work not that different from writing or drawing. Sure there are techniques and rules to follow, but to do great work you need to get in the flow of things until your creative brain figures stuff out on its own. It takes time to warm up and any interruption destroys the momentum you had. I put my phone on airplane mode for most of the work day because of this.
- dpkirchner 4y agoContextKeeper sounds interesting. Can anyone here recommend a similar extension for VSCode? Ideally would offer a way to stash and unstash code and tab metadata (cursor position, undo state, etc) with one IDE keystroke.
- jrockway 4y agoThis sounds very similar to Emacs's desktop-mode.
- piotrkarczmarz 4y agoContextKeeper's founder here. VSCode plugin is on the roadmap and hopefully it will be available before the end of 2023. Both plugins, for VSCode and Visual Studio, will be using the same JSON format for storing "contexts". In other words it will be possible to share "contexts" between teammates, no matter which IDE they are using personally. There are multiple scenarios where it could be useful and improve sharing technical knowledge, such as, faster bug fixing and better understanding of large system architecture, within an organization.
- swah 4y agoI just open more windows.. you could also use Project Manager extension, should have at least a "recent projects" command IIRC.
- lordnacho 4y agoFor me it's not really to do with how much stuff is on the screen. It's more that when you're doing creative work, the intermediate state is a bunch of maybe-graphs. Maybe the bug is a->b->c, maybe the bug is caused by d + e -> c, etc. Once you find it, you know what it is and you can discard the explanations that are wrong. But before that, you have a bunch of hypotheses. Plus your mind knows that you intend to forget the details. When you're interrupted, you forget a bunch of the maybes and you have to rebuild them. This is because your evidence is not strong enough yet to have a small graph, it needs to be a big graph (or set). Main advice is to take small steps. Little pieces that are easily recoverable. Things like unit tests help to establish the facts, allowing you to push some things out of your own memory. Also take some notes to jig your memory. Sometimes you can't take small steps, because it just happens that you didn't consider something and now there's a large surface to think about. For those times, make sure you're not interrupted.
- danginmytoliet 4y ago[flagged]
- intelVISA 4y agoDepends, can this fabled all-knowing robot also humor facetious comments on HN?
- klodolph 4y agoThat’s the same misconception about programming that people had decades ago. People thought the same thing when we introduced 5GLs back in the 1980s, and there was a lot of hype, and programming became more accessible, but demand for programmers increased rather than decreasing. People thought the same thing back when Fortran was introduced in the 1950s, and programming became more accessible, but the demand for programmers increased rather than decreasing. The trick is that you need to hire someone to come up with a description of the problem which is precise enough that a computer can handle the rest. That person is the programmer. If you’re being sarcastic, it’s not clear, just put a /s on the end or something.
- Mountain_Skies 4y agoSame with SQL, which was promised as a way for data processing managers to get rid of expensive programmers as the managers would now be able to get whatever information they wanted from their databases using an easy to understand, English like language. All it did was change the nature of the job of retrieving and storing database information but didn't actually get rid of the programmers.
- commandlinefan 4y ago> All it did was change the nature of the job It also created SQL injection vulnerabilities, so there's that.
- TylerE 4y agoNo, that’s something bad programming languages did. SQL is purely declarative.
- BrandoElFollito 4y agoNon programmers won't get it. I am trying to explain it to my wife (using the cartoon on the article) but she says I am always busy. Which is probably true, but somehow she manages to interrupt my thoughts right when I was holding the whole heap in one hand, reaching for the duct tape with the other and pushing the keyboard with the nose. Never when I just started vscode :)
- Eugr 4y agoProgrammers is not the only profession that has a high cost of context switching. Scientists, lawyers, engineers, writers - pretty much anyone doing intellectual work would understand.
- ChuckNorris89 4y agoYou forgot doctors and nurses.
- hotpathdev 4y agoNow let's look back at the list provided: -Scientists -lawyers -engineers -artists -doctors -nurses And compare it to programmers and writers. The non-programmer/non-writer world think programmers "just play on the computer" all day. So I think GP is spot on, non-programmers don't get how interrupting flow is catastrophic to what we do.
- Eugr 4y agoThe list is too long, really.
- tester457 4y agoArtists too
- NoPicklez 4y ago"Non programmers won't get it" Complete ignorance for what other jobs do. Writing code is not so different from writing long reports. When I am writing a long report, I need to focus as well and do not want to be interrupted. Programming is not the only job that requires deep thought and concentration.
- asdff 4y agoIf I know I am going to have my day broken into sub 1hr chunks thanks to meetings and such, I pretty much write off the day entirely. It takes time to get into the flow state, some studies cite over 20 minutes, and once you are in it you want to stay in it for like four hours. No emails to follow up with, no slack, no zooms, no one tapping your shoulder, no conversations about the weekend distracting you on the periphery, just you and your task at hand. It's pretty ironic, because this is how a lot of people study in the library at college,show up and stay all night grinding in the flow state with your phone shut off. Yet when you graduate to the work place, you seldom have the opportunity to work like how you've been training to work for all your advanced schooling ever again. With respect to the article and maintaining context while coding for different projects, I find having a tmux session for each individual project super helpful.
- MH15 4y agoHaving tmux sessions for each open task is a life-saver, especially in an environment where I do all my work on a remote server. Now I can close the laptop lid and never lose work. Simply reopen the ssh connection and keep going.
- asdff 4y agoIts especially helpful for stuff where I haven't touched it in a while too. One alias and boom, I'm back in a session with a pane with my editor open, a pane with the log, a pane with some notes, and a pane with the shell displaying the last line of code I ran from when I was last working on this pet project over six months ago. Right where I left everything and I can jump back in as if I was working on it an hour ago.
- darkteflon 4y agoI have a separate VS Code window connected to a dev container for each project that stays open for days, weeks or months at a time. Does the tmux approach materially improve upon that setup? Genuinely curious if I’m missing out on something here.
- dmcq2 4y agoAt a job I had they wanted me to install an instant messaging app on my compute! I refused point blank. I said they could email me and I'd look at he email every so often. If it was really important they could get up and walk to see me. If it wasn't important enough for others to walk then it definitely wasn't important enough to interrupt me. Before that I was at a place where they had tannoys. I moved the tannoys away from me but they were still annoying. I tried showuing that they were losing the place millions. It would have been far cheaper to have somebody employed to walk around looking for people. They only got rid of them when marketing got in and the first thing they said was to et rid of the tannoy.
- dekhn 4y agoI would not hire you if you refused to use instant messaging (my enterprise uses Slack and gChat). You would be unable to do the job- you wouldn't be able to contribute to decision making, or would miss out on all sort of information. We (our department) has moved out of email with the exception of formal requests and things that cost more than a few tens of thousands of dollars. Would you use IRC? That's all slack really is.
- whstl 4y ago"Instant messaging" doesn't have to be "instant". You can just close the program and open it every other hour, just like with email (which also trigger notifications). Or better yet: don't even install the chat app. Just use it in the browser and open as needed. The expectation that you always have to be online is also unreasonable. But if you're still required to put out a show for an unreasonable employer, you can always set it to "Busy" and disable notifications. This also signals to people that you won't reply immediately. Of course some co-workers will want to "chat" when you answer them, but this is where you must set limits and say you'll only have time for chat outside your busy hours. This is normally perfectly acceptable IME.
- theshrike79 4y ago"Instant messaging" is just as disruptive as email if you have notifications turned on. There is zero difference between your email program going ding ding ding on every incoming email vs slack/teams/whatever doing the same. My current company has _all_ of their communication on Slack, the only emails I get are meeting invitations and status emails from automated systems that haven't been integrated to Slack yet. I can easily click to pause notifications on Slack if I don't want to get interrupted - or I can just close it and read the backlog when I have time to focus on it.
- zwieback 4y agoMy code editing style definitely has changed since the 90s when one-file-at-a-time without Intellisense was the norm. Jumping to compile errors was about the only automated thing. Now I just expect my IDEs, be it VS, VSCode, Eclipse to do a lot of heavy lifting for me. I wonder, though, whether I was more disciplined and kept a lot more context in my head back in those days. I'm also a lot older so I really don't want to go back to the old days.
- bombolo 4y agoThe code was simpler. Now java developers can't possibly write an hello world in less than 60 classes and interfaces. Without an ide to keep track of the com.path.that.i.made.up.for.my.package.because.it.has.to.be.at.least.three.pages.long they'd never be able to code like that.
- rqtwteye 4y agoWe definitely need a mandatory all-team meeting about this every Tuesday and Thursday at 2 pm until the issue has been resolved.
- bitwize 4y agoAt one worksite I did raise the issue of there being too many meetings. The response was "Can we call a huddle sometime this week to discuss this issue?"
- lcnPylGDnU4H9OF 4y ago"The meetings will continue until morale improves."
- omnicognate 4y agoI actively like being distracted when I'm programming. I tend to approach a problem from lots of different directions, each time fizzling out, hitting a block or having some sort of mental reset, until something unconsciously clicks and an overall structure, understanding or solution emerges. Continually leaving and returning to the problem is a part of that process, so I tend to find someone walking up with a question rather welcome. The biggest and most effective leave-and-return is of course to sleep on it, and it's rare that I go to bed with a problem at the back of my mind and don't wake up with at least a new approach or insight. I have to be careful, though, as I'm aware most of my colleagues don't feel the same way about interruptions.
- inciampati 4y agoIndeed, this seems unusual in programmer land. As evidence we have a thread like the current one reaching the front page several times a day. But your way is also my way. I am active in a very wide array of topics, and happy to flit between them. Sometimes I dive deep, but it's usually in a critical moment of synthesis when ideas developed over months or years come to clarity and I put them to action. This is working extremely well for me. I lack nothing and am at the absolute cutting edge in every topic I'm pursuing. Of course this is my opinion but it's sufficient to say that I'm happy. It is sad to see how many people are made uncomfortable by interruption. It's the stuff of life, social life at least, and exactly what makes being human in a dense society so wonderful. I feel it represents a fundamental discomfort with being in situations out of one's control. But, that's the core of life. And for me it's where all the creative energy comes from. edit: Reflecting on John Carmack and his big monitor. I habitually work in single window terminals with relatively low row counts and big fonts. I seem to be unable to get a benefit from seeing more stuff all at once. edit2: And in terms of getting into flow state, for me it is always basically instantaneous. The flow is just sitting there under a few seconds of pause. Of course sitting at a computer or phone will cause wandering distraction at times, but if work is in play I can start driving at full speed in what would typically be seen as a horrifically uncomfortable position. Imagine a long distance train with two children jumping on you... If I can see my laptop and the kids at the same time, I'm flowing. I think this might be neurological somehow, due to training or genetics. It's unclear.
- ChrisMarshallNY 4y agoSadly, the cost of context switching is well-known, and has been proven, over and over again, for decades. But managers don't care (and many co-workers also). A quick shufti at most modern open-plan offices, shows the contempt that managers have for developer context. They know better, and have made the conscious decision to go open, anyway. I remember visiting the Facebook/Instagram building, in NYC, and was aghast at the huge, noisy, crowded office. I would not be able to get any work done, in that environment. I'm grateful to be in a position, where I work alone (mostly), as I can keep all those balls in the air, and the difference in productivity is amazing.
- dangwhy 4y ago>But managers don't care (and many co-workers also). i bet 99% of time people are interrupting themselves. Like i just did to browse HN.
- gleenn 4y agoPeople definitely need some distractions but for me it's definitely not 99% of the time. Also, I could argue sometimes the solitaire game between coding stints is actually loading up your brain with some software thoughts, and then giving it a little break to process. Sometimes it takes a day for me to come back and feel like my brain has reconciled some details of a hard problem and only then can I make progress.
- Eddy_Viscosity2 4y agoA momentary distraction like a quick HN check is not the same as the context switching of, for example, going to a budget meeting while in the middle of trying to figure out some technical detail. Very different things.
- Turing_Machine 4y agoAgree completely. A self-determined break is an entirely different thing from being interrupted by other people.
- 4y ago
- kosasbest 4y agoIt's the shadow work of programming I never liked. - Setting up boilerplate code - Configuring my IDE - Configuring special browsers (for web development) with no addons or tweaks done so it appears like an average person is using the browser - Configuring the OS - Separating work from play. Keeping separate machines strictly for programming - Tests - Reading best practice material - Researching if other people have written the exact same thing as you and uploaded it to GitHub (or don't repeat what other's have coded already). All that can be set-and-forget but I periodically have to do it all again because requirements change, or I get a new machine or I simply want to re-configure my development environment for minor (or major) gains in productivity.
- frereubu 4y agoNow I have a family I often can't choose the end of my working day so it coincides with a natural break in my work. In those circumstances, when I know they're going to arrive back in less than 30 minutes, I stop working and do a brain dump of everything that's going on in my head into a plain text file. With that I can pick things up much faster the next morning. I've even started doing it during the day when both my wife and I are working from home and we're about to have lunch together. I'd seriously recommend it. It somewhat reminds me of this Hemingway quote "You read what you have written and, as you always stop when you know what is going to happen next, you go on from there. You write until you come to a place where you still have your juice and know what will happen next and you stop and try to live through until the next day when you hit it again." I think there's an art to stopping at the right time, even if it's within constraints that aren't in your control.
- wpietri 4y agoYeah, in the last few years I've started keeping a work log for projects. It's mostly a way to externalize and clarify thoughts. But I'll definitely use it for an end-of-session record of where I'm leaving off and where to pick up. And where it's possible, I love unit tests for this. Starting off in the morning with a failing unit test from yesterday's close gets me right back into it.
- erik_seaberg 4y agoIt’s good to have something like org-journal set up so you can write down arbitrary stuff without having to decide where to put it or remember where you probably put it later (I think GTD calls this “capture”).
- mattferderer 4y agoI don't disagree but... If you're having a huge issue with this, I suggest trying to find ways to hold less context at one time. Write stuff down & get it out of your head more often. Write down all of your ideas & break down your tasks into smaller tasks. Don't try & solve a giant problem all at once without writing down what you're going to do. You may also discover issues earlier. It doesn't get rid of the issue 100% but it helps a lot. I say this as a dev who has to do a lot of context switching.
- Casteil 4y ago>If you're having a huge issue with this, I suggest trying to find ways to hold less context at one time. For many who experience this regularly, that basically means leaving/finding a new job. With many employers, it's very difficult to escape being spread thin once you've proven your competence and they lean on you hard as a result.
- runlaszlorun 4y agoDo you write it down to read it? Or write it down just to write it down? I find myself doing the latter a lot lately- synthesizing rough ideas to a couple approaches or components and prob a little sketch. I feel a bit guilty that I toss them without reading but for me I think the value is it crystalizes my thinking by putting a pen to paper.
- mattferderer 4y agoBoth! Write it down to read it & not forget it. Write it down because the process often helps me better think about the problem & reasons my initial assumptions were wrong. Can't tell you how many times my clever initial idea becomes terrible rather quickly. Also if it's something that's going to exist over multiple days, writing it down & coming back to it at least a day later is a great way to re-approach the solution & idea.
- osdoorp 4y agohttp://www.paulgraham.com/makersschedule.html http://www.paulgraham.com/makersschedule.html
- zcbenz 4y agoSince several years ago I was starting to have health issues that if I sat still for too long my eyes/arms/legs/waist would feel pain, sometimes fiercely. So I set a timer to remind me to stop staring at the monitor and stand up to do some light exercise, at first the timer was 40 minutes and in recent years it became 20 minutes as my body wears. So now my work is interrupted every 20 minutes, at first the timer was annoying but after several months I got used to it completely and I don’t think it affects my productivity. And actually I wish I could do it from the begining so I wouldn’t have the health issues at all. However my interruption is short and during it I was uaually just thinking about my work while stretching my body, so it is no compare to hard context switches like being dragged to a conversation.
- ssgodderidge 4y agoSorry to hear about the need to take breaks; that sucks. Glad you’re able to work around it, though. I suspect the physical exercise is key to your effectiveness there. There’s a big difference between a pause for a stretch and a pause for a message about an entirely different workstream. Not all interruptions are created equal.
- wink 4y agoPeople are different. I can usually even answer a question on Slack without breaking concentration but if someone is talking to me everything's gone. Same as going to fetch a glass of water. In the office? Locking the computer and walking kinda far, maybe even locking/unlocking a door, meeting people? A real interruption. At home, 3m to the tap? Not losing a thought. But I do know other people who can talk between writing code and not be interrupted but if they have to answer on Slack they have the same problem.
- postalrat 4y agoContext switching is a skill you can and will improve as you get interrupted throughout your career.
- sethammons 4y agothat is one of the arguments in favor of the pomodoro productivity technique. For the unaware, pomodoro says to set a timer and do 25min of non-distracted work. Come up for air (mandatory stop) for 5 minutes. Rinse and repeat a few times. Some studies claim it takes 20min to get into the zone, but pomodoro insists on breaking that flow about 5 minutes later. The end result is training yourself to pick back up where you were at. I don't do pomodoro any longer but it was reasonably effective back when I tried it years ago.
- ipaddr 4y agoThis works..
- michalc 4y agoI do something very similar - I didn’t realise this had a name. I plan that I will essentially have to context change in a short amount of time, so try to achieve some tiny thing before that. It really works - at least for me.
- mtrower 4y agoThis doesn’t really invalidate those studies. What it does do, is force you to restructure your work so that you can get work done anyway. Whether it’s more or less effective than interrupted, “zoned” work is going to depend on the individual and the circumstances, but it is certainly a way to work.
- helsinki 4y agoAgreed. I work at a hedge fund and we are constantly interrupted from programming, but we still manage to make a product that consistently generates profit. I feel like people are being a bit too dramatic, here. Is it hard? Yes, very, but it’s just a matter of discipline and determination, in my opinion.
- m3kw9 4y agoXCode tip: if you open a new tab, your current tab is copied to the new tab. It allows you to branch off from your current tab if you don’t want to mess it up.
- m3kw9 4y agoYou can also rename an entire tab, but it’s hidden in the menus. Just search for rename from the help menu drop down
- m3kw9 4y agoI get big screens but multiple screens gives diminished returns vs tab/spaces switching. Laying out the windows across different screens is always a pain in the ass
- time0ut 4y agoMy company likes to schedule at least 20 hours of meetings spread across the week in such a way that you rarely get more than 30 minutes in between two. Then management wonders why it takes so long to get anything done. Guess its a mystery. Let’s schedule a recurring meeting to discuss it…
- Arrath 4y agoA meeting to discuss that we're behind schedule. A meeting to discuss why we're behind schedule. A meeting to put together a task group to put together a recovery schedule. A task group meeting to put together the recovery schedule. A management meeting to review the recovery schedule. n bounces between management and the TG to revise the recovery schedule. A meeting with staff to discuss the recovery schedule A meeting to assign duties towards the goals of the recovery schedule.
- euroderf 4y agoIt's schedules all the way down. Fractal recursion. Oh and I'm gonna need your TPS report ASAP.
- generic92034 4y agoI wonder why it is not acceptable in many companies to skip meetings as you see fit. I can do that at my workplace, with the possible exceptions of a 1:1 with my manager (30 minutes once a month) and the main team meeting (1-2 hours every other month, usually). And I still can skip those meetings just by telling my manager that I have something quite urgent to do and that I will come back to them later (in case of the 1:1) or read the meeting minutes (in case of the team meeting). On the other hand we have an "open office" layout here. But I am 99% working from home, so I am "skipping" that as well, mostly.
- BaseballPhysics 4y agoFor the record, this isn't unique to coders. Any kind of deep focus work suffers from interruptions, whether that's coding, writing, research, etc.
- gyranthology 4y agoAnyone interested in sharing what tactics they use to get back into flow? For interruptions (meetings or discussion) while coding I'll write a sentence or two directly in the file I'm working in - not comments, actual text. I'll explain what I'm doing and what the next step is, then close the IDE. When I come back nothing compiles and I'm forced to delete the text I added, which gives me a chance to read it and refresh my brain of where I left off. It's been one of the best approaches I've adopted over the past few years.
- mr-pink 4y agoseems like this idea of external distraction is a self-fulfilling prophecy. just be better and keeping your mind where you want it.
- chester_the_dog 4y agoThe problem is not that some managers think that it’s OK for software engineers to be interrupted frequently. The problem is that some managers think that frequently interrupting software engineers is a feature of startup culture. I once worked for a startup where I was interrupted frequently. My boss often worked remotely, while I was in the office every day. If I tried to carve out periods to write code where I ignored slack and text messages, my boss would call people in the office to interrupt me. If I put on headphones to isolate from the sound, people would come wave their hands in my face or tap me on the shoulder. When I explained that I needed periods where I was not interrupted, I was told by the director of software that I “didn’t understand how startups work” and that I was “acting like a girl”. I quit, and shortly after I quit the company went out of business.
- pokepim 4y ago[dead]
- tegiddrone 4y agoThat is levels of toxicity beyond too many interruptions ! Sorry you experienced that
- rowls66 4y agoI thought this was going to be about program performance and how to reduce the impact of interrupts and context switching on performance in your software. How disappointing.
- nomilk 4y agoFrom Paul Graham's Maker's Schedule, Manager's Schedule essay: > (programmers) generally prefer to use time in units of half a day at least. You can't write or program well in units of an hour. That's barely enough time to get started. > meetings are a disaster. A single meeting can blow a whole afternoon, by breaking it into two pieces each too small to do anything hard in. > I find one meeting can sometimes affect a whole day. > I know this may sound oversensitive, but ... don't your spirits rise at the thought of having an entire day free to work, with no appointments at all? Well, that means your spirits are correspondingly depressed when you don't. And ambitious projects are by definition close to the limits of your capacity. A small decrease in morale is enough to kill them off. http://www.paulgraham.com/makersschedule.html http://www.paulgraham.com/makersschedule.html
- Mizoguchi 4y agoOne of the perks of growing up in a huge family is that you learn how to work in an noisy environment while being constantly interrupted. Never occurred to me one day I will count that as a skill.
- wellanyway 4y agoThat would be an interesting study. Cross referencing self described irritation at interruptions to size of the family you grew up in.
- wruza 4y agoNot that I like to be interrupted, but if it’s inevitable, here is my method. I’m using it when interruptions are planned, when a task is complex by itself, at refactorings and on bad/lazy days. Log all your key thoughts, realizations, decisions and taken steps on paper. It shouldn’t be long or long-term clear, only clear to today’s you. Gibberish to a bystander. Text, bullets, arrows, acronyms, verbs, marks, anything that works. Lists, trees, graphs, outlines. It’s your L2 cache. L1 is fast but short and prone to distraction. If you log everything into L2, then returning to the task becomes much easier, because the whole context is right there. The downside is you have to spend time drawing. The unintuitive upside is that by writing you may make it clear to yourself what maybe wasn’t clear. IDE may be good at where you were, but it doesn’t know what you thought.
- askiiart 4y ago> It's your L2 cache. Stuff like this is why I love Hacker News. Rather than making up abstract, weird analogies between a thing, and another very abstract thing I find even more difficult to understand, we can make analogies to technical terms which most people here understand [citation needed], and which anyone who doesn't can easily look up.
- chinabot 4y agoHere's my method, tell anyone who interrupts you to "FUCK OFF" because your busy.
- jwestbury 4y agoThis method is bound to get you trapped as a junior engineer who will never be as effective as you could. Learn some people skills. Software exists for people.
- mrguyorama 4y agoMy department head has openly told us to do this. He knows a distracted engineer is a bad engineer. He knows that most meetings don't need all the people in them. He told us to block off parts of the day that we COULD NOT be interrupted, and told us to reject meetings that aren't productive or valuable. He is also encouraging people to shorten meetings. He told us that if a manager expects you to work outside your normal hours, that is a bad manager. "This will get you trapped as a junior" is just "All managers are terrible and we should never expect more". It's bad-manager apologism.
- metalrain 4y agoI feel like this cost is not as big as some say. Surely it takes time to collect your thoughts after conversation, but in my experience that is like 1-5 minutes. It is usually worth it. I really think there should be more communication at work, not less.
- wolfium3 4y agoDepends on person to person. For me it's on the order of ~20-30 minutes.
- theshrike79 4y agoYou really should quit your day job and start selling courses on focus if you really can drop down to a flow state in under 5 minutes and on purpose.
- metalrain 4y agoI think you don't need to have deep flow state to make progress at work. For me I think flow state is more about how interested I am about the task than how much time I have. And frankly many tasks at work aren't that interesting so even if I have half of day uninterrupted time, I don't get into flow state.
- theshrike79 4y agoEntering a flow state is a combination of multiple things IMO. The amount of challenge needs to be challenging enough for your skill level, not too easy (boring) or not too hard (can't flow because you get stuck). And (at least for me) I need to have the knowledge that I can focus on the task and not be interrupted. If I have a meeting in 30 minutes, there's exactly zero chance I'll enter a flow state because I'm expecting the meeting to start. And if I accidentally enter flow, I either work past the meeting or my flow is interrupted by a calendar alarm. Interruptions during flow state are really damaging (for me) because I'm juggling a huge amount of context and data in my head that's not yet exported to any external medium. If I get interrupted a large-ish segment of that data will disappear and I need to spend time gathering it after the interruption has passed.
- financypants 4y agoThe book “the myth of multitasking” is maybe worth a read, althought it’s a bit repetitive . It hammers home the point this article is trying to make where task switching costs are high and productivity nosedives with interruptions, and there really is no such thing as “multitasking,” but instead, just switching tasks quickly.
- firatsarlar 4y agoWhy did we ask ? Say I'm a programmer and looking at screen one hour, is it a crime ? Time management ? Resource management ? Do I have to sit that desk and be productive, and compete my friends? Is the context we perceive, all about resources, material ? Where is my mind ? I'm here, writing these, but where is my mind, where is my will, am I the person who I want to be ? Why I'm not best programmer of the world ? Is it about multi tasking, or will to be on that desk, or will to be in that person, me, myself, you, they ? Am I really here ? I would ask myself - I feel lucky - do I want to be on this desk ? I would ask my supervisor, I need to go out, I cant be here now ? Do we really love coding, or current state of business consume our love ? I left my job 20 years a go. I feel regret whenever I need some resources - say money, credibility, being a man, ... - But I still love coding. And I'm almost completely there when I code, "multi tasking", it just a thought since we started to see our brain like PUs. We are constantly multitasking, I can not name it like that but it is as it is. Our brain is not a PU.
- kazinator 4y agoYou're going to be interrupted, so you better learn to do it efficiently. Learn not to have some flow state that takes a half hour to get into. That flow state is bullshit. You get so absorbed into the work that you do stupid things a mile a minute. Sometimes it takes an interruption to get you to see it. Let's see, where was I. Ah I was doing that, for such and such reason, and ... wait what? That's stupid. Let's scrap 75% of it and do it in this better way ... If it takes a long time to get into flow states, it could indicate that you have some problem in the project. To be able to do anything, you have to boostrap various bits of information into your head, and keep juggling it. Then have it all vaporize upon interruption. Maybe there are better ways. Some tooling or documentation strategy, or automation of this or that. Try to have it so that someone with anterograde amnesia could use your environment to get stuff done.
- quickthrower2 4y agoThen you can only get trivial work done. Which is probably OK for most jobs to be honest. But imagine making design decisions in 10 minute chunks with less context than a ChatGPT prompt.
- RonnieOwnsLexus 4y agoa design decision would come from collaboration, sure you can get 1st draft ready in 10-15 mins then re iterate it 1 or 2 times to see all of its pro's and cons are visible to you but then you would need all stakeholder's time to get it through
- quickthrower2 4y agowhat about the bit where someone thinks?
- deleted 4y ago[deleted]
- threatripper 4y agoYou can usually work uninterrupted 18-22h.
- euroderf 4y agoHere's an idea. Buy the office some poker chips. Everybody gets a few and writes their initials on them in marker. (Maybe a manager gets a few more than his direct reports do.) Complexity values: White 1. Red 5. Blue 10. Grey 20. When you want to ask a question of someone who looks deep in flow, just lay the appropriate chip on their desk. They can glance at it and balance the complexity versus their mental/work state and decide to either engage at once or defer it. Maybe mumble an ETA. People will have to use the various chip values wisely if they want to be taken seriously.
- quickthrower2 4y agoIt is too late when the chip has gone down even if it is turned down, the person has been interrupted. I think having meetings on Friday might be better. You sprint Mon-Thu and sync up on Fridays.
- dijit 4y agoI don't remember where I read it, in a book or on HN or even if someone told it to me. But I learned that when requesting time or disruption: certain positions need specialised handling. An example: A receptionist does not necessarily need focus time, and is interrupt driven, so their work should not stretch to more than 5 minute intervals; if something takes more than 5 minutes it must be filed for someone else. A manager manages their time in 30 minute increments, anything that can't reasonably be done inside a meeting is unfortunately unlikely to happen. This is stupid, but it's unfortunately true; you might sometimes experience other situations but I think that's not the common case. A programmer (or, researcher, etc;etc) books time in half-day increments. If you must have a meeting with programmers, it's often better to book events in serial but only consume half a day. I've been practising this methodology for 8 or so months in my org and it does seem to hold true in the general case, there are some minor exceptions but most people do seem to he happy. EDIT: It was the "Makers Schedule" by PG; Serves me right not to read the comments[0] before commenting. [0]: https://news.ycombinator.com/item?id=35462780 https://news.ycombinator.com/item?id=35462780
- rtpg 4y agoI feel that this is extremely dismissive of the reality that other people do in fact have similar focus requirements, but simply have learned to take notes or otherwise deal with interruptions. There are more demand driven roles but probably every person you interface with on a day to day basis professionally has hard work to do. Sales copy? Focus. Figuring out some accounting discrepancy? Focus. Trying to actually plan out the next quarters projects in a decent way? Focus. Trying to find a good place for a year end party? Focus! The reality is that everyone has similar interruption issues, but understands the existence of needs beyond themselves when working on a team. Programmers are maybe special in the level of coddling gotten on this topic. Along with a dose of having people more likely to have general executive control issues. This mythologizing gets in the way of trying to tactically improve things. Real things programmers can do, such as take notes on paper, documenting ideas, writing exit/entry notes, and many other things people do to be able to come back into a project after interruptions. It’s very liberating to find workflows where you can actually get stuff done even in small increments, because you are not relying on this idea of doing a hard reset of your mind every time you switch tasks EDIT: to be clear, it’s good to let people work uninterrupted. Sometimes interruptions are needed because of working in a company where other people also have needs. This is true of many people working at a company, and so we should operate understanding interruptions exist and we are the same as other people.
- mike_hock 4y ago> git status There's my "session" that tells me which files I've been editing and > git diff what I've changed so far. Don't need an IDE for that.
- User_1 4y agoMy code is usually well documented because I write what I'm about to do before I do it... Because otherwise I know I'll probably be interrupted and forget (I also have a memory issue, don't tell anyone!)
- pif 4y agoThe article title correctly talks about a "programmer". But professional software development is much more than just programming, just as sales is much more than signing contracts. Sure, signing contracts is what every sale agent looks for, but their actual job is getting to sign a contract. And writing correct code is the goal of every software developer, but his true job is finding out what such code is supposed to do. Writing one more CRUD information system is just a part of the whole software development trade.
- negative_zero 4y agoOne of the most elegant ways I have heard "flow" explained was by an old colleague of mine. He called it "balancing the chandelier". Don't know if it's his thought originally or if he heard it some where but it always stuck with me. But yeah, sometimes find it almost violating in a way, especially when its that typical PM line "hey did you read my email?" (that was literally sent 10 seconds ago). It just feels like someone coming over to my desk and pushing, monitors, scopes, everything off and smashing it on the floor, then walking off. Now I have both unrealistic deadline AND a mess to clean up. I don't know where I'm going with this comment. Just venting I guess :)
- irajdeep 4y agotangentially similar idea: http://www.paulgraham.com/makersschedule.html http://www.paulgraham.com/makersschedule.html
- teddyh 4y agoDon't Wake Up the Programmer! https://alexthunder.livejournal.com/309815.html https://alexthunder.livejournal.com/309815.html
- theery 4y agoI don't doubt the cost of context switching. However I also think there's noticeable value in time-boxing. If I split my day into 3 chunks of two hours, with each block allotted to one task/project, I end the day with a feeling of having made more progress, and I do, because I sense the limited time, and therefore execute more efficiently.
- Torkel 4y agoReading through the comments here, and in the ton of similar threads on this subject, I feel I must be such an outlier... For me there are different tasks and different days. Some days I want uninterrupted flow. But some days I feel more productive by chopping it up with a few meetings and some office trash talk. A laugh every now and then, teasing a co-worker for screaming at his code - it gives energy to me. Talking through a problem or pausing for a while in a meeting and then returning to it - that can be a great way to see new things. Now don't get me wrong here, I am not saying meetings and distractions are good for everybody. But it's just that for me at least the picture is not as clear. Some days I feel I would have been more productive if I had had some meetings to distract me. Am I really the only one to feel this way?
- kjuulh 4y agoNot at all. I have exactly the same sentiment. I usually split my work-week in office and remote work. When I am in office I plan for having meetings with stakeholders, architecture/mob coding with my coworkers, etc. But when I am at home I can focus on the projects I need to execute on, fairly uninterrupted. It is not perfect and isn't quite as black and white as it may seem, and it is difficult to communicate that this is how you're working, but just doing it in my org has been pretty good. I probably have one of the more outreaching roles, some mix between an architect and devrel with a sprinkle of actual execution, so even if it is an outreach kind of role it actually works pretty well.
- catears 4y agoI have a similar feeling. For some work I need to focus, but the "why don't we scrap this idea for one that does the same thing in 1/10 the code"-moments have mostly been in and between meetings and office chatter.
- kjuulh 4y agoMy most imporant learning for my self is simply to not book meetings in the beginning of the day. It sets the tone for how I am working, and I have difficulties focus if I am in "meeting" mode. I have solved this in multiple ways, getting into work before others (not that early but just a few hours before our first planned meetings). Second, reaching an agreement with the team to push standup and such to after lunch. This basically gives me the entire morning free to focus and sets me off to a great start. That is for the days I am actually in office =D
- _448 4y agoI remember reading an article long time ago, written by an engineer in India. He became famous in India(or at least in my city, Pune, where he lived) for reverse engineering Windows NT. He along with his friends later on wrote the book "Undocumented Windows NT". He was promptly hired by Microsoft, and moved to the US. He later wrote an article on his experience working for Microsoft. One thing I vividly remember from that article was his experience the very first day at work. He observed that every engineer had a separate room. He was not used to this luxury. He was awed. During the day, he had a question on some aspect of the project he was assigned, and he immediately went to the next room where one of his colleagues was working. His colleague instead frowned and asked him to first send a meeting request, and then he will alot him a time. This surprised the new employee. He was not used to this way of "team work". He went back and sent a formal request and later there was a meeting to resolve the project issue. Afterwards, he enquired why engineers were kept separate in their own rooms? And why does one have to be so formal in requesting a meeting even to discuss project issues? It takes lot of time to resolve issues. Why this inefficiency? And the reply he got was, engineers when they are working, they get into a zone. It is very difficult to get into a zone, but very easy to get out of it even with a slightest distraction or interruption. Hence Microsoft provides separate rooms for engineers and meetings are available only when the engineer is free.
- magicloop 4y agoIt is the intensity of distraction that creates the gap for the serenity of concentration: - One way to "survive" is to logically separate the work into two different workflows. The "interrupt" workflow is where you are constantly doing trivial things, odd bits of admin, forms, chatting, and interacting in meetings. The trick is to deliberately cram as much of your interrupt-related work into the same half-day segment. The other workflow, the "deep work" workflow is where you do the design and complex coding work. You allocate such periods in 3 hour segments. For example you could do the morning in the interrupt workflow, the first part of the afternoon in the deep work workflow, and then end the day with interruptions.
- dghughes 4y agoI'm not a programmer but always tried to be one. Now in middle age I know I could have been one there's nothing amazing about it you just practice with guidance. Like playing a musical instrument very few people can play instantly unless they practice. Sure there are Mozarts but 99.999% of musicians are not. I went to school a few years ago and we had programming. I was able to do it but my younger classmates were better. A few were savants I think done in 5 minutes what it took the others an hour. For me I had to use white noise and earbuds. Even someone walking by on the other side of the row of desks would make me lose focus. I got tests done not all perfect, some half, some not at all. It gives me hope to know it's not just me.
- mtrower 4y agoWhile I don’t know how I feel about the word “savant”, I do seem to match your idea of the few, and in that regard I have two things to say here… * Interruptions affect me just as the article describes. I have my suspicions about those who claim to be unaffected. * Talent may indeed play a role, but what you probably aren’t seeing behind the apparent talent is the self-driven obsession. Behind those 5 minutes is a mountain of self-obtained experience. As I understand it, even Mozart was no different… Expanding on that slightly, when considering if I was special compared to the average individual: I self-taught myself from the age of 8, so yeah, probably something different about me that enabled that. On the other hand, I self-taught myself from the age of 8, spending nearly every free moment with computers. How messed up would it be if I didn’t end up with a massive lead over those just starting out? Of course it was effortless in 5 minutes: I’d already put in more effort by that point than many would in a lifetime… I guess the moral is, try to consider what it might be that you aren’t seeing.
- deleted 4y ago[deleted]
- tpoacher 4y agoFor me the worst part is how "let me check that email again for context" becomes a 2-minute exercise in 2FA juggling, at the end of which I've already forgotten what I opened my email for and need a coffee break just to calm my nerves.
- david422 4y agoTo login to anything now really feels like 5 factor.
- mrguyorama 4y agoI need 2fa just to log into my local machine!!!! Which actually makes it 3 factor: I need to know my password, have my macbook, and have my 2fa device.... and also know the password to that. Literally 4 factor?
- Karawebnetwork 4y agoThe worst for me is how the 2FA requires me to use my personal phone. That phone is filled to the brim with notifications from apps and games that were designed to be addictive. I avoid logging into anything because I know it will ruin my day. Before the era of mandatory 2FA the first thing I did when I arrived at the office was turn off my phone and lock it away.
- lynx23 4y agoUse a hardware token, then. They are not particularily expensive, and should free you from needing to look at your personal phone at work...
- nayuki 4y ago> The Law of Context Density: A larger context naturally emerges with a bigger screen real estate. This is so true. It's why I naturally feel dumber when I switch from a desktop computer to a laptop computer, and very stupid when working on a smartphone. I need my multiple tabs, big windows of text, etc. to get things done intelligently.
- rolph 4y agoThis comes to mind: https://heeris.id.au/2013/this-is-why-you-shouldnt-interrupt-a-programmer/[2013] https://heeris.id.au/2013/this-is-why-you-shouldnt-interrupt... https://heeris.id.au/trinkets/ProgrammerInterrupted.pdf[PDF] https://heeris.id.au/trinkets/ProgrammerInterrupted.pdf[PDF]
- reddit_clone 4y agoI use multiple mac desktops to somewhat mitigate this. In each desktop I have a Chrome Window open with required tabs (Jira, github other required tools). One Emacs Frame On iTerm2 window. I use Rectangle to quickly arranged windows. (I wish a tool existed that can recreate the desktops and all the windows exactly , after a reboot) Ofcourse, upon a reboot, need to set this all up again :-( Atleast Chrome remembers the windows/tabs and which desktops they belong to... That helps a lot.
- kvnnews 4y agoThe days I turn off email and chat are the most enjoyable. If I need to switch context i usually just write it down.
- adultSwim 4y agoI think we complain about this too much. Meetings and communication are work too.
- yoz-y 4y agoSeems like most projects end up so bloated that you need 20 minutes to get back to understanding what you were working on. I tend to avoid "clever" code as much as I can, so it is quite obvious what stuff does. Can get right back into it in matters of minutes.
- zevir 4y agoImportant topic! Totally agree that context switching has a heavier cost than most people realize. That's also why so many product/dev teams are optimizing for tools that improve dev productivity and collaboration. Here are a few other links that you might find interesting: https://livecycle.io/blogs/humanitec-dx-study/ https://livecycle.io/blogs/humanitec-dx-study/ https://livecycle.io/blogs/context-switch/ https://livecycle.io/blogs/context-switch/