Skip to content

Instantly share code, notes, and snippets.

@jordanpoulton
Last active September 11, 2023 23:18
Show Gist options
  • Star 87 You must be signed in to star a gist
  • Fork 28 You must be signed in to fork a gist
  • Save jordanpoulton/607a8854673d9f22c696 to your computer and use it in GitHub Desktop.
Save jordanpoulton/607a8854673d9f22c696 to your computer and use it in GitHub Desktop.
Pair Programming Role Definitions - Driver:Navigator
Driver:
-Write the code according to the navigator's specification
-Listen intently to the navigators instructions
-Ask questions wherever there is a lack of clarity
-Offer alternative solutions if you disagree with the navigator
-Where there is disagreement, defer to the navigator. If their idea fails, get to failure quickly and move on
-Make sure code is clean
-Own the computer / keyboard
-Ignore larger issues and focus on the task at hand
-Trust the navigator - ultimately the navigator has the final say in what is written
-You are writing the code
Navigator:
-Dictates the code that is to be written - the 'what'
-Clearly communicates what code to write
-Explains 'why' they have chosen the particular solution to this problem
-Check for syntax / type errors as the Driver drives
-Be the safety net for the driver
-Make sure that the driver sticks to the small task at hand
-Outline and note down high level tasks / issues
-Ongoing code review
-Pay attention
-Wait until the task is complete to bring up design / refactoring issues
Both:
-Actively take part in programming
-Aim for optimal flow - avoid trying to be 'right'
-Embrace your role
-Intervene if your pair is quiet
-Know when to give up / steal keyboard
-Communicate, communicate, COMMUNICATE!
-Sync up frequently to make sure you are on the same page
-Don't hog the keyboard
-High-five every time a test passes
-Follow best practices for TDD
-Swap roles frequently
@kjr247
Copy link

kjr247 commented Mar 15, 2018

I like these. I am a fan of pairing. Questions should definitely be on the list!

I have in the past seen good results from giving the right questions that guide the driver. More specific questions, and finally instructions if the driver is not picking up. I think questions might foster imaginative solutions and sometimes the driver may come up with a better solution.

Great for Senior/Junior sessions. I will be referencing your definitions in the future!

Thanks for taking the time to write these out! Great stuff!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment