In driver–navigator pair programming, the navigator reviews code as it is written while the driver operates the shared workstation. The navigator spots glaring flaws, unclear logic, vague names, and missed edge cases, while discussing difficult problems and sharing context with the driver. section 11.0
Make the role collaborative rather than controlling:
- Keep both developers engaged by communicating constantly and switching driver and navigator roles often. section 11.0
- Choose the style and duration to suit the pair, task, and team; begin with a small task or an hour-long trial. section 11.2.2
- Protect the navigator’s focus with a readable shared display, accessible peripherals, and a workspace that limits distractions. section 11.2.3
Reviewing a sorting filter
While the driver adds a sorting filter to a Table component, the navigator asks which edge cases are expected, flags unclear logic or names, and proposes alternatives without taking over the keyboard. The pair can then switch roles or pause after a bounded session. section 11.0 section 11.2.3
Table 11.1 Pair programming pairing styles
|
Pair style
|
How it works
|
Pros
|
Cons
|
|---|---|---|---|
|
Driver-navigator
|
One driver: focuses on writing the actual code
One navigator: focuses on reviewing the code being written in real time
|
Most common; the pair has equal chances to contribute and review
|
Uneven personality matches might result in a single driver the entire session; the passive navigator might not review as effectively
|
|
Driving school
|
One navigator: focuses on giving tactical, direct, and detailed instructions to the driver
One driver: follows the navigator’s instructions
|
Can be useful if the pair has previously discussed a solution about to be implemented
|
Stronger personality might unintentionally perform this style when paired with a more timid developer
|
|
Pomodoro
|
One driver, one navigator (as in driver–navigator style)
Pair program in 25-min intervals; 20 min coding, 5 min break. Then switch roles
|
Equal participation time between the pair; naturally breaks down pairing sessions into manageable chunks
|
Constant switching might be hard for some developers; can be difficult for pairs with different skill levels
Timing might be an anxiety driver (“I only have 5 min left to finish this”)
|
|
Tour guide
|
One driver: focuses on explaining and implementing code
Multiple navigators: passively listen to driver
|
Useful for onboarding or when new implementation has to be shared with the greater team
|
Passive listeners can grow bored or “zone out” as they don’t get to participate in actual code writing
|
|
Ping-pong
|
One writes a test; developers switch; currently active developer writes code to pass the test. Writes the next test and then switches; cycle continues
|
Great with Test-Driven Development; useful for range of skill levels
|
Constant switching might be hard for some developers; can be difficult for pairs with different skill levels
|
|
Tag-team
|
One driver, one navigator (as in driver–navigator style); switch driver role as the pair sees fit
|
Casual, free-form; developers decide when to switch
|
If one favors more control or is more passive, switching may not occur as frequently
|
Compare driver–navigator pairing with driving-school and Pomodoro variants before choosing how directive the navigator should be. section 11.2.2
