Had a chance to closely observe a session once. Looked through the code later--total garbage.
Apparently it works for some, but you couldn't pay me to do it.
(Also, seems unfair to programmers that can't hear well or need other accommodations.)
It is also a great training tool. Can’t tell you how many times I’ve had junior engineers ask me about something that I thought was common knowledge or wouldn’t have thought to mention cause I thought it was trivial.
It’s a tool in your toolbox. Don’t use it on every problem.
That's pair programming, except the modal dialog box is a smelly human looking over your shoulder.
Some of my best and most important projects have started out as terrible diversions that after a while even I begin to wonder if I shouldn't be doing it.
Frequent peer review and collaboration on important architectural decisions is sufficient. Sitting down and actually writing code together is unnecessary torture.
Imagine some legendary coder like Linus Torvalds or John Carmack writing the Linux Kernel or the Quake engine side by side with another dude at their keyboard all day every day. It's a fucking absurd and infantile concept.
- Interacting with people is exhausting for me. I can't imagine having to be in constant communication with someone sitting right next to me, 7-8 hours a day, every workday.
- Writing software requires deep concentration, and the constant interaction seems like it would destroy the required concentration.
- Having to put everything I'm thinking into words, waiting for a reply, constantly being atuned to social niceties -- how can that be compatible with doing productive work? (Not in general, but for me.) I may stare at the screen for a while, trying to figure something out. A number of ideas go through my head. I run through a bunch of approaches quickly: that's stupid, that can't work, that might work, that's idiotic, ... I go back and reconsider the better ideas in more detail, ... First of all, I am reacting to incompletely formulated thoughts. Forcing those thoughts to be more formulated, to the point that I can describe them, definitely changes the way I would work. Maybe for the better, but definitely different. Second of all, saying "that's idiotic" to a coworker probably isn't a good idea.
In general, pair programming seems like it would take an extremely absorbing and enjoyable actvity, and turn it into torture. For me.
I read a New Yorker (I think) article about how Jeff Dean and Sanjay Ghemawat work together. They seem to do pair programming extremely successfully. Good for them. I have no doubt that it works well for some people. I am quite sure I'm not one of them.
What I did at first was as you describe - chasing down lines of thought quickly, then saying what I thought the answer was. Then I learned to vocalise it through practice. And if I need a moment to think, I can just say "gimme a sec to think" or "can I take a break?" and that's all it takes.