How Pair Programming Really Works
computer.org
computer.org
Please don't do things to make titles stand out, like using uppercase or exclamation points, or adding a parenthetical remark saying how great an article is. It's implicit in submitting something that you think it's important.
http://ycombinator.com/newsguidelines.html
EDIT: That said, good read.
Regarding the Expert Programmer Theory: I find it rare that my pair and I get 'stuck'. Rather, discussion at the early stages of implementing a plan head off any decisions that will end up with us being stuck.
That said, the times I usually find my pair and I getting stuck is in the naming of concepts within the domain. At this time, polling those developers around us helps out enormously.
Regarding 'change blindness': This is where I find some of the most value from pairing. I find that I get (and give) a lot of value in the catching of minor logic errors, changed method or variable names, and simple typos.
The person not typing spots bugs a lot better than the person at the keyboard, and having someone to bounce designs off of means you don't head down the wrong path with them.
Typically in a large project, Alice and Bob work independently but make different assumptions and have to rework a significant amount of their code when they finally get together to integrate their two parts.
In my experience, large teams can shrink calendar schedule time by brute forcing the dependency failures. The trade-off to achieve schedule compression is substantial inefficiencies and often a loss of quality and maintainability. I am convinced that a lot of schedule slippage in large projects is due to incorrect assumptions with respect to the independence of the pieces. While it is possible to compress the schedule this way, all schedule compression that exceeds the true parallelism in the project requires exponentially increasing effort to overcome the inefficiencies due to the coupling.
This is behind Brook's Law http://en.wikipedia.org/wiki/Brookss_law "2. Communication overheads increase as the number of people increases." Communication overhead is the indication of coupling of the pieces. If Alice and Bob's pieces were truly independent, they would not need to communicate and Brook's Law would not apply.
The physical analogy to the effort required to shrink calendar time is the "hull speed" of boats. http://en.wikipedia.org/wiki/Hull_speed and http://en.wikipedia.org/wiki/Wave_making_resistance. While it is possible to "escape your bow and stern waves" (i.e plane), it takes an exponential amount of power to do so. (The first wikipedia page links to another nice explanation: http://www.antrimdesign.com/articles/hullspeed.html.)