Over the last couple of years, I’ve done a lot of pair programming. Pair programming inside my team, at customer sites, in coding dojos and in my open source projects.
Pair programming is really a great and effective experience when performed by an pair of developers knowing how to pair program.
Unfortunately, you cannot just put two developers in front of a single computer and expect them to perform perfectly from the start. Pair programming has to be learned. Both developers need to learn the difference between being the driver (the one holding the keyboard) and the navigator.
During my pair programming sessions I encountered some recurrent stereotypes, which I list in this post.