So nobody calls it XP (Extreme Programming) anymore? This is one of the funniest things I've ever seen:http://www.globalnerdy.com/2008/08/28/pair-programming-chairs/
I've never been a fan of XP, but I've often thought about trying my own methodology, CC, Competitive Coding. The term might turn several people off right away, but it incorporates many things that people have complained about here. Instead of working side by side all day long, two people are assigned the same task and individually go off and try to solve it. Then, time is allocated after they are both done for them to get together, review each other's code, and finally combine the best of each together for the final product.
The size of each task should range between one and three days, depending on difficulty level and each programmers familiarity with the subject.
I'm not advocating this process as a way to "keep score" between two programmers and use that for raises or bonuses. My hope would be that each person is able to bring something to the table while at the same time be able to learn something from the other person. And as many of you have already commented, be able to do that learning at your own pace.
I feel that the end result would produce a better product in the same amount of time as any other methodology. In this case, I define time as the total time spent researching, developing, testing, and debugging. I feel that because two people are working on the same task, each of them will think about it slightly differently. One may think of a possible scenario where a bug could occur and write code to handle it, where the other person did not. And vice versa. Therefore, while it may take the two programmers longer to get to the testing and debugging phase, they will spend less time there.
This probably isn't for everyone. But the analogies I often draw are partners on the police force or sports teams. I think you could build real good comradery between some developers with this approach.