Technology and Art
Pair programming effectiveness seems to be a mixed bag, based on a survey of multiple studies in the paper The effectiveness of pair programming: A meta-analysis.
The key takeaway is this:
If you do not know the seniority or skill levels of your programmers, but do have a feeling for task complexity, then employ pair programming either when task complexity is low and time is of the essence, or when task complexity is high and correctness is important.
This is further reinforced in another meta-analysis paper The true cost of Pair Programming: Development of a comprehensive model and test, some of whose conclusions we quote verbatim below.
For situations where system complexity is high, it states:
…pair programming is a good choice when system complexity is high. In high complexity projects, pair programming reduces programming effort, improves quality, and reduces overall labor cost compared to solo.
Regarding tradeoffs in high-pressure market situations, it has this to say.
…solo is a good choice when the market pressure is high. Solos are faster than all pairs except in one situation: pairs with prior pair programming experience in a high complexity project.
Regarding the effects on quality, the level of experience is a factor which comes into play in pair programming, as paraphrased below.
The paper states as its final conclusion:
As we combine all the factors and consider the overall project cost, the senior-senior pair was found to be the most cost effective among the three.
Stuff Stuff Stuff