Slides of the talk I gave at LAST! Conference in Melbourne in 2016.
Feel free to contact me if you would like me to present this at your company/conference
1 driver
1 navigator
Simply put, pair programming is “two people working together at a single computer”. The practice has been popularized by a software development methodology called Extreme Programming (XP), and a number of researchers have studied the effects of incorporating pair programming into introductory and higher-level computer courses.
better code => pair pressure (don’t let the other down) => code and fix natural tendency (slot machine example)
learning
sharing knowledge
better thinking: two brains are better than one, bouncing ideas
Rubber duck debugging or the expert theory (deep questions)
there is ALWAYS something to learn, to teach.
become better at articulating your thoughts
reduction in coordination efforts managing N/2 divs => managerial argument
Improved resiliency to interruptions (although potential internal interruptions)
But we have code reviews… => choices have already been made that could have been better with another brain, chances to influence these choices are gone.
1 Driver, 1 Navigator
Every fifteen minutes or so (or a full pomodoro), the pair switches roles by sliding the keyboard over
Ping pong with TDD : write test, other implements and write another test
passivity: active engagement at all times
running commentary going silent => programming out loud
fear (of judgement, fixed mindset)
trust
confidence
imposter syndrome
intrusion on personal space => use pomodoro, timeout
pairing is NOT mentoring, both should be considered equal
remote pairing
culture
Abstract:
build trust
make each other look good : Agile Australia the Spark team
No blocking
No wimping
No hogging
adopt a growth mindset : Agile Australia Peter Heslin - leveraging mindsets for effective leadership
example with kids exercise : you are smart vs you worked hard
embrace ambiguity
give space
be humble and accessible
forget pride, it will only get in the way => equals
don’t judge
use empathy, be compassionate
don’t fear/induce fear -> avoid bashing
Concrete:
personal hygiene
alternate to find the speed of the pair, ideally a bit faster than the slower
use pomodoro/timeout to ensure you have breaks, enjoy short break together, long break separately.
discuss all the things : announce what you intend to do, and why, ask for feedback early, code out loud
use the pair programming ping pong pattern
visualize => sequence diagrams
give feedback regularly
slice thinly, it will boost confidence (plan well)
EXERCISE: Pair slice a story, must have 8 to 18 steps : Alistair Cockburn Elephant Carpaccio
Profiling can help you know how to be a better pair if you can’t read people
Lots of profiling tools out there, those aimed at interaction are obviously a better choice, ex: DIsC
Remote pairing => tools sharing screen (screen hero)
Better code => better environment for all of us (Devs
Cultivating empathy
Memorable : Best/Worst experiences: ask the crowd, discuss