I've been doing pair programming for the last week and-a-half (in T-SQL). I've done pair design and code reviews before, but never tried true pair programming. It is pretty hard, let me tell you.
First, the good points. We finished in just over 2 days what was scheduled to be completed in 5 days. The quality is very high, things look good, and we know how to extend the base primer stored procs to accommodate future changes in required data. I was better at T-SQL programming than my partner was, and he was much more familiar with the business logic and data model than I (since I've been working on the project about 5 days total). He would explain what he was doing as he went along and I would ask questions if I did not understand something. In the beginning, I just stared back at him as he talked. I probably looked like I had an IQ of 20 (it's at least 25, honest!). But as time goes on, I am picking up a good understanding of what we are dealing with and how it all fits together much more quickly.
On the other hand, I contributed a lot of SQL knowledge and basic error-checking before we compiled and ran the procs (which, if we ran the entire set, took 20+ minutes), so this definitely sped things up. Also many times, my partner would be thinking 2 steps ahead of his typing, and would skip something that immediately jumped out at me because I just saw him do it 5 minutes ago. Time saver again! Plus, it seemed like there was something that helped about having to explain and defend yourself to another person. It forces you to be pretty darn sure of what you are saying.
Now, the bad. Many times it was very frustrating to have to "bring the other person along" when you were on a roll. All aboard! The train is leaving the station! You don't want to have to stop the train to pick up the late passenger. Another aggravating thing is when the other person does not use keyboard shortcuts! So many times I wanted to scream "Use the keyboard shortcuts!" (I bit my tongue instead, and I think it worked out better that way.)
On the whole, I think this was a very good experiment with some very good results. As we finish work on the critical base of this application and commence to writing easier report queries, I think we will split up. I will be able to write queries without having to bother my partner too much, and he can figure out how to fix SQL errors without asking me all the time.