But I think a high percentage of people replying to @dhh here have a wrong idea of what pair programming is.
I've done it for 8 years straight and now I rarely pair.
Here's my personal experience.
[thread]
I was a consultant, dev and tech lead at @thoughtworks for 8 years. Pair programming is the default for TW teams, including client people.
Teams have freedom to tune the practice to what works best for them, here's how my teams did most of the time:
Sure, that are some activities that don't benefit much from pairing, but the overhead of discussing on a case by case basis was just not worth it. So we paired on everything except when it was obvious that we shouldn't pair, which rarely happened.
Pair programming is exhausting and frequent breaks are necessary. We used the breaks to rest, get coffee, chat to other people, do personal stuff, etc
That would give us about 80% of the time pair programming and, with the context switching, about 4 or 5 hours of productive focused work.
How frequent would be different for every team/project but I think every 2 days was what worked better most of the time.
This means that every 2 days I would work with a different person and/or on a different user story/task.
Personal preferences would sneak in and the overhead of discussing was just too high.
We loosely switched from driver-navigator to ping-pong to whatever according to necessity or mood.
The import thing was to switch often.
And this how I feel about it:
It can feel like people watching over your shoulder, just awful. I think it happens when the pair is on a teacher/student mood and not a "working together" mood.
I still get nervous and sweaty in those situations.
It’s incompatible with the music-on-headphone habit, of course.
It demands all your "people skills”. Requires more maturity and less ego.
But as any other skill, it gets better with time and practice.
There’s no better way to share knowledge: the tech, tools, tricks & shortcuts and the business/domain.
You get live feedback on your code - no need to wait for review or no need to review at all!
The work belongs to the team, not to the individuals.
This means it is a great investment for growing people.
Personally, it is more comfortable.
But I thing it would make the team multiple times more effective and would tremendously benefit the organization.