Pair Programming
Also Known As
- Buddy Programming
- Collaborative Coding
- Collective Code Ownership (in Extreme Programming)
- Cross-Functional Teams (in Lean Software Development)
- Joint Programming
- Mob Programming
- Pairing
Related
Addresses / Mitigates
- Coordination Risk: Enhances collaboration and coordination between developers.
- Internal Model Risk: Facilitates knowledge sharing and learning.
- Implementation Risk: More eyeballs means fewer bugs and a better implementation
- Reliability Risk: More developers may be able to produce a more reliable implementation.
Attendant Risks
- Coordination Risk: Requires coordination around time, place, activity and skills.
- Schedule Risk: Can slow down individual productivity, impacting overall schedule.
- Agency Risk: Staff might not like working in this arrangement.
Used By
- Extreme Programming: XP encourages two developers working together at one workstation, which improves code quality and facilitates knowledge sharing.
- Lean Software Development: Lean encourages collaboration through cross-functional teams.
Description
"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." - Pair programming, Wikipedia
Pair Programming involves two developers working together on the same code. One developer writes the code while the other reviews each line in real-time, providing instant feedback and suggestions. This practice not only improves code quality but also facilitates knowledge sharing and collaboration between team members.
Variations
| Pairing Style | Description | Reference |
|---|---|---|
| Driver-Navigator | One developer writes code (driver) while the other reviews and guides (navigator). | Pair Programming, Wikipedia |
| Ping-Pong Pairing | Developers alternate writing tests and implementation code in a TDD style. | Ping Pong Pair Programming |
| Mob Programming | The entire team works together on a single task at one computer. | Mob Programming, Wikipedia |
See also: Crisis Mode
Used By
Extreme Programming
An Agile software development methodology that emphasizes customer satisfaction, teamwork, and frequent delivery of small, functional software increments.
Why: XP encourages two developers working together at one workstation, which improves code quality and facilitates knowledge sharing.
- Collective Code Ownership
Lean Software Development
An Agile software development methodology that emphasizes eliminating waste, building quality in, creating knowledge, deferring commitment, delivering fast, respecting people, and optimizing the whole.
Why: Lean encourages collaboration through cross-functional teams.
- Cross-Functional Teams