Ha. I dislike pair programming as much as anyone, but this argument is really weak. It doesn't sound like he has actually had much experience of it, and is just judging it from the outside.
But let's go through some points:
>Since we are employing two programmers to do work on the same keyboard at the same time, the output of pair programming must be greater than 2x the output of a single programmer to make sense.
In "output" you have to include quality (fewer bugs), improved codebase knowledge (bus factors etc), improved team cohesion etc.
> Pair programmers tend to give feedback that's more appropriate in a design or code review.
What's his evidence? Why is it more appropriate there (after the code is written) than here (before/during)?
> For the pairs that follow this, the only feedback that's left tends to be bikeshedding or stylistic, both of which kill velocity.
That's, um, bullshit. Pair programming can pick up mistakes before they propagate, which increases velocity.
> It's like having a backseat driver.
I'd say it's more like having a second pair of eyes while you're doing a tricky reversing maneuver.
> Alternatives like code reviews, design reviews, and general documentation are much better 1-to-n ways to share knowledge instead of 1-to-1.
Aren't code reviews and design reviews 1-to-1 as well? Or worse, n-to-1.
> In addition, most of these alternatives be done asynchronously.
And this is better, because...?