4 ms·
I've found one thing that minimizes interruption cost: pair programming. At one startup we pair programmed all day, every day. Resuming from an interruption was
by karmakaze 1y ago
I've found one thing that minimizes interruption cost: pair programming. At one startup we pair programmed all day, every day. Resuming from an interruption was almost seamless. Can't explain it, only experienced it.
- SoftTalker 1y agoIf only I wouldn’t prefer stabbing myself in the leg with a rusty knife over pair programming.
- dylan604 1y agoI've never done official pair programming, but I get frustrated when I'm not on the keyboard as I find others think slower.
- glxxyz 1y ago"no the other one, down a bit, no the one above, no go back..."
- airtonix 1y agoup up up up ... you went too far....
- Dilettante_ 1y agoThis is why you need to learn vim commands /hj
- mrbombastic 1y agoCalling out explicit line numbers and zoom annotation tools help with this
- kmoser 1y agoHave you tried plugging in a second keyboard and taking over where necessary? I do a lot of remote work in which my colleague and I work on the same computer and it's quite useful for either of us to jump in with our own keyboard (and mouse). It does take a bit of occasional verbal negotiation to agree on who really knows what to do (and can do it fastest) but if you communicate well then it's pretty easy.
- ustad 1y agoCan you say more about your setup? Does it require extra hardware/software?
- kmoser 1y agoWe're just using TeamViewer. I connect remotely to my colleague's computer while they are sitting in front of their keyboard.
- arresin 1y agoDamn I wish I had a relationship with someone like that.
- karmakaze 1y agoRight I only call using the same computer pair programming. Now working remote (with Tuple app) it's still two keyboards/mice on one computer (sometimes mine, sometimes theirs), though it's infrequent for specific tasks.
- Waterluvian 1y agoThe wildest thing I experienced once was this experimental “two cursors, two highlights, two clipboards” setup. I badly wish that had caught on. It was like Google Docs but Local Multiplayer.
- nine_k 1y agoOne of my previous employers, Dynaboard, built approximately that. The Show HN post: https://news.ycombinator.com/item?id=30261598 https://news.ycombinator.com/item?id=30261598
- karmakaze 1y agoI usually prefer to be navigator than driver. It's the navigator that does the high level thinking. The one at the keyboard is the one who's usually better at typing and writing out the design patterns that are agreed upon. Of course we did swap roles routinely, maybe several times a day. Oh and to top it off we switched pairing partners every week or two. It was a brutal experiment but I learned a lot and I'd say it was a great success.
- saagarjha 1y agoI find that working with people who are smarter than I am helps a lot with this.
- karmakaze 1y agoIt works both ways. Even for the 'smarter' person, they have to form their ideas clearly in order to communicate it to be understood. By themselves they could just start writing random classes that feel like they might be part of the solution and get themselves in corners more often.
- exe34 1y agofor me it's not that I think faster, it's just that I will check 10 things really fast and exclude the "no it can't be there" things - because that's usually where it is. So if somebody else is holding the mouse and keyboard, I would then have to convince them that these things that they are convinced are fine need checking. I really hate this work of convincing them, because it's much faster to check it first and explain why it was a good idea later once I've fixed the problem.
- globular-toast 1y agoI find the less dominant person just switches off, stops thinking and just becomes a keyboard with about 20x the latency and 10% the speed and accuracy.
- SJMG 1y agoJust wait till you learn about "mobbing"… You can feel the money being lit on fire.
- Our_Benefactors 1y agoThis fad died out along with 0% money.
- exe34 1y agoit's like 9 women giving birth to a whole baby in just one month.
- cosmic_cheese 1y agoI think the only thing that might be more frustrating is if my modifier keys rotated at random intervals.
- karmakaze 1y agoFunny you should mention it. I have different computers with different keyboard layouts--including for some reason[0] modifier keys on only the left side being different on one. [0] That's the gaming PC I play StarCraft 2 on and I found it simpler to always leave it in one mode than switching back and forth.
- CGamesPlay 1y agoI suspect that this would also lead to interruptions having almost no effect on your productivity.
- wiseowise 1y agoBecause it would be in the gutter in the first place?
- jiggawatts 1y agoWhen pair programming was a fad in the early 2000s, I tried it with a coworker for a security-critical piece of code that needed two pairs of eyes on it. It felt horrendously unproductive to have two people at one keyboard but we compared commit rates and the surprising result was that we produced the same rate of changes as working separately.
- kaffekaka 1y agoDoes this mean you as a pair were as productive as both of you individuals combined? Or that the pair was as productive as one individual? Pair programming is twice as expensive so it needs to be twice a productive (quality, LOC, whatever) to make sense I guess.
- jiggawatts 1y agoTwo of us at one keyboard were as productive as the two of us separately combined. I figured this was because typically while one person was coding the other would be researching. If you’re by yourself those are serial activities instead of parallel and the total workload is the same.
- pydry 1y agoI find it is slightly slower (maybe 20%) than two individuals alone but the quality is quite a bit higher and the effect of this higher quality compounds over time (i.e. less tech debt -> fewer bugs, faster development on future code). Im quite credulous of Kent Beck's claim that when categorizing the last ~15 bugs on a project with pairs and singles he found that all 15 were in code merged by an individual rather than a pair. If it were an application you could just install I think everybody would use it. It demands psychological safety though, which most teams dont have, and is becoming less common these days.
- tgaj 1y agoIt's funny because it starts to be (an application you could just install) - AI agents could work as pair programming buddies.
- atoav 1y agoI one had quite good experiences with it, but the roles were very clear: he was the domain expert who knew how things should be handled and I was the person knowing the code and the processes. This way I didn't have to come up with potentially wrong handling of edge cases and he didn't have to mash his head against code he doesn't understand.
- motbus3 1y agoWhen I was on my 2x I wanted to do more programming. Now I just I want to me f let alone to finish my job
- bapak 1y agoI pair program every day, my colleague is called Claude. Like you, I'm allergic to meat co-programmers.
- andrei_says_ 1y agoI’ve done pair programming for a short amount of time and found it stimulating and productive. What specifically makes it painful for you?
- kelnos 1y agoNo the person you've replied to, but for me I just find it frustrating. When I'm not the one typing, I always find the other person moving slower than I can think, not entirely getting what I want to tell them ("no, line 47, not 53 -- no, the foobar function call isn't the problem, it's the 4th argument to barbaz... no no, no that one... GAH). Maybe we can chalk this up to "communication problems", and I should have taken a pause to talk about communication with my pair partner. I dunno. I've just always felt much less productive with someone else there. I don't view programming as a social or collaborative activity. Building software can be collaborative, but when I'm sitting down to do implementation, collaboration slows me down, and I find it very frustrating and unproductive.
- phil21 1y agoDepends on what exactly you mean by pair programming. Two people sharing the same keyboard and screen and watching the other type is horror movie level stuff to me. I go from a competent typist at 140wpm or so, remembering at least some basic syntax, knowing the most common editor shortcuts etc. to a blubbering idiot 5 year old. Sharing an office where you can’t look at each others screen unless you walk over to help troubleshoot or design a specific feature is probably my favorite mode of work by far. Especially if it’s a small hyper-competent team with a diverse set of expertise but basic generalist knowledge to navigate the entire design at a high level. Being able to jump on a whiteboard with zero latency mid-debugging session (even trying to move to a spare conference room) is also great. This also lets you devise team communication in a way where you can signal you are in focus mode vs not and others can gauge the importance of their ask based on that signal and knowing precisely what everyone is actually working on that day. That said, the absolute worst possible way to collaborate is video conferencing and shared screens. Give me a shoulder hoverer over that any day.
- mettamage 1y agoHow can you find a startup with a pair programming culture?
- yablak 1y agoJoin a startup. If they don't do pair programming, quit.
- lazyasciiart 1y agoThey’ll tell you.
- karmakaze 1y agoSo true. I interviewed at one where a half day was spent pair-programming with one of the team's devs doing TDD: write a test, make it green, refactor.
- wordpad 1y agoHave you tried giving your AI productivity tool a personality so it can guilt trip you the same way?
- karmakaze 1y agoThat's an interesting idea, adding an AI so it could be you pair programming with a colleague remotely over Tuple, a truple. Seriously though it would take out the frustration and flow-breaking pauses while interacting with an LLM.
- steve1977 1y agoI guess pair programming would also minimize my interruption cost, but only because productivity would be close to zero to begin with.
- mnky9800n 1y agoI bet also interruptions were less likely since you seemed busy because you were interacting with each other. Therefore others may think before interruption.
- dakiol 1y agoPair programming exhausts me. When I write code alone, I usually have breaks every 20 minutes or so. I go for a short walk after 1h. I look out of the window every now and then. Sometimes I put some background music. When I’m doin pair programming I’m supposed to: think out loud, look at the screen 100% of the time, sit in front of the screen for at least 1h straight. Think at the same speed than my peer. Not worth it for me. Don’t care if we together are more productive; I couldn’t care less. I care more about my eye sight, and sitting routine.
- dalmo3 1y agoI can sit and program 16 hours straight without breaks. I cannot talk to someone else for an hour without feeling exhausted and needing a long break afterwards. Talking to someone else while programming? It's revving up my brain into the red zone. Sometimes the adrenaline boost does its job but I do pay the price.
- jack_riminton 1y agoSame. It seems the coding part of my brain and the communicating are mutually exclusive I wonder if it’s related to the phenomena of some people having a ‘narrator’ in their head or, like me, there’s no voice and it takes effort to convert abstract thoughts to sentences
- exe34 1y agono I have the voice but I can either explain or do, not both.
- karmakaze 1y agoMaybe this is a misconception or misrepresentation of pair-programming, at least compared to my experience. One person isn't supposed to be doing both. You're either navigating/explaining or driving/doing. Pair programming isn't about one person doing everything and another person watching and trying to keep up. It's about communicating and sharing an understanding, like a realtime/interactive PR description/review while writing. Of course there are times where one person will simply say "let me write this out and discuss after" and go at it for a short while, but it should be the exception rather than the rule in settings where it worked best for me.
- dapperdrake 1y agoSame here.
- jll29 1y agoMight have to do with the social pressure to (mutually) focus on the peer that speeds up getting back on the original focus.