When pair programming, two developers sit at the same computer and work together on the same problem. One will type, while the other observes, but both are equally responsible for the software they produce. It’s a cost effective way to produce high quality code, and is commonly practiced by agile teams.
It’s normally referred to simply as "pairing".
Pairing is not the easiest thing to do well. At least, not the first time you try. There are plenty of simple techniques you can use to make pairing go smoothly, both on screen and off screen.
I've found that the most important thing is to be considerate of your partner. More on that below...
In the past I've written about how important it is to be a considerate driver while you have control of the keyboard, and how navigators can become better communicators. What else can you do to improve your pairing?
Have you ever noticed how tiring a full day of pair programming can be? I used to pair for 7-8 hours a day with a guy called Nigel. Almost without fail, we'd both be absolutely knackered by 4.15 in the afternoon. This is a post about why, and what you can do about it.
When you're working in an agile pair and have control of the keyboard (known as "driving"), remember that your pair is almost always reading something on the screen, and it might not be the same thing that you're looking at. There's no need to piss on their parade...