Comment by karmakaze

Comment by karmakaze a day ago

61 replies

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 a day ago

If only I wouldn’t prefer stabbing myself in the leg with a rusty knife over pair programming.

  • dylan604 a day ago

    I've never done official pair programming, but I get frustrated when I'm not on the keyboard as I find others think slower.

    • karmakaze a day ago

      I 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.

    • kmoser a day ago

      Have 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.

      • stevetron 13 hours ago

        What about an editor that is designed for multiple people to edit the same document? Tie the second keyboard, the second mouse, and a second cursor as resources together and independently edit?

        • el_benhameen 10 hours ago

          I do this, but with a second monitor and second machine, and then we use git to synchronize our work

      • bn-l a day ago

        Damn I wish I had a relationship with someone like that.

      • ustad 21 hours ago

        Can you say more about your setup? Does it require extra hardware/software?

        • kmoser 7 hours ago

          We're just using TeamViewer. I connect remotely to my colleague's computer while they are sitting in front of their keyboard.

      • karmakaze a day ago

        Right 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 21 hours ago

        The 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.

      • godelski 8 hours ago

        Just a reminder for everyone, you can do this with tmux. So you could even just sit next to each other (or not) and be on your own machines.

    • saagarjha a day ago

      I find that working with people who are smarter than I am helps a lot with this.

    • globular-toast 11 hours ago

      I 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.

    • glxxyz a day ago

      "no the other one, down a bit, no the one above, no go back..."

      • mrbombastic 11 hours ago

        Calling out explicit line numbers and zoom annotation tools help with this

    • exe34 12 hours ago

      for 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.

  • cosmic_cheese a day ago

    I think the only thing that might be more frustrating is if my modifier keys rotated at random intervals.

    • karmakaze a day ago

      Funny 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 a day ago

    I suspect that this would also lead to interruptions having almost no effect on your productivity.

    • wiseowise 19 hours ago

      Because it would be in the gutter in the first place?

  • jiggawatts a day ago

    When 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 20 hours ago

      Does 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 19 hours ago

        Two 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 19 hours ago

      I 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 11 hours ago

        It's funny because it starts to be (an application you could just install) - AI agents could work as pair programming buddies.

  • andrei_says_ 11 hours ago

    I’ve done pair programming for a short amount of time and found it stimulating and productive.

    What specifically makes it painful for you?

    • phil21 4 hours ago

      Depends 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.

    • kelnos 8 hours ago

      No 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.

  • atoav 19 hours ago

    I 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 19 hours ago

    When 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

  • SJMG a day ago

    Just wait till you learn about "mobbing"… You can feel the money being lit on fire.

    • exe34 12 hours ago

      it's like 9 women giving birth to a whole baby in just one month.

  • bapak 16 hours ago

    I pair program every day, my colleague is called Claude. Like you, I'm allergic to meat co-programmers.

dakiol 18 hours ago

Pair 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 17 hours ago

    I 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 12 hours ago

      Same. 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 12 hours ago

        no I have the voice but I can either explain or do, not both.

steve1977 21 hours ago

I guess pair programming would also minimize my interruption cost, but only because productivity would be close to zero to begin with.

mnky9800n 19 hours ago

I bet also interruptions were less likely since you seemed busy because you were interacting with each other. Therefore others may think before interruption.

jll29 5 hours ago

Might have to do with the social pressure to (mutually) focus on the peer that speeds up getting back on the original focus.

mettamage a day ago

How can you find a startup with a pair programming culture?

  • lazyasciiart a day ago

    They’ll tell you.

    • karmakaze a day ago

      So 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.

  • yablak a day ago

    Join a startup. If they don't do pair programming, quit.

wordpad a day ago

Have you tried giving your AI productivity tool a personality so it can guilt trip you the same way?

  • karmakaze a day ago

    That'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.