About
The second episode of this #RemotePairProgramming series is about Strong Style Pairing. My coding pairing partner this episode is Llewellyn Falco.
Strong Style Pairing
The Driver is just the typist of the Navigator
Pair-programming is a technique where two programmers stay at the same computer and code together on the same problem. We have two roles: Driver and Navigator.
Driver = the partner who writes the code, and focuses on small details, on short term.
Navigator = the partner who understands what the driver writes and focuses on long term decisions. Typically the navigator’s focus is around the design, architecture concerns, clarity, conceptual cohesion, etc.
During a session of strong style pairing, the Navigator will take all the decisions. The Driver focuses on the small details, just to do what the Navigator has in mind. If something is unclear the two have a dialogue. The same as with traditional style pairing, both roles have the same focus: try to solve the problem as fast as they can with the highest quality possible.
The Problem
We started with a very simple kata, solving roman numeral addition, like the romans would add them. During this session of strong style remote pairing I was the driver and Llewellyn was the remote navigator being the strong pair.
Debriefing
We paired for a while, and we decided it’s time to stop and make a debriefing. Here are mine and Llewellyn’s thoughts of Strong Style Pairing.
- Talk in intention, then location, then details
- Navigator will use the time while the Driver is doing something to understand what to do next
- It’s impossible for one of us not to be talking
- Have the dialogue courtesy
- The navigator can program much better in a pair than alone, because not crashing between the low and the high level
- Two situations: when the driver knows what to do, and when driver doesn’t know what to do
- You can always learn things while pairing
- The navigator can learn a lot from the driver
- It’s OK to go down the wrong path
- Confidence increased with often commits and good unit tests
- Use comments when the intent is more complicated
- Always have the intent clearly in your head, in “English”, and only after say what you mean to your pair
- The readability of the code is important
- Ask for “trust” on short term when you are navigator and you are doing weird things
- When someone doesn’t trust you, it doesn’t matter how much logic you use
- As a navigator in strong style time goes faster, because you are in a flow
- The navigator is more engaged in strong style pairing
- Domain knowledge increases dramatically when doing pairing
Video
Acknowledgements
Many thanks to Llewellyn Falco for taking the time to record this codecast with me.
What’s Next?
Check the previous episode of #RemotePairProgramming: Ep 001: Traditional Style Pairing
Check the next episode of #RemotePairProgramming. (to be shown when published)
I remote paired with Llewellyn in 2011 and it was a very fun experience. His knowledge of approval tests plus my knowledge of the company code base meant we could nail the problem really quickly.