20
Agile Tour Bangkok 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 diculties 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?

Pairing agile tour bkk

Embed Size (px)

Citation preview

A g i l e To u r B a n g k o k

PAIRINGOr 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?

HAPPY DEVS WRITE BETTER CODEPairing is *usually* described by devs as a practice that makes them happier with their work.

2

The reason I chose to talk about pairing, is that pairing is one of the things that makes me love my job. It makes me happy.

WHY PAIR?

3

Some of the benefits of pairing include…

• Knowledge sharing

• 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

• Avoid rabbit holes

• More fun!

HOW TO PAIR?The rules…

4

• Two people, one shared “destination”, one computer.

• Driver - Navigator

• Swap roles regularly

• Rotate pairs often for maximum knowledge transfer.

• The pairing station!

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 keyboardEnough 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 togetherEliminate “human bottlenecks”Learn how everyone else worksSee the bigger pictureShare the good practices - constantly drive each other to get better

WHAT I THOUGHT PAIRING WOULD LOOK LIKE…

WHAT IT REALLY LOOKED LIKE…

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 only way to “get things done”, that pairing should just be dismissed when workload and deadlines don’t align.So I tried to understand the reasons for the frustration that people are feeling about pairing.

WHEN MAKING A MISTAKE…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.

GETTING ANNOYED…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

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 who knows about this code feature (single point of failure)

THE SILENCESometimes 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.

DO IT ALL YOURSELF..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.

LET THEM DO IT ALL..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.

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..

SAFETYIf 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.

RESPECTMutual 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.

FEEDBACKHow 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.

SELF AWARENESSTry 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.

HAVE FUNCelebrate 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.

For questions or suggestions:

[email protected]

QUESTIONS?