Pair programming is one of the most known Extreme Programming practices. In essence it means creating the code in pairs trying to get multiple perspectives on the code created. One of the participants, called driver, types the code and thinks about the low level details. Another one, called navigator, thinks about what the typed code is for. The participants periodically switch roles. The definition of "low level" depends on the skills of the concrete pair and their experience in the subject area. For example, when using test-driven development the driver might be focused on the writing the production code, while the navigator could be thinking about how the next unit test should look like in order to change the system architecture in the desired direction.
In my own practice I found that besides leading to better quality because of continuous code review, pair programming is a very efficient tool for rapid competence transfer and for synchronizing the people views on both the tasks and the solutions. Even if the team is not regularly doing par programming, pairing for some time in the beginning of the project or after the major decisions, helps aligning the team members understanding. Also being paired with the more experienced developer, typing under his governance and seeing which low level tricks he uses is a very efficient way to learn and align the team standards for coding.
Further links
- Wikipedia on pair programming - mostly focused on pros and cons lists
- ExtremeProgramming.org section -official, but not quite detailed description
- Pair programming on c2.com - extensive wiki article with many links to the detailed pair programming issues
- Pair programming related articles on Agile Alliance web-site
- Pair Programming Illuminated
by Laurie Williams. Features detailed instructions and explanations on the topic (non-affiliated link)
- The Costs and Benefits of Pair Programming (pdf) - comparative study by Alistair Cockburn and Laurie Williams
This page is a part of the Extreme Programming overview

Comments
Pair Programming Everywhere?
Still looking for some good guidelines or better yet, metrics on when to apply pair programming. I have an approach published at CtoToDevelopers
Post new comment