SlideShare uma empresa Scribd logo
1 de 41
Baixar para ler offline
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.
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
😬
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?
"
Has anyone tried pair programming, maybe at a meet up or workshop?

Does anyone pair at work?

Does anyone pair most of the time?
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
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
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!
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
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.
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
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
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?
“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.
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…
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
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
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
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
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
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
When I got home my brain was a white out
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
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
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
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
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
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
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!
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
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
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
Focus
Fewer distractions

Shared mind space

Consistency
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
Creative variety
We share our skills

More comfortable trying different things

More open to new ideas
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
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
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
Who do you
work with?
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
🙏
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.
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

Mais conteúdo relacionado

Mais procurados

Thinking out of the box
Thinking out of the boxThinking out of the box
Thinking out of the boxSameer Mathur
 
Nothing
NothingNothing
NothingJordan
 
2011 Feb 24 Power of Positive Thinking in overcoming Fear – [Please downlo...
2011 Feb 24    Power of Positive Thinking in overcoming Fear – [Please downlo...2011 Feb 24    Power of Positive Thinking in overcoming Fear – [Please downlo...
2011 Feb 24 Power of Positive Thinking in overcoming Fear – [Please downlo...viswanadham vangapally
 
Five things I wish I knew when I graduated
Five things I wish I knew when I graduatedFive things I wish I knew when I graduated
Five things I wish I knew when I graduatedTjorven Denorme
 
2013 version : A jobinterview is like a first date
2013 version : A jobinterview is like a first date2013 version : A jobinterview is like a first date
2013 version : A jobinterview is like a first dateTjorven Denorme
 
Perfectionism is the problem
Perfectionism is the problemPerfectionism is the problem
Perfectionism is the problemDiana Malerba
 
There is no secret ingredient
There is no secret ingredientThere is no secret ingredient
There is no secret ingredientRachelTete
 
The skill of self confidence by dr. ivan joseph
The skill of self confidence by dr. ivan josephThe skill of self confidence by dr. ivan joseph
The skill of self confidence by dr. ivan joseph67 Golden Rules
 

Mais procurados (11)

Thinking out of the box
Thinking out of the boxThinking out of the box
Thinking out of the box
 
Nothing
NothingNothing
Nothing
 
STANCE // Neil Patel
STANCE // Neil PatelSTANCE // Neil Patel
STANCE // Neil Patel
 
2011 Feb 24 Power of Positive Thinking in overcoming Fear – [Please downlo...
2011 Feb 24    Power of Positive Thinking in overcoming Fear – [Please downlo...2011 Feb 24    Power of Positive Thinking in overcoming Fear – [Please downlo...
2011 Feb 24 Power of Positive Thinking in overcoming Fear – [Please downlo...
 
Five things I wish I knew when I graduated
Five things I wish I knew when I graduatedFive things I wish I knew when I graduated
Five things I wish I knew when I graduated
 
2013 version : A jobinterview is like a first date
2013 version : A jobinterview is like a first date2013 version : A jobinterview is like a first date
2013 version : A jobinterview is like a first date
 
Senior english 2013
Senior english 2013Senior english 2013
Senior english 2013
 
Perfectionism is the problem
Perfectionism is the problemPerfectionism is the problem
Perfectionism is the problem
 
There is no secret ingredient
There is no secret ingredientThere is no secret ingredient
There is no secret ingredient
 
Life's lessons
Life's lessonsLife's lessons
Life's lessons
 
The skill of self confidence by dr. ivan joseph
The skill of self confidence by dr. ivan josephThe skill of self confidence by dr. ivan joseph
The skill of self confidence by dr. ivan joseph
 

Semelhante a Working together v2.1 with speaker notes

MARKS TEACHABLE POINT OF VIEW GENERAL
MARKS TEACHABLE POINT OF VIEW GENERALMARKS TEACHABLE POINT OF VIEW GENERAL
MARKS TEACHABLE POINT OF VIEW GENERALMark Johnson
 
Nat co oc story
Nat co oc storyNat co oc story
Nat co oc storyGinny Tse
 
Connecting the dots
Connecting the dotsConnecting the dots
Connecting the dotsJuanjoGrasa
 
Everything Matters: Inclusive Design
Everything Matters: Inclusive DesignEverything Matters: Inclusive Design
Everything Matters: Inclusive DesignJess Mitchell
 
7 Steps to Success: Goals, Motivations, Connections
7 Steps to Success: Goals, Motivations, Connections7 Steps to Success: Goals, Motivations, Connections
7 Steps to Success: Goals, Motivations, ConnectionsLinda Ferguson
 

Semelhante a Working together v2.1 with speaker notes (9)

Networking De Mystified
Networking De MystifiedNetworking De Mystified
Networking De Mystified
 
MARKS TEACHABLE POINT OF VIEW GENERAL
MARKS TEACHABLE POINT OF VIEW GENERALMARKS TEACHABLE POINT OF VIEW GENERAL
MARKS TEACHABLE POINT OF VIEW GENERAL
 
Nat co oc story
Nat co oc storyNat co oc story
Nat co oc story
 
Connecting the dots
Connecting the dotsConnecting the dots
Connecting the dots
 
How to-coach-focus
How to-coach-focusHow to-coach-focus
How to-coach-focus
 
Everything Matters: Inclusive Design
Everything Matters: Inclusive DesignEverything Matters: Inclusive Design
Everything Matters: Inclusive Design
 
Post Survey
Post SurveyPost Survey
Post Survey
 
7 Steps to Success: Goals, Motivations, Connections
7 Steps to Success: Goals, Motivations, Connections7 Steps to Success: Goals, Motivations, Connections
7 Steps to Success: Goals, Motivations, Connections
 
Portfolio project
Portfolio projectPortfolio project
Portfolio project
 

Mais de Josh Hill

Reviving the platform everyday
Reviving the platform everydayReviving the platform everyday
Reviving the platform everydayJosh Hill
 
How NOT to build a pipeline
How NOT to build a pipelineHow NOT to build a pipeline
How NOT to build a pipelineJosh Hill
 
Knot programming
Knot programmingKnot programming
Knot programmingJosh Hill
 
Beyond Makers Academy
Beyond Makers AcademyBeyond Makers Academy
Beyond Makers AcademyJosh Hill
 
Improving specs with RSpec 3
Improving specs with RSpec 3Improving specs with RSpec 3
Improving specs with RSpec 3Josh Hill
 
Starting out
Starting outStarting out
Starting outJosh Hill
 
From West End theatre to coding everyday
From West End theatre to coding everydayFrom West End theatre to coding everyday
From West End theatre to coding everydayJosh Hill
 

Mais de Josh Hill (7)

Reviving the platform everyday
Reviving the platform everydayReviving the platform everyday
Reviving the platform everyday
 
How NOT to build a pipeline
How NOT to build a pipelineHow NOT to build a pipeline
How NOT to build a pipeline
 
Knot programming
Knot programmingKnot programming
Knot programming
 
Beyond Makers Academy
Beyond Makers AcademyBeyond Makers Academy
Beyond Makers Academy
 
Improving specs with RSpec 3
Improving specs with RSpec 3Improving specs with RSpec 3
Improving specs with RSpec 3
 
Starting out
Starting outStarting out
Starting out
 
From West End theatre to coding everyday
From West End theatre to coding everydayFrom West End theatre to coding everyday
From West End theatre to coding everyday
 

Último

CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfSeasiaInfotech2
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 

Último (20)

CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdf
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
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
  • 21. When I got home my brain was a white 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
  • 34. Creative variety We share our skills More comfortable trying different things More open to new ideas
  • 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