12 ms·
Why You Shouldn't Interrupt a Programmer
- jenrzzz 13y agoMirror: http://heeris.id.au.nyud.net/2013/this-is-why-you-shouldnt-interrupt-a-programmer http://heeris.id.au.nyud.net/2013/this-is-why-you-shouldnt-i...
- tmikaeld 13y agohacker news effected the site
- jrgnsd 13y agoaffected?
- Ygg2 13y agoEh, no need to call in the Grammar Squad. Not to mention effect is correct here (effect means ‘to bring something about as a result’). Hacker News did bring something about as a result.
- libovness 13y agoRight, but it did not effect the site, it effected the site's downtime (the downtime is the result). I believe the usage is incorrect.
- tmikaeld 13y agoCorrect, i was just trying to be witty ;-)
- chris_mahan 13y agoAnd they were effectively affectionate in their response.
- jmmcd 13y agoGrammar Squad here with the facts. And just the facts. When effect is a verb, the object must be the change itself, similar to cause: "Hacker News effected a significant deterioration in site availability". With affect, the thing being changed is the object: "Hacker News affected the site."
- Ygg2 13y agoThanks for that input but HN is a casual site, not a uber professional one (i.e. place where most people look for jobs). I'm pretty sure we all know what it means.
- jmmcd 13y agoYes, everyone knows what it means. But if you make a claim like "effect is correct here" you are entering the debate, so don't call the debate off-topic when you lose.
- Ygg2 13y agoSadly I left that part out of the original claim. My apologies for perhaps sounding condescending. Correction was imo: a) correct (was proven false by you) b) unnecessary - pedantry is only OK in strictly professional context, which I don't consider HN to be. This was omitted from original claim by my error ( http://www.youtube.com/watch?v=J7E-aoXLZGY http://www.youtube.com/watch?v=J7E-aoXLZGY). I really meant to thank you for correcting me there i.e. "Thanks for that input". It might have came of as sarcastic, but was not my intention. There is nothing (of value) to win/lose in a debate. In fact losing debate is more enlightening.
- gaius 13y agoIn Iain M Banks (RIP) Culture novels, the remote manipulation technology is called the Effector.
- gngeal 13y agoAny chance this is related to the relevant biological/neurological/robotics terminology?
- gngeal 13y ago"Eh, no need to call in the Grammar Squad." Obviously, as this is in the purview of the Lexicology Squad, not the Grammar Squad. "Hacker News did bring something about as a result." Except that Hacker News did not bring about the existence of the linked site, which would be the actual meaning of "effected the site".
- deleted 13y ago[deleted]
- anaphor 13y agoTechnically our mental lexicon is part of what constitutes grammar (as understood by linguists).
- gngeal 13y agoCould you elaborate on that? Since that doesn't make too much sense to me. From what I know, the movement goes in the opposite direction: much of what was considered "grammar" in the past has been reinterpreted as a part of the lexicon, now that we actually have adequate technology to work with humongous corpora.
- anaphor 13y agoSure. Linguists consider grammar to basically be what a person knows in order to say they are a fluent speaker of their language, which includes understanding words in that language. More narrowly speaking, lexical information is tied to syntactic information because certain syntactic constraints are imposed by our lexicons.
- GrinningFool 13y agoThat's one of my favorite things about HN. People (typically) don't jump on top of the minor grammatical errors, typos, and misusages that pretty much everyone who doesn't triple-check their posts is inclined to make. Unless they're particularly egregious, they're generally ignored and the content of the post is focused on instead.
- ohwp 13y agoThis is also why you shouldn't interrupt yourself ;) Turn off your e-mail client, phone, messages, internet connection, HN.
- option_greek 13y agoIMHO, while working on challenging tasks (bugs mostly) where we are not able to figure out something, tiny breaks spent on unrelated subjects seem to help a lot. While interruptions are bad, a badly timed interruptions seem to be the worst.
- Narretz 13y agoIt sometimes happens to me on my way home. I let my mind wander and briefly come back to a problem, often seeing it from an angle I haven't considered during the day.
- shiftb 13y agoRich Hickey (creator of Clojure) advocates 'Hammock Driven Development.' Let your background mind do the hard work for you. Link: http://www.youtube.com/watch?v=f84n5oFoZBc http://www.youtube.com/watch?v=f84n5oFoZBc
- colomon 13y agoFor me, the best sort of tiny break is reading a good book for a page or two. I think maybe because the two contexts are so distinct?
- sateesh 13y agoIn my experience tiny breaks away from the workstation are far more helpful than the ones that need you to use the computer. I have found taking a break from a programming session in form of checking HN, twitter makes the mind all more muddled.
- gbog 13y agoYes, let's grab a cigarette... or a coke, or a coffee. But all these circuit breakers are bad for health. The best I found out for now is to add hot water to my tea mug.
- tmikaeld 13y agohttp://i.imgur.com/xvNRKIT.png http://i.imgur.com/xvNRKIT.png
- aw3c2 13y agoI downvoted you before I realise you just provided a copy of the actual post. Please include some context next time and not just dump an imgur link.
- lignuist 13y agoSo you downvoted something that you did not even look at?
- Cthulhu_ 13y agoWell, links are always better with context or a title. Same with youtube links - I frequently don't click them when there is no context or any clue about the contents. And in youtube's case, it could be a rick roll.
- acdx 13y agoAnything but a rick roll!
- bdg 13y agoA post that expresses little thought should be down-voted. The post in question is of value since the original link 503'd, but that value is obfuscated to some by the lack of a quick "Here's a mirror" explanation. Is this really a big deal?
- ygra 13y agoBack when I first tried opening the page it 503ed and there was just one page of comments, one of them was this image link. Its purpose was fairly clear, actually. And helpful.
- teddyh 13y agoReminds me of this: Don't Wake Up the Programmer! http://alexthunder.livejournal.com/309815.html http://alexthunder.livejournal.com/309815.html
- Spoygg 13y agoExcellent :)
- calineczka 13y agoOnce upon a time I was working with a very challenging legacy code and I was building similar constructions in my mind. The office was sometimes noisy and chance of interruption was not that small. So I established a habit of writing kind of stack trace of my own thoughts so that I could easily come back to my state of mind after such thing. It looked like: There is a bug in module X Module is X is calling module Y when user is not yet activated We are creating user subscription We are using current subscription in subscription creation Current subscription is A when user is not activated Current subscription is B when user is activated Probably bug in method c() Think what is going to happen in situation M when changed the implementation to d(). The list sometimes had 12 elements that I was trying to fit in my head to find the solution to the problem. I now work remotely from home (quiet and all that) and most of the code that I work on is of much better quality (another company, better practices) but I still sometimes resort to this method when working on a complicated piece of code that is unfamiliar to me.
- civild 13y agoI have endless TextEdit files strewn around my hard disk with very similar contents, I need to hoover them up every now and again. It's really useful to type something out like this, even just to map the problem out in your mind.
- aidos 13y agoI have one file - currently 12,000 lines long :)
- gbog 13y agoI found it useful to start writing an email to some people concerned. I usually start with "it don't work", then because I don't want to look stupid I explain a bit what doesn't work, I feel the need to explain my thought about why do I don't look like unimaginative, and then I write down how I would check if I'm right, because I don't want to look like I'm not scientific, then I just try the test because I'm not supposed to be lazy, and then usually I trash the email because I found the bug.
- kineticfocus 13y agolol... the current page works as a punchline just as well: Service Temporarily Unavailable The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.
- ozh 13y agoWill show this to the wife. She has a hard time understanding why working on week-end projects by 45 minute chucks isn't effective as I need 20 minutes to get in the zone and restart my thoughts where I left them
- gbog 13y agoThere is one nice way to push oneself in the zone faster: just open a broken test in your test suite, it will point you to the next step. [edited to clarify]
- keyle 13y agoI quite often leave my code broken so that next time I open the solution I know exactly where I left off. I will often leave a comment there or throw("get X to do Y now")
- jtheory 13y agoI do this as well -- once I have the complete solution to something in my head, I quickly go through the various parts of the codebase that will be affected and drop pseudo-code or even just rapid notes in each place -- which will intentionally break the compilation, so that I can use the compiler errors as a fast & direct way to pick up the threads again if I'm interrupted. For non-compiled code I'll add a dozen line breaks and a note in all-caps to make it jump out in a diff.
- gbog 13y agoGreat but using tests is better, because written correctly you will keep them and they will check forever that the thing is working
- rmc 13y agoI often leave code unchecked in at the end of the day. So the next time I can just "git diff" to see where I was working on.
- tmikaeld 13y agoSomeone put it on 9gag http://9gag.com/gag/av0z0Bn http://9gag.com/gag/av0z0Bn
- stef25 13y agoWhenever I try to explain this to interrupting colleagues / bosses I always get rolling eyes and "here he goes again", frustrating as hell.
- hkmurakami 13y agoThis is why I haven't been able to bring this up in my new environment (school). I know that people won't get it, and I just have a strong desire to avoid the admonishment :(
- djKianoosh 13y agokeep fighting the good fight :) eventually they'll learn, and the next programmer/creative/etc that has to deal with them will benefit. thank you in advance :)
- deleted 13y ago[deleted]
- jmadsen 13y agoThe problem is, the only people who ever read these are other programmer who already know this. Need to find places where we can post it to NON-programmers
- boothead 13y agoI just put it on facebook. Now awaiting a torrent of abuse :-)
- hkmurakami 13y agoI'm currently back in school in a non-programmer environment, and I honestly have a hard time bringing this sort of this up to most people I know here because I just know that they won't understand why this is so important and I just don't want to deal with the interpersonal mess :( :(
- mhurron 13y agoApparently programmers are the only people who think about problems. You poor little unique flower. Write it down. It will be clearer to you. You can more easily refer back to it. You will be interrupted. You will need to do other things before you finish your current grand opus. You will lose your place in your own thoughts just by trying to hold it all in your head the whole time.
- icebraining 13y agoYou're right, though your post would be better without mocking people. I don't have an habit of writing stuff down, but I know I really should. That said, a couple hours of interruption-free work doesn't seem an extravagant request.
- jimbokun 13y agoMaybe just print this out and put it up next to your workspace. Never know who might read it and stop to think, without having any sort of confrontation.
- praptak 13y ago
- jseban 13y agoThis is also why you should use pen and paper and not try to keep everything in your head?
- kristiandupont 13y agoWell isn't that sort of like saying you should keep your documents on your harddrive instead of in RAM? Writing/drawing is fine but the actual processing can only take place in the head :-)
- jpatte 13y agoThe main problem of pen+paper is it's only 2D. Modeling an entire process may require a lot more than 2 dimensions, so trying to put it in 2D is actually harder than modeling it freely in your head.
- tempestn 13y agoExactly. And much slower as well. Obviously if you expect to be interrupted you can take the time to download your brain onto paper, but trying to do all your work on paper would be like running your CPU through a printer->scanner loop-back.
- eadlam 13y agoProfessor Manuel Blum has this to say: STUDYING: You are all computer scientists. You know what FINITE AUTOMATA can do. You know what TURING MACHINES can do. For example, Finite Automata can add but not multiply. Turing Machines can compute any computable function. Turing machines are incredibly more powerful than Finite Automata. Yet the only difference between a FA and a TM is that the TM, unlike the FA, has paper and pencil. Think about it. It tells you something about the power of writing. Without writing, you are reduced to a finite automaton. With writing you have the extraordinary power of a Turing machine. http://www.cs.cmu.edu/~mblum/research/pdf/grad.html http://www.cs.cmu.edu/~mblum/research/pdf/grad.html
- n3rdy 13y agoIf were that simple then why wouldn't we just type it into our programming environment instead?
- lotsofcows 13y agoNeeds a clock in the background to hammer home the point to non-programmers that it can take an hour to get from the 1st to the 6th panel. Bosses take note: an hours work has disappeared.
- goshx 13y agoI agree
- nmeofthestate 13y agoThis scenario is a bit optimistic. I made a cartoon depicting my open plan office experience: http://imgur.com/fsv1cCq http://imgur.com/fsv1cCq
- amag 13y agoThanks, that made me actually LOL and create a HN account just to upvote.
- switch007 13y agoThat's so accurate! The penultimate one should be putting on ear phones, then the last one showing someone coming over to your desk and interrupting :P
- mesozoic 13y agoVery true. At the last place I worked I found I couldn't usually do any programming until after 5pm when others left, so I got a good couple of hours after that get programming done.
- bdg 13y agoThis was a huge contributor to why I left my last job. Employers: take note.
- cburgmer 13y agoI disagree with what I think this picture implies. That is shielding the developer from interaction makes him/her more productive. In contrary, interruption and conversation belong to development. The more my fellow developer colleagues talk, the better the code base is.
- ygra 13y agoMy colleague (the one who talks the most) talks mainly about what has happened at his home, in his life, with his car, with his cat, with his child, ... I doubt there is an inherent code quality benefit in those topics.
- pwelch 13y agoYes and no. Yes, talking can help bring a lot of people to a solution easier. Taking a coffee break and chatting with a co-worker about your current problem or pairing with another set of eyes is often vary helpful. However, when you are really focused on a complicated problem it is hard to find a solution when your thought process is constantly interrupted.
- shortlived 13y agoYes but it has to be at a time chosen by the programmer. There are natural stopping points when working on hard problems.
- brianfryer 13y agoThere needs to be a distinct separation of Exploration mode and Implementation mode. This comic depicts a programmer in the latter mode where "collaboration" can be detrimental. Exploration mode is crucial to the development workflow. It's a space where there isn't "right" or "wrong" and creatively constructive conversations can occur. You're absolutely right that conversation belongs in development. But only at the right time for the highest effectiveness.
- umrashrf 13y agoI can't access the page.
- jipumarino 13y agoI got a 503 error and for a moment I thought it was very insightful.
- deleted 13y ago[deleted]
- waylandsmithers 13y agoI don't mean to be a downer, and I certainly enjoyed this comic, but I fear that these are the kinds of posts that lead to communities becoming nothing more than memes and other quick laughs on reddit.
- moccajoghurt 13y agoWell this was very specific programming related joke. If they stay like that and only pop up once in a while, it's fine. Just enjoy the joke and stop worrying.
- wiremine 13y agoThis is great! It articulates what most of us programmers feel internally when we're interrupted. What's I'd also love to see is a cartoon explaining the external effect of an interruption. Like, when you interrupt a programmer you're pulling the "stop" cord on an assembly line: it doesn't just effect that individual, but there is a net effect on the overall effort. (FWIW, I don't think the assembly line is a good example, because programmers work in parallel, not in sequence, but it's the best sort-of-example I could think of on a Monday morning...)
- jimbokun 13y agoI liken programmers to extremely expensive equipment for manufacturing software. When a company invests in expensive equipment like that, it is very important to keep it producing output. So by sending programmers to meetings, your expensive equipment is sitting idle, offline, producing nothing. Interruptions are like shutting down an entire assembly line. When you turn it in again, it will take time to be running smoothly again. So to the managers and executives, it is your choice how to utilize this highly specialized, very expensive equipment. You can try to keep it running at full capacity, or frequently start it up and shut it down, take it offline, and leave it sitting idle.
- gbog 13y agoYes but no, because producing code is never smooth, or smooth code production is exactly the characteristic of these coding sessions you can interrupt without great loss.
- jimbokun 13y agoI agree this is the weakest part of the analogy, as software production is so highly variable. You can have days where you see very little come out of the machine, then a great amount of valuable software come out, seemingly all at once. I think, though, it does not invalidate the basic point of keeping the software producers on the task of software production as much as possible in order to maximize output.
- kalhank 13y agoOne client I worked for had a "heads down Thursday", where no one was allowed to schedule anyone in the app dev department for meetings; general consensus was that Thursday's were by far the most productive day of the week
- eru 13y agoMeetings' Thursday might be even more productive. (Ie nobody is allowed to schedule anything on any of the other days.)
- rix0r 13y agoTo my mind, the cartoon is more of a depiction why you should avoid mutable state and non-local effects.
- colanderman 13y agoOr moreover, why you shouldn't write parsers/lexers by hand.
- zenlikethat 13y agoHaha - I agree.
- bmelton 13y agoWorth noting, but this article is also a plaintiff cry for why programmers need to write better comments, too. Edit: I meant plaintive, but my eyes were still crusty with sleep, and I am a giant dummy.
- ChristianMarks 13y agoWho is the defendant?
- bmelton 13y agoGah. S'what I get for posting before coffee. It should read "plaintive".
- jtheory 13y agoThis isn't applicable to only programmers, of course; my wife is a novelist -- there are a lot of high-level concerns that she needs to balance in her head PLUS there's the fiddly nature of creative flow, and it all comes crashing down all too easily. I had creative aspirations when I was younger (writing and music in particular), and came to programming because it's far more predictable; the costs of interruption are bad, but interruptions can be avoided, and the difficulties can be mitigated (e.g., I take notes for anything complicated, and re-read them when restarting a task; I break compilation as a to-do list, and/or use version control for non-compiling code). Flow is really important, but I generally know how to do it -- get enough sleep, clear away overhanging stress clouds (like "taxes are due soon"), eat well, break tasks down, get the smallest possible thing working, iterate, and so on). But creative work killed me -- it was so painful to do iteratively; I'd spend 8 hours "writing" a poem that actually didn't coalesce until the 7.5 hour point, at 4am. Composing a bad first draft of anything left me feeling horrible; I never managed to force my way through that as long as I was trying to make it "what I did". Now that I do something else primarily, I can noodle around creatively and get much more joy out of it -- but those years left me with much more respect for people doing more creatively-oriented mental work than I do.
- eru 13y agoLook up writer's discipline. `Creativity' is not too different from coding. > - get enough sleep, clear away overhanging stress clouds (like "taxes are due soon"), eat well, break tasks down, get the smallest possible thing working, iterate, and so on). That's great for writing a novel, too.
- lazyant 13y agoyes, see Daily Rituals: How Artists Work http://www.amazon.ca/Daily-Rituals-How-Artists-Work-ebook/dp/B009Y4I4OM/ http://www.amazon.ca/Daily-Rituals-How-Artists-Work-ebook/dp...
- jtheory 13y agoIt's not that these things don't help creatives, but that they are not reliably sufficient to produce something of value. If I'm coding on an uninspired day, I can easily just shift to tasks that I know are simpler, and create a perfectly workable (if boring) solution. I can work my way through to finding even fairly subtle bugs just by stepping through the logic; it's slower than a flash of insight, but it works. A writer or other creative person with high standards must discard all of that uninspired work. In theory it may help keep the ideas churning, but for most writers I know it can be a frustrating grind when things just aren't quite clicking. It certainly helps to "train the muse" by writing every day at the same time, always filling the page (even with nonsense if that's all you can produce), and so on, but at the end of the day, they can't say "well, this is a shitty story, but it'll pay the bills". It won't. There's also the psychological difficulty that comes with putting sometimes years of work into something that may actually have no monetary value, or minimal. There are obvious parallels to building a startup, except that novels that succeed can't naturally be built into sustaining income -- you have to start another novel, and it can easily earn you nothing after 5 years of work.
- SworDsy 13y agoIt's still funny that now it's a down
- niravshah 13y agoThis is why programmers (and everyone doing deep analysis/critical thinking) get a huge benefit from taking notes.
- LeSeb 13y agoBeing a programer on trading floor, this happens all the time ...
- rsobers 13y agoMy only qualm with this comic is that it doesn't end in a fit of rage. :-)
- djKianoosh 13y agoA lot of the commentary places importance on getting stuff done in a single day... I think sometimes we overlook that really strong problems require many days of active/passive thought. Soooo, sometimes interruptions are good!
- known 13y agoWriting software != Selling software You need mutually EXCLUSIVE skills.
- NAFV_P 13y agoLet's face it, coders can't multi-task. Fortunately, computers can do all that for you.
- bradwestness 13y agoHumans can't multi-task.
- NAFV_P 13y agoIt's a myth invented by (sociopathic) business gurus. It holds as much H2O as "soggy biscuit".
- mhartl 13y agoPeople can't multitask, at least not nearly as well as they think: http://www.npr.org/blogs/health/2013/01/24/170160105/if-you-think-youre-good-at-multitasking-you-probably-arent http://www.npr.org/blogs/health/2013/01/24/170160105/if-you-...
- steven777400 13y agoEvery month, I produce a "time usage" pie chart for one of my managers for the month. At one point, he said: "You need to spend less time in meetings." So I told him I'd be happy to oblige if he wouldn't schedule me in as many. He was shocked and said most of the meetings must be from my other manager (who's a real hands-off kind of guy). So I broke out the details and showed him that the vast, vast majority of my "meetings" time was scheduled by him. He didn't bring it up again, but also continued to schedule me in as many meetings as before... So I guess that's a decision. :)
- brudgers 13y agoObviously, he wouldn't schedule a meeting if he didn't think it was important. I suspect there is a correlation between managers who believe their meetings are important and managers who believe that an hourly breakdown of a direct report's work tasks is a more meaningful metric than the direct report's work output.
- strickjb9 13y agoI showed this to my wife and she didn't get it right away. I explained it to her then she said 'Does this mean I need to go?' because we were gchat'ing and I was working at the time (aka waiting for Eclipse to respond). I regrettably told her that we need to wrap it up.
- Pxtl 13y agoThis is also why, as a programmer, it's essential that you manage and handle your email. If you're not available by mail in a vaguely timely fashion, you're going to get people learn to workaround your deficiency by chasing you down in-person or over voice.
- andy_adams 13y agoWow, this bit of wisdom is unbelievably valuable in my experience. The number of programmers who have thousands of unread messages in their inbox has always startled me. So many of them don't respond in a timely manner via email, which earns them the title of 'flake', and opens them up to phone calls and other interruptions.
- CGamesPlay 13y agoI've always been the type that is aggressive about filtering emails that need my attention/response and ignoring those that don't, but I never made the connection to failure to do so causing more in-person interruptions. This is very valuable advice to anyone at a large company (or who has to interact with users/customers).
- deleted 13y ago[deleted]
- Delmania 13y agoUnit tests can go a long way to helping both gain and retain understanding of what a codebase does. Context switching topics is an important life skill. A work place that's free from distractions would be good, but that's not always possible.
- SubuSS 13y agoLate comment but: I look at it as a necessary evil. I usually solve it by having a note of the intermediate understandings / thought process on OneNote when I am debugging something deep. It probably takes 2 minutes to get back on the train when disturbed. Yes - I do debug production systems / file system level issues / Storage level issues etc. And yes I am a senior engineer who keeps getting walkin / IM requests. The flip side of saying no to meetings/walk ups is that the senior won't be doing a good job of unblocking the team. It is a huge waste to leave a bunch of junior engineers solving the same issues that you had solved years ago. Mentoring takes a hit and morale takes a dive in that case.
- tieTYT 13y agoAs a test I sent it to a non-technical friend. She said, "I don't understand". In other words, this only makes sense if you're a programmer. I feel the cartoon's pain, but I can't send this to a manager to help them understand.
- tluyben2 13y agoFor me this image shows why there is something deeply wrong with programming at this moment in time; the fact you need to do all those assertions/logical operations in your head instead of the super computer standing in front of you (which is much faster in most those operations anyway) is painful to see. By clicking that line, the IDE should generate all that context (and graphs/charts/whatever) for you in a jiffy instead of you doing that in your head.
- jdbernard 13y agoSure, if you are content with the way the compiler lays out the information. Personally, I am far more efficient with vim and a CLI than Visual Studio/Eclipse/$FancyIDE precisely because I can live in my head and not in the IDE. The day we can replace the mental process required to fully understand a problem is the day we can put down our keyboards and let the computers do all the programming for us. Until then I assert that you will not produce the same quality of code without doing the hard work in your own head.
- tluyben2 13y agoI'm looking forward to that day anyway. And I agree to some extend with you as you say 'doing the hard work in your head', I just don't think all the hard work should be done there. Just the hardest work computers cannot do for you. I work with vim only because I don't think IDE's contribute much at the moment. I believe they should be able to contribute a lot more. I'm just not sure how that is supposed to look, but luckily smarter people than me are working on that :)
- elwell 13y agoThe number of upvotes is indicative of a common thread of frustration felt by programmers.
- gouggoug 13y agoHow ironic is it that when I clicked on "Why You Shouldn't Interrupt a Programmer" I got a 503