Benefits of Pair Programming
by Paul Hodgetts, Agile Logic Founder & CEO
I've worked with a number of teams that have a heavy resistance to pair programming. The resistence is typically justified using the argument that it seems like a waste of resources to have two people work on one task. I'm not one to dictate what practices a team should adopt (although I'm not afraid to share my somewhat strong opinions ;-), but I suggest considering these potential benefits of pair programming before deciding not to adopt it:
- Multiple sources of problem solving input avoids most instances of getting stuck.
- Multiple sources of problem solving input provides more solutions from which to choose.
- Partner can add element of parallelism (e.g., look up API method while pair compiles code).
- Partner continuously reviews work products for correctness, conformance to standards, etc.
- Partner continuously reviews process for conformance.
- Continuous review increases odds of catching mistakes, misunderstandings early.
- Continuous review reduces odds of lengthy pursuits of incorrect or inappropriate solutions.
- Allows sources of specialty knowledge to rotate and be available to more situations.
- Cross-training occurs at an accelerated rate (proportional to frequency of pair rotation).
- Mentoring occurs at an accelerated rate (proportional to distribution of pair partners).
- Decreases risk that individual developer mistakes will damage significant parts of the system.
- Reduces dependencies of specific individuals to parts of the system or technologies.
- Increased overall involvement enables higher degree of team self-management.
- Increases social interaction, camaraderie among team members.
- Common goals of pairs facilitates team building.
- Common successes shared by pairs increases team accomplishment.
- Increased sharing of responsibilities facilitates team culture evolution.
- Partner provides motivation to stay continuously engaged.
- Natural "competition" encourages higher performance levels.
- Partner provides sanity check for knowing when to take breaks or stop for the day.
- Reduces the need for expensive development workstations by half.