Some weeks ago I started practicing pair programming with some co-workers for two reasons:

code some tasks of an user story

get familiar with a new software code base

I haven’t had an opportunity to put this technique in practice a lot before, but I can say it was extremely important and beneficial for the project. Sometimes I was the driver and sometimes I was the observer. The driver is the person who starts coding and the observer is who starts doing the code review. That point is important: code review.

Pair programming encourages the review of the code. Perhaps you won’t have an opportunity to refactor some code as you have when you are pairing with someone. I think code reviews are important because:

Reviews increase code quality, because there are 2 people thinking about the same task at the same time.

Refactoring areas arise in the design where improvements are needed

When you have the strong support of an IDE (as Eclipse), a lot of refactorings (extract method, extract class, introduce parameter, etcetera) are highly automated, it helps keep code clean and maintainable

More code is read than written, two people reading the code can understand a lot more about the code base