Pair programming is an agile software development technique in which two programmers work together at one workstation. One, the driver, writes code while the other, the observer or navigator, reviews each line of code as it is typed in. The two programmers switch roles frequently.
Programmers working in pairs usually produce shorter programs, with better designs and fewer bugs, than programmers working alone.
Studies have found reduction in defect rates of 15% to 50%, varying depending on programmer experience and task complexity.
Knowledge passes between pair programmers as they work. They share knowledge of the specifics of the system, and they pick up programming techniques from each other.
Additional benefits reported include increased morale and greater confidence in the correctness of the code.
Paired programmers are only 15% slower than two independent individual programmers, but produce 15% fewer bugs. Since testing and debugging are usually many times more costly than initial programming, this is an impressive result.