When PairProgramming, switch pairs regularly. Don't work as fixed partners.
An ExtremeProgrammingBestPractice - monogamous pairs are just soloing in disguise. Your team cannot work fast unless anyone could solo on any module at any time, and you get that by frequently rotating your situations. One partner stays on task, and the other breaks up the pair working on the task they know the least about. The longer you stay on a task, and the more you know about it, the more pressure you should feel to give someone else a turn on it.
I first experienced this during XP Immersion V, where one of the mentors had to come by every hour or two to make us rotate pairs.
By the third iteration, we found that rotating pairs happened quite naturally and as often as every 10 minutes. Typically, a pair would find themselves needing knowledge possessed by one of the other programmers. One of that pair would swap with the knowledgeable programmer, right then.
It was strange to sit down in a seat and say, "Ok, what are we doing here?" It was remarkable to me how well it worked. I never would have guessed that this behavior would emerge on its own, and that it would work so well. It turned out that the cost of "coming up to speed" after switching seats was not very much. The value of a fresh pair of eyes always seemed to be greater than the cost of switching. -- WayneConradAnd never underestimate the value of guiltlessly abandoning some sick problem you were just stuck on! --PhlIp
This concept should make VirtualPairProgramming easier where partners may be different at different times, and far away. That and SelfDocumentingCode.