| ▲ | karmakaze 5 days 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 4 days ago | parent | next [-] |
| If only I wouldn’t prefer stabbing myself in the leg with a rusty knife over pair programming. |
| |
| ▲ | jiggawatts 4 days ago | parent | next [-] | | 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. | | |
| ▲ | pydry 4 days ago | parent | next [-] | | 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 4 days ago | parent [-] | | It's funny because it starts to be (an application you could just install) - AI agents could work as pair programming buddies. |
| |
| ▲ | kaffekaka 4 days ago | parent | prev [-] | | 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 4 days ago | parent [-] | | 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. |
|
| |
| ▲ | dylan604 4 days ago | parent | prev | next [-] | | 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 4 days ago | parent | next [-] | | 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 4 days ago | parent | prev | next [-] | | 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. | | |
| ▲ | EagnaIonat 4 days ago | parent | next [-] | | There is evidence that two people on the keyboard can increase productivity. https://www.youtube.com/watch?v=kl6rsi7BEtk | | | |
| ▲ | stevetron 4 days ago | parent | prev | next [-] | | 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 4 days ago | parent [-] | | I do this, but with a second monitor and second machine, and then we use git to synchronize our work | | |
| ▲ | tstenner 3 days ago | parent [-] | | With VS Code and IntelliJ you can even do it in the same documents at the same time |
|
| |
| ▲ | bn-l 4 days ago | parent | prev | next [-] | | Damn I wish I had a relationship with someone like that. | |
| ▲ | karmakaze 4 days ago | parent | prev | next [-] | | 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. | |
| ▲ | ustad 4 days ago | parent | prev | next [-] | | Can you say more about your setup? Does it require extra hardware/software? | | |
| ▲ | kmoser 4 days ago | parent [-] | | We're just using TeamViewer. I connect remotely to my colleague's computer while they are sitting in front of their keyboard. |
| |
| ▲ | Waterluvian 4 days ago | parent | prev | next [-] | | 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 4 days ago | parent | prev [-] | | 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. |
| |
| ▲ | globular-toast 4 days ago | parent | prev | next [-] | | 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. | |
| ▲ | saagarjha 4 days ago | parent | prev | next [-] | | I find that working with people who are smarter than I am helps a lot with this. | | |
| ▲ | karmakaze 3 days ago | parent [-] | | It 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. |
| |
| ▲ | glxxyz 4 days ago | parent | prev | next [-] | | "no the other one, down a bit, no the one above, no go back..." | | | |
| ▲ | exe34 4 days ago | parent | prev [-] | | 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. |
| |
| ▲ | atoav 4 days ago | parent | prev | next [-] | | 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. | |
| ▲ | cosmic_cheese 4 days ago | parent | prev | next [-] | | I think the only thing that might be more frustrating is if my modifier keys rotated at random intervals. | | |
| ▲ | karmakaze 4 days ago | parent [-] | | 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 4 days ago | parent | prev | next [-] | | I suspect that this would also lead to interruptions having almost no effect on your productivity. | | | |
| ▲ | andrei_says_ 4 days ago | parent | prev | next [-] | | 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 days ago | parent | next [-] | | 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 4 days ago | parent | prev [-] | | 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. |
| |
| ▲ | motbus3 4 days ago | parent | prev | next [-] | | 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 4 days ago | parent | prev | next [-] | | Just wait till you learn about "mobbing"… You can feel the money being lit on fire. | | | |
| ▲ | bapak 4 days ago | parent | prev [-] | | I pair program every day, my colleague is called Claude. Like you, I'm allergic to meat co-programmers. |
|
|
| ▲ | dakiol 4 days ago | parent | prev | next [-] |
| 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 4 days ago | parent [-] | | 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 4 days ago | parent [-] | | 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 4 days ago | parent [-] | | no I have the voice but I can either explain or do, not both. | | |
| ▲ | karmakaze 4 days ago | parent [-] | | Maybe 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. | | |
| ▲ | bluecheese452 4 days ago | parent [-] | | This feels a bit no true scotsman. | | |
| ▲ | karmakaze 3 days ago | parent | next [-] | | Perhaps it is, but I'm not really going to entertain someone saying they tried it and it didn't work, when all they did was work their own screens/keyboards sitting side-by-side (or remote) each with their own ideas and not really sharing in the process, except to interrupt and annoy each other. | |
| ▲ | exe34 4 days ago | parent | prev [-] | | no I actually get it, I think like most fads, it seems to work great for really trivial things or for debugging. I have myself used pair programming in those cases. I just can't imagine using it for serious work. navigating/explaining? I know neither the science I'm trying to code nor the code I'm trying to write - I'll write code to explore the data, I'll have a hunch, I'll wonder about something and I'll go find that one paper I came across 10 years ago to check - I don't see what code the other would be writing while I'm trying to figure that stuff out. I'm sure it works great for yet another CRUD. | | |
| ▲ | 3 days ago | parent | next [-] | | [deleted] | |
| ▲ | karmakaze 3 days ago | parent | prev [-] | | Totally agree. I wouldn't say it's well suited for research or research-heavy work. In those cases, I'll do research on my own and reconvene later or another day. |
|
|
|
|
|
|
|
|
| ▲ | steve1977 4 days ago | parent | prev | next [-] |
| I guess pair programming would also
minimize my interruption cost, but only because productivity would be close to zero to begin with. |
|
| ▲ | mnky9800n 4 days ago | parent | prev | next [-] |
| 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 4 days ago | parent | prev | next [-] |
| Might have to do with the social pressure to (mutually) focus on the peer that speeds up getting back on the original focus. |
|
| ▲ | dapperdrake 4 days ago | parent | prev | next [-] |
| Same here. |
|
| ▲ | mettamage 4 days ago | parent | prev | next [-] |
| How can you find a startup with a pair programming culture? |
| |
| ▲ | lazyasciiart 4 days ago | parent | next [-] | | They’ll tell you. | | |
| ▲ | karmakaze 4 days ago | parent [-] | | 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 4 days ago | parent | prev [-] | | Join a startup. If they don't do pair programming, quit. |
|
|
| ▲ | wordpad 4 days ago | parent | prev [-] |
| Have you tried giving your AI productivity tool a personality so it can guilt trip you the same way? |
| |
| ▲ | karmakaze 4 days ago | parent [-] | | 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. |
|