Scaling API-first – The story of a global engineering organization
20161028 pairing - roni greenwood
1. A g i l e To u r B a n g k o k
PAIRING
Or how to have fun while kicking ass at
software development
Today we’re going to talk
about Pairing. pairing is the
practice of two people
working on the same problem
at the same time on the same
computer.
Specifically we are going to
focus on some of the
difficulties people usually
have with pairing and how to
overcome them, in order to
get the most out of this
practice.
Just a quick check before we
start - how many people in
this room have paired before?
how many pair regularly?
2. HAPPY DEVS WRITE BETTER CODE
Pairing is *usually* described by devs as a practice that makes them happier with their work.
2
3. WHY PAIR?
Some of the benefits of pairing include…
• Great way to up-skill new team members
• Less mistakes, less bugs!
• Focus on building the right thing
• Sharing the ownership of the code
• Push each other to write better code
• Less wasted time
• Less rabbit-holes
• Intent based development
• Fun
3
4. HOW TO PAIR?
The rules…
• Two people, one shared “destination”, one computer.
• Driver - Navigator
• Swap roles regularly
• Rotate pairs often for maximum knowledge transfer.
• The pairing station!
4
Set up a large monitor (or even two) -
this is to make sure no one is
uncomfortable squinting or straining
their neck.
Both driver and navigator should have
access to the mouse and keyboard
Enough space to make you both
comfortable
Sometimes it’s best to let the less
experienced person drive more, until
they get comfortable with the code
base.
Learning to navigate is a skill in itself
that requires confidence and
familiarity with the code, the domain
and good practices. Make sure you
teach and learn that skill.
This will help everyone in the team to
understand all different parts of the
code and own it together
Eliminate “human bottlenecks”
Learn how everyone else works
See the bigger picture
Share the good practices - constantly
drive each other to get better
7. 7
…
SO WHAT WENT WRONG?
Pairing can be stressful and unproductive when good pairing practices are not followed.
If you’re feeling pairing creates frustration, distraction, or wastes your time, you are not alone.
In the past couple of years I have heard people tell me they hated pairing, that working alone is the
8. WHEN MAKINGAMISTAKE…
Never put your pair down, or make fun of them, for making a mistake.
8
Never, ever ever put someone
down for making a mistake.
Don’t react with anger or
mock them.
This can easily happen if you
pair with someone less
experienced, or just new to
the team.
Remember that pairing is
about sharing knowledge and
improving the overall
capabilities of your team.
Also keep your mind open,
you might learn something
even from someone new and
inexperienced.
9. GETTINGANNOYED…
Being so close and personal with another person can be quite stressful.
9
We all know this one. You’ve
been working with the same
person for a little too long.
You have different ways of
doing things. The small things
start getting on your nerves
and you notice you are slowly
acting more snappy towards
each other…
Any team that wants to
continue pairing successfully
for longer than a few days,
needs to have a discussion, a
“negotiation of terms” if you
want to call it that. Find out
how each team member
would like to be treated
(for example, some people
may take longer to think and
do not like to be rushed. other
people may want their pair to
switch their phone to silent as
the noise distracts them….)
Above all, always remember
to respect your pair
10. TIME PRESSURE…
Don’t let it change the way you work or talk with your pair.
10
When you have been trying to
push something through for a
few days… you’re starting to
feel unproductive, you really
want to just “get things
done”. You might
(accidentally or not) start
shutting your pair out.
You might..
say: “I’m just going to work
on my own for a little while, I
really want to get this done…”
do: start “driving” without
taking the time to explain your
actions, ignore the
“navigator’s” comments or
dismiss them.
Why is that bad?
This will create even more
pressure in the long run. First,
your code won’t be as clean
as it would be if you were still
pairing. It may take longer but
that’s usually because the
end product is better. You will
also become the only person
11. THE SILENCE
Sometimes you just need time to think. When pairing, try to think together.
11
Some people take longer to
think things through in their
heads.
Other people get so focused
in solution mode that they
find it hard to also maintain
verbal narration.
Sometimes it’s just a matter
of “Let me just finish writing
this thing and then I’ll explain
it to you…”
Either way, the point is - your
pair cannot read your mind
(unfortunately), and your pair
is your partner in decision
making.
12. DO ITALLYOURSELF..
Don’t ignore your navigator, share the responsibility and learn to delegate.
12
This comes from having an attitude of “I know
how to do this myself and don’t need you to
tell me how to do it”. We are all guilty of this
from time to time.
Remember that the “Navigator” role needs to
be learned, and if you disagree with something
the navigator suggests, explain why and talk it
through.
13. LET THEM DO ITALL..
Even if you believe your pair is fully capable of doing everything themselves…
13
Try to discuss how to handle distractions.
Don’t spend too much time on your phone or
talking to other people and abandon your pair.
14. HOW COULD WE DO BETTER?
A few suggestions to make everyone happier while pairing.
14
So we sat together for a retro
and discussed how each person
wanted to be treated while
pairing.
Each person is different, but a
few things never change..
15. SAFETY
If you can make people feel safe, you can talk to almost anyone about almost anything.
15
Everything must start with
safety.
When someone feels unsafe,
they will be scared to make a
mistake for fear of being
ridiculed or humiliated.
If you sense that safety is at
risk, diagnose the cause. The
two conditions of safety are
Mutual Purpose and Mutual
Respect. Commit to search
for a goal that will benefit
both parties. This soothes
fears and rebuilds safety. If
necessary, collaborate with
the other person to invent a
mutual purpose. Don't settle
for a compromise. Move to
different (often more creative)
or higher and more
encompassing goals.
If you create a safe working
environment when anyone
can say what’s on their
minds, you will be able to get
valuable input and maximise
the team’s performance.
16. RESPECT
Mutual respect will minimise conflicts and help you learn from each other.
16
One of the things that people
value the most when working
with others is the feeling that
they are respected.
Respect means that you let
your pair contribute their
opinion before you make up
your mind. Never put them
down for saying something
you do not agree with. Listen
with an open mind.
Respect their personal space
and basic human needs.
17. FEEDBACK
How do you resolve issues without compromising a relationship?
17
Giving and receiving feedback is super
important for successful pairing (and working in
teams in general, too!)
But how do you give valuable feedback without
hurting someone’s feelings?
Some tips for giving feedback:
- state facts, followed by how you feel. For
example: “Yesterday you started playing on
your phone while we were pairing. I felt lost
and confused.”
- Use tentative words and never any offensive
language. Try to only use facts and not
exaggerate.
- Ask for the other person’s side of the story.
- IF ASKED TO - Suggest some ways in which
you think you can solve issues (offer help but
don’t force it)
Some tips for receiving feedback:
- Don’t get defensive or angry. People give you
feedback because they still care enough to do
so. It’s hard to give feedback.
- Listen until the person finishes talking before
responding. Take a few seconds to “process”
what they said and compose your response.
- Ask how you can solve the problem.
18. SELFAWARENESS
Try to answer this question about yourself: “what am I like when I’m stressed?”
18
What is your “Style under stress”?
Different people react to stress differently.
Some people talk too much, others will be
silent, some will yell and others will be passive
aggressive.
Find out about yourself and your team members
how you tend to react under stress, and make a
concentrated effort to control your emotions.
19. HAVE FUN
Celebrate success, balance hard work with team activities, take things lightly and have fun!
19
Working so intensely can be quite draining in
the long run, so remember to balance all the
hard work with some fun group activities.
20. For questions or suggestions:
ronigreenwood@thoughtworks.com
QUESTIONS?