It works really well, but it is exhausting, and difficult to sell.
IM notification from an old teammate pops up complaining about my boss? Seen.
Switch to a window with my personal email and they can see that thing I just bought or that recruiter I've been talking to? Seen.
I type a stupid thing that will never work? In the 5-30 seconds before I realize it, seen.
It doesn't matter if I trust my pair. That's not how the brain works.
That's not how your brain works. Me neither. I can't go longer than a few minutes tandem coding without going nuts. It's tortuous. I don't think like other people; I come at things backward or circle around and it drives other people nuts, too. Plus just the presence of other people is exhausting, and I can't even think. I don't code to produce software, I code to learn and explore. Same as with most things I do. (Probably ADHD related.) But clearly it works for some people.
8 hours a day pairing means that pairing is the default, but it’s not the only thing that ever happens.
also: 8 hours/day pairing meant 16 hours/day not working at all in my case. Really really really not working. Not checking Slack. Not trying out some crazy idea. Not working at all.
Definitely not good for long running work and chasing bugs.
My understanding is that there is no one person saying what's next but what's next gets decided by both people. Otherwise, the other person is just a typist.
There have been (extensive) discussions on this topic here [1]. I don't seem to be alone in the inability to think clearly with interruptions.
this takes time to learn of course. and individuals handle this differently. i to can't handle interruptions, but when i am focusing a piece of code, and my partner telling me or asking me something about that same piece of code, then for me that's not an interruption. interruptions are notifications and being asked to change the focus on something different. that should not happen when pair programming.
another aspect not mentioned yet, when there is an actual interruption from the outside, one of the people in the pair can handle that interruption, while the other continues to focus. the interrupted one can then jump back in much faster than you would if you were interrupted while alone.
As the many examples in that discussion show, this is your subjective experience, with others build different than you.
To me, those two sentences side by side are in complete contradiction with how I experience the world, where the knowledge of a persons attention is distracting, like a glaring light.
But, for learning a new language/framework/codebase, I think it would work very well. The quickest, and most enjoyable, "ramp ups" I've ever experienced were just sitting next to someone and bouncing questions off of them as I explored.
That is literally what most people hate about it.
I'd also hate it with every cell of my body, but for some it's just another way of life.
> a world of stress and overstimulation
yeah so I think the thing here is that one of these is an objective outcome of pairing, and the other one is a personal preference. Which is a valid preference, but it does nothing to refute the fact that pair programming is a great solution for the issues laid out in the article.
I don't particularly like writing tests, but that doesn't stop me from doing so. I think we should think about pair programming like we think about tests: a necessary part of the process, and something most companies don't do enough.
It scales fine to 400+ engineers. You do have to be willing to hire specifically for pairing tolerance.
I think these proponents of AI have a very large burden on them to not just make this palatable for developers, but to actually make it "scale" as you say.
The human code review process for AI generated code will simply die due to lack of interest. Its up to the organization to find a suitable replacement or continue to pretend that half asleep disinterested developers are going to fix all this trash.
Have fun with that!
4 hours of pair programming per day can therefore possibly be enough to make up for the increased loss of performance in the rest of the day.
I suspect this is a simple social anxiety you could train away.
I spent a few weeks in the cave and it was surprisingly chill, not nearly as oppressive as it sounds. (Although, I was much more energetic a decade ago and maybe it wouldn't be quite as fun these days :-P.) I still have a picture of my madness-induced, Git hook–infested scribblings....
[0] The team's usual room was an open floor plan, which was fine with good headphones, but naturally that solution doesn't work for pair programming.
Pair programming once in a while can be incredibly valuable. I am glad to meet with anyone and talk over their code in person, brainstorm designs, run through a debugger together investigating it.
But if you asked me to do that for most of an 8 hour day - much less most of the time in general - I would quit the job faster than you could fill out the paperwork. Constantly having someone looking over your shoulder is a world of stress and overstimulation that I (and I suspect many others) will not stand for.