Pair programming is a central element in Extreme Programming (XP) and its correct practice dramatically improves software quality. The technique is however quite difficult to master, and not doing it properly will not only be frustrating for the developers but also a waste of the company resources. This talk introduces different approaches to the technique and shows the audience how to avoid the common pitfalls that developers will encounter in their path to effective pair programming.
In this presentation, I will cover the principles underneath the technique's productivity gains and why it increases the amount of error-free code over solo programming [Williams, L., 2006] without spending more resources. I will also show how its practice reduces the team bus factor, and how pair rotation distributes information, effectively eliminating knowledge islands in the team.
Different developers have different experience levels and personalities. I will talk about different combinations and how to overcome these mismatches to enable the pair to become greater than the sum of its parts, thus producing software of greater quality and maintainability. I will cover the classical XP driver/navigator roles but also tag-teams [Bryant, S. et al., 2008] and less formal approaches.
Pair programming is a challenging practice, and though it is not a novelty, it is still surrounded by many misconceptions. I will step through DO's and DON'ts based on both documented and my own grounded experience on the topic, how it tightly fits other agile development practices such as Test Driven Development, and what to expect when introducing this technique in a team.
Author: Iván Stepaniuk