Pair programming is one of the agile engineering practices that developers give me the most pushback on (probably second only to TDD). Here are some of the reasons I give for why we pair program:
- progress (driver) and research (navigator) instead of progress or research (solo dev)
- may avoid the need for code reviews, which can be contentious
- second set of eyes, catches silly mistakes
- less thrashing between QA and dev and back
- less time wasted down rabbit holes, as navigators offer perspective
- less time wasted on non-work distractions
- keep each other honest on practices like code quality, TDD, checkins
- reduces a team's bus factor, a significant business risk for IT projects
I'd like to write more about some of these, but I'm not sure when I'll get to it.