This blog entry caught my eye on JavaBlogs, discussing whether Pair Programming is the “magic silver bullet” or not.
In my opinion, I believe there are real gains to be had from pair programming, however from my own informal experience it does improve code quality but at the cost of efficiency.
I think it takes a lot longer to produce the same piece of code with two heads as there is a lot of continuous discussion that takes place while the code is being written. That said, the interaction and discussion can produce better and more appropriate solutions to problems.
I think its a hard balance to get right and depends very much on the successful pairing and what you intend to gain from the pairing. For example, the less experienced developer paired with the more experienced developer can result in a valuable knowledge share and the less experienced developer picking up valuable skills. This is a definite benefit to the team. However if the pair consists of two more experienced developers, you might find that more time is wasted debating purely academic issues than actually producing code, at the cost of not having that second developer producing code of his own or helping with other less experienced developers.