Josh heard about pair programming a few years ago and tried it a few times. Last year, he jumped in and started pairing full-time. Working so closely with clients, colleagues, juniors and seniors was challenging. Now he enjoys pairing more than flying solo and has seen the benefits for himself and his teammates. This talk is about the challenges and benefits of working more closely with one another.
Scanning the Internet for External Cloud Exposures via SSL Certs
Working together v2.1 with speaker notes
1. W O R K I N G T O G E T H E R
J O S H H I L L
DO NOT DISTURB: MAC & PHONE
SLOW & STEADY
Good evening! It’s a pleasure to be here.
And I’d like to talk about pair programming.
2. My first year of
pair programming
full-time
Last summer, I joined a consultancy and started pair programming full-time
Now, it's been a year, and I prefer pairing to flying solo
But learning to pair has been a big change for me and it hasn't been easy, so I’d like to talk about some of the ups and downs
3. 😬
When I told people I was going to start pairing full-time they…were bemused
None of my colleagues had ever paired
How about you?
4. "
Has anyone tried pair programming, maybe at a meet up or workshop?
Does anyone pair at work?
Does anyone pair most of the time?
5. O N O U R O W N
PA I R I N G 1 0 1
F L O W
B E N E F I T S
I’d like to talk about:
- working on my own, and the frustrations that encouraged me to find another way of working
- learning to pair, and the challenges I faced when I started
- making a connection with another person, and that illusive state called flow
- and I’ll finish with the benefits of pair programming that I value most
6. O N O U R O W N
PA I R I N G 1 0 1
F L O W
B E N E F I T S
SLOW & STEADY
Work can be frustrating, and I’ve often wondered ‘does it have to be?’
Maybe part of the problem is that we work on our own
7. Old habits
Working on our own is normal
I think it starts at school, where we are taught how to work
School focuses on individual effort, you have to do your homework alone
And if two students collaborate? Well, that's cheating!
8. Meet, separate, review
Until last year, every job I’ve had was the same.
I was given a task, expected to go away and complete it on my own
Then we submit our finished work for review
And in every job, I’ve found the review process troublesome
9. Marking each other’s work
I think much of the stress I've felt at work has been worrying about how my work will be received:
—did I do it right?
—is it good enough?
—will my boss like it?
Then, in many reviews the feedback has been superficial.
Often the reviewer picks out minor corrections.
So it was very hard to get in depth feedback.
10. Personal gain
We all want to do well
However, our individual goals don't always align
This sets the stage for us to work against each other for personal gain
And I’ve seen competition between people send teams off course
11. Silos
When we’re working on our own, how much do we collaborate?
It takes effort to share knowledge and skills, so silos emerge naturally
And those silos can become points of failure
e.g. “Josh is away, so we'll have to wait until he get’s back”
Also, it's easy to laugh and belittle each other when we don't understand what's involved
12. Blame 👹
The worst culture of all is the blame game: the terrible politics of hunting down an issue and pointing the finger at someone
I expect we have all been victims at some point
When something really urgent comes up everyone knows the stakes are high
And you have to decide: step up and be a hero, or duck for cover?
13. “Even programmers can be whole
people in the real world. XP is an
opportunity to test yourself, to be
yourself, to realize that maybe
you've been fine all along and just
hanging with the wrong crowd.”
– K E N T B E C K
Last summer I was looking for my next job.
And I read this quote by Kent Beck about eXtreme Programming.
So I decided to look for the right crowd.
And with some luck I found a great team of people where I learnt to pair.
14. O N O U R O W N
PA I R I N G 1 0 1
F L O W
B E N E F I T S
SLOW & STEADY
Ok, let’s roll back the clock to last summer when I started pairing
If you've heard anything about eXtreme programming, then you might have heard people say it's awesome.
I confess, that I have drunk some of the Kool-Aid, but I want to be honest about the challenges…
15. Pairing is a different way of working
Pair programming puts you next to someone
Two monitors, two keyboards, two mice—two minds
You're in close quarters, it's intimate
16. Keystrokes collide
First, there’s the physical challenge
When I jump on the keyboard then our keystrokes collide
When I switch windows and miss a few times, my pair sees a kaleidoscope of prompts, code and browsers flash before them
> You have to take turns and be considerate to your pair
17. Methods vary
Second, there's the challenge of variety
Everyone has a their own way
Even a small thing like moving a line of code
When I was soloing I used one method in my favourite editor
My pairs have use different ways and different editors and that’s fine
> You have to let each other be different and become familiar with more ways of doing things
18. Ideas contend
Third, there's the challenge of explaining yourself
When it comes to ideas there’s even more scope for contention
We’re all full of opinions
And we’re conflicted about them
There is so much to learn; and it pulls us in so many directions
> You have to be honest about what you know. And when you don't know, look it up and learn together
19. Being kind isn’t easy
Well, it turns out that being kind is really hard work
It may sound obvious, but being kind is crucial to work with someone all day
Nevertheless there is conflict
> You have to work hard to let go of my old habits, and I’m still unkind more often that I’d like
20. It’s intense! 😳
This was a new way of working. It was intense.
I’ve been physically exhausted by exercise, but never felt mental exhaustion like this before
I was lucky that my team encouraged regular breaks
I soon realised how important they are
> You must take regular breaks. And don't be tempted to work late or you’ll burn out
22. O N O U R O W N
PA I R I N G 1 0 1
F L O W
B E N E F I T S
SLOW & STEADY
After a few months pairing started to get easier...
and I began to feel comfortable working with my pairs
23. When it’s going well you can achieve a flow state together
Pairing is a skill
Then after pairing for a while it dawned on me that I have paired before
24. Aikido
I trained in Aikido, a Japanese martial art for six years at school and University
The goal of Aikido is to achieve harmony
In Aikido we train in pairs, and I think there are many similarities with pair programming
25. Tori and uke
Like in pair programming we take turns
Tori does the technique; uke receives the technique
Bear in mind most techniques end with uke pinned, or thrown to the floor
So you quickly find out what it's like to be on the receiving end
26. This is me and Tom Tam
We're doing a training exercise
The goal is to hold on
The grip must be soft enough to listen
And strong enough to keep hold
27. Make a connection
The aim of pairing is to make a connection
When you lose the connection, then…it’s obvious
You don’t know what your pair is thinking, you interrupt one another and you lose the flow
It's dynamic
28. Suspend judgement
Like being uke, I’ve found navigating much harder than driving
But you have to let your pair drive.
Even when you don't like their driving.
I’ve learnt to suspend judgement and let them complete their thought…and then, quite often, they surprise me!
29. Appropriate feedback
This connection is at the heart of pairing
When you’re pairing you can get immediate feedback
You can discuss and combine your ideas
As you get to know your pair you can tailor your feedback
So it is appropriate, and doesn’t disrupt the flow
30. Who wins?
I have a confession to make: when I started training, I wanted to win
I wanted to beat people I didn’t like
However, in Aikido there is no competition.
So at some point I realised that winning wasn’t why I went anymore
And in pairing teams it’s the same: we commit code together, we come up with ideas together
What I enjoy most is working closely with my pair and putting my all into it
31. O N O U R O W N
PA I R I N G 1 0 1
F L O W
B E N E F I T S
SLOW & STEADY
Now, you don’t have to achieve flow everyday to benefit from pairing
Some of the benefits come quickly, but it does take time for the benefits to develop in any team
Even when the team is experienced with pairing
33. Shared context
We rotate pairs regularly so what we learn is shared around the team
Fewer silos of knowledge
Learning and sharing is an everyday activity
Guilt-free holidays
35. Team sport
Pairing aligns individuals towards the team effort
We learn, fail, recover and succeed together
It’s not about me anymore
So I want to see my teammates succeed and even exceed me
36. Not just for work
I’ve been struck by how this has changed my attitude outside the office
When someone is struggling with a till, my instinct is to pair with them
When my little girl grabs my hand and says ‘c’mon’, I’m ready to pair
37. O N O U R O W N
PA I R I N G 1 0 1
F L O W
B E N E F I T S
39. Here are some of the great people I’ve worked with this year:
Gagan, Maria, Pavan, Jatin, Alex and Craig
They are kind, honest, intelligent, and enthusiastic people
I feel very lucky to work with them
It’s worth the effort
40. 🙏
GASHO
Thank you for listening
This is my first talk at LRUG.
LRUG was the first meet up I came to as a new Ruby developer.
That was three years ago at the Skills Matter eXchange on Goswell Road.
And I would like to thank everyone who supports this community for creating a welcoming event.
41. J O S H H I L L
@ J A M E S J O S H U A H I L L
Would anyone like to ask a question?
REPEAT QUESTION BEFORE ANSWERING
PLEASE COME AND SAY HI AFTERWARDS