Pair programming cannot solve everything
Until now, I have rather praised pair programming. But like any tool and any practice, there are situations where pair programming won't work or solve anything. Let's look at some usual situations.
Unclear requirements
There's a saying in software development: junk in, junk out. When you have unclear requirements, the obvious pain is not improving your production tools or practices, such as learning how to use pair programming. And pair programming will not help at all with unclear requirements.
The alternative is to have good, high-quality requirements. But be careful: we don't need to get back to waterfall and linger for 1-2 years just to document everything. When talking about high-quality requirements, there needs to be a fine balance that we can define as the simplest, shortest requirement so that the team can get to work immediately, without asking for clarifications.
So, this concept of clear requirements...