When I first read Kent Beck’s book on XP back in the late 90s I could be heard muttering, “he’s right”, … “he’s right”, … “he’s right”. However, as soon as I hit the bit on Pair-Programming it just felt wrong to me. My objections are selfish but here they are:
: I do not want a mosquito muttering in my ear as I write code
: I want to think at my own pace so that I can understand what I am doing
: I do not want someone else to lean over my shoulder as I work
Basically it is all selfish stuff about how I work best. For me best is a low interrupt rate and time to think about what I am doing. PP gets in the way of this by disrupting the way I think and not allowing me to soak an idea up until I can understand it.
I have done some PP work and the tasks I found it really suitable are exploratory ones where no-one has an idea about how to do something. However, the same effect could be achieved by jaw-jawing in front of a black/whiteboard.
I have worked with someone that believes the complete opposite of what I have written above. We get on well but we do not agree on this point. Having said that, he is great to work with on PP.
I work with someone else that is totally awful at PP. He slinks off 15m into a PP session to do “something more useful”. He thinks it a waste of time and does not participate at all. Of course he is a bit of an AA [http://www.joelonsoftware.com/articles/fog0000000018.html] and appears to think of pairing as beneath him.
For PP to work you need co-workers to agree to do it and you also need to believe that it is a good idea.
Frankly, I think PP is a bad idea for complicated tasks for which someone needs to think a lot. Individuals do not think at the same rate, nor do they usually work the same way. PP does not take individuality into account.
Having said that, PP can be a good way of brainstorming awkward tasks.
The trick is to choose the correct tool (i.e. PP, Whiteboarding, solo programming) for the task at hand.
Experience has taught me that SP combined with whiteboarding often works out better for most things. YMMV.