SlideShare a Scribd company logo
1 of 50
David Morgantini 
davidmorgantini.blogspot.co.uk 
dmorgantini@gmail.com
Who Am I? 
 David Morgantini 
 Independent consultant 
 Previously worked for: 
 ThoughtWorks 
 Government Digital Services 
 Paid to write code for 9 years 
 Focus on Tech Leadership, Agile 
Coaching & pragmatic delivery
Why are we here?
In Scope 
 Better understanding of the practice of 
pair programming 
 Concrete tips on how to be more 
effective while pair programming
Out of scope 
 A discussion on whether pairing is a 
good practice 
 Tips on how to convince your team to 
try/use pair programming 
 An overview of all the research on pair 
programming
Overview 
 Some Definitions 
 Pairing patterns 
 Intended benefits 
 Avoiding disengagement
Common Definition 
Let’s solve this 
problem! Ok!
More definitions 
Let’s use the 
bits class to 
get some bobs 
That sounds 
good. 
Driver Navigator 
Pairing Session
Disengagement 
I am such a 
good 
developer! 
I haven’t a clue 
what’s going on. 
What’s for dinner?
Players in a pairing session 
I’ve worked on the 
milking functionality 
before. 
Glad he knows this 
code, I’ve never 
seen it before. 
Expert Novice
Players in a pairing session 
But I’ve never had 
to work the 
DevOps* 
Expert Novice 
* DevOps is not a thing 
Ah I know all 
about the 
DevOps*!
Players in a pairing session 
But I’ve never had 
to work the 
DevOps* 
Novice Expert 
* DevOps is not a thing 
Ah I know all 
about the 
DevOps*!
There can only be one 
… and we add an 
implementation 
here … 
You missed a semi-colon.
There can only be one 
Jerk. Keeps hogging 
the keyboard. And 
my neck hurts. 
… and now watch 
as I type these 
seven new classes 
…
Two keyboards 
… let me explain by 
driving for a bit! 
Ah, now I 
understand what 
you’re trying to say!
Two keyboards 
STOP TYPING 
DAMNIT! 
WE DO THIS!
A Laptop 
I don’t understand, I 
can’t see. Pair 
programming is stupid. 
… the gubbins go 
with the bits and 
bobs…
Mirrored laptop 
I still don’t understand 
but at least now I can 
see! Pair programming 
rocks! 
… and then we 
connect the bobs to 
the ESB via the 
night service …
Dual station 
… You’ll be able to 
connect to the 
gubbins! We ROCK! 
… so you’re saying 
if I catch the night 
service at line 135 
…
Dual station 
There is a problem 
there! 
La la la, looking at 
my monitor, don’t 
know what you’re 
talking about
What does the research 
say? 
Based on bug count, 
pairing is equivalent to 
solo programming. 
Pair Programming 
makes a major 
positive difference. 
Pair programming 
is a hindrance. 
Don’t use it.
I would be more 
interested in looking 
at the patterns of 
interactions that can 
lead to the benefits or 
how they are lost. 
Pair vacation 
taking is 
AWESOME!
Intended benefits of pairing 
 Economics 
 Design quality 
 Developer satisfaction 
 Learning/Knowledge transfer 
 Team building and communication
Economics 
… create 
loads of 
gubbins! 
… use the 
gubbin 
factory to … 
Two people 
doing one 
person’s 
work!? 
Yep! Fewer bugs & 
better design should 
lead to lower long 
term costs!
Quality 
But how do 
we connect 
the gubbins 
without one? 
Maybe an 
ESB is a 
bad idea? 
Excellent, 
keep up the 
good work! 
No new 
bugs to 
report, sir!
Developer satisfaction 
Ok, no ESB. Let’s 
use a light-weight 
message queue 
instead 
Great idea! 
Today was 
AWESOME! WE ROCK! 
HIGH 
FIVE
Learning/Knowledge 
sharing 
I know this 
code! I paired 
with Jill! 
Good thing we pair 
cause I don’t know 
what a gubbin is!
Communication 
This would be a pain if 
we had to use an 
antiquated 
communication method. 
I hear ya!. 
E-mail is so 2005.
Systemic Benefits 
WE WE ARE ARE BUILDING BUILDING 
BETTER 
BETTER SOFTWARE! 
SOFTWARE!
Disengagement 
I am such a 
good 
developer! 
I haven’t a clue 
what’s going on. 
What’s for dinner?
Mutually agreed 
disengagement 
… and while you do 
that I’m going to 
refactor the gubbin 
factory. 
I’m going to connect 
up the message 
queue
Expert-Novice 
*whistling* 
I’m so confused  
Expert Novice
Expert-Novice 
Do you 
understand? 
No. Can you 
please explain 
more? 
Expert Novice
Reasons for disengagement 
1) Type of work 
1) Unfamiliar working environment 
2) Interruptions 
3) Time pressure 
4) Social pressure
Type of work 
I don’t think that 
this work needs a 
pair. 
Ya. I’m not really 
able to effectively 
contribute
Suggestions 
1) Consider tiny tasking 
2) Break up the pair 
3) Ask yourself if the work needs a pair 
4) Expert: Ensure the novice is driving
Uncomfortable dev environment 
I love EMACS!1! 
Um… I can’t use 
this insane text 
editor
Suggestions 
1) Make each pair feel ‘at home’ 
 Dual monitors/keyboard etc… 
 Team IDE standardization 
2) Expert: Take the comfort hit if the goal 
is learning
Interruptions 
Ha ha! Free from the 
old ball and chain! 
When the cat’s away, 
the ESB returns! 
Sorry, I 
forgot. 
You didn’t put 
a new cover 
sheet on your 
TPS report!
Interruptions 
… and then 
remember to add one 
to combat the naming 
problems … 
I don’t know 
what’s going 
on anymore…
Suggestions 
1) Try not to disrupt an in progress session 
2) Complete any in progress discussion 
before acknowledging interruption 
3) Plan for longer interruptions 
4) Re-establish mutual context when 
interruption is complete
Time pressure 
I feel the need… 
the need for 
speed. 
OMG. I lost him 
25 minutes ago. 
Expert Novice
Suggestions 
1) Plan novice pairing time into estimation 
2) Expert: Verbalize progress and ask for 
feedback
Social pressure 
… and finally, 
once we have 
connected the 
message 
queue… 
I don’t understand. 
But I don’t want to 
look stupid by 
asking a question
Suggestions 
1) Expert: Give novice partner some time to 
consider solutions alone before 
development starts 
2) Novice: Stop your partner when you don’t 
know what’s going on 
3) Expert: Encourage your partner to drive 
4) Establish mutual context before starting 
development
Thank You! 
What an 
interesting group 
of research 
subjects. 
So did you 
learn anything 
today? 
I was busy 
playing candy 
crush. 
He made 5 
mistakes!!!! 
GET BACK TO 
WORK! I DON’T 
PAY YOU TO SIT 
AROUND AND 
TALK!

More Related Content

Similar to Pair Programming - Be the best pair you can be.

Scottish Ruby Conference 2014
Scottish Ruby Conference  2014Scottish Ruby Conference  2014
Scottish Ruby Conference 2014michaelag1971
 
I Want 2 Do Project Tell Me Wat 2 Do
I Want 2 Do Project Tell Me Wat 2 DoI Want 2 Do Project Tell Me Wat 2 Do
I Want 2 Do Project Tell Me Wat 2 DoFelipe Cerda
 
Framer for the win - Using Framer prototypes for your app project. (For Melbo...
Framer for the win - Using Framer prototypes for your app project. (For Melbo...Framer for the win - Using Framer prototypes for your app project. (For Melbo...
Framer for the win - Using Framer prototypes for your app project. (For Melbo...Jinju Jang
 
Visual Rhetoric, Feb 11, 2013
Visual Rhetoric, Feb 11, 2013Visual Rhetoric, Feb 11, 2013
Visual Rhetoric, Feb 11, 2013Miami University
 
Learn Python The Hard Way, 3rd Edition .pdf
Learn Python The Hard Way, 3rd Edition .pdfLearn Python The Hard Way, 3rd Edition .pdf
Learn Python The Hard Way, 3rd Edition .pdfCongThanhHoang1
 
PHP World DC 2015 - What Can Go Wrong with Agile Development and How to Fix It
PHP World DC 2015 - What Can Go Wrong with Agile Development and How to Fix ItPHP World DC 2015 - What Can Go Wrong with Agile Development and How to Fix It
PHP World DC 2015 - What Can Go Wrong with Agile Development and How to Fix ItMatt Toigo
 
How to tell a better story (in code)(final)
How to tell a better story (in code)(final)How to tell a better story (in code)(final)
How to tell a better story (in code)(final)Bonnie Pan
 
Visual Rhetoric, Feb 12, 2013
Visual Rhetoric, Feb 12, 2013Visual Rhetoric, Feb 12, 2013
Visual Rhetoric, Feb 12, 2013Miami University
 
Data Science Salon: Deep Learning as a Product @ Scribd
Data Science Salon: Deep Learning as a Product @ ScribdData Science Salon: Deep Learning as a Product @ Scribd
Data Science Salon: Deep Learning as a Product @ ScribdFormulatedby
 
Geecon10: Object Oriented for nonbelievers
Geecon10: Object Oriented for nonbelieversGeecon10: Object Oriented for nonbelievers
Geecon10: Object Oriented for nonbelieversBruno Bossola
 
Evaluation 7
Evaluation 7Evaluation 7
Evaluation 7snapb003
 
The IT Crowd stance on writing advice documents
The IT Crowd stance on writing advice documentsThe IT Crowd stance on writing advice documents
The IT Crowd stance on writing advice documentsKarim Vaes
 
The rocket internet experience @ PHP.TO.START 2013 in Turin
The rocket internet experience @ PHP.TO.START 2013 in TurinThe rocket internet experience @ PHP.TO.START 2013 in Turin
The rocket internet experience @ PHP.TO.START 2013 in TurinAlessandro Nadalin
 
Evaluation 7
Evaluation 7Evaluation 7
Evaluation 7Ben Snape
 
7 tips for more effective morning SCRUM
7 tips for more effective morning SCRUM7 tips for more effective morning SCRUM
7 tips for more effective morning SCRUMAndrea Tino
 
10 tips to save you time and frustration while programming
10 tips to save you time and frustration while programming10 tips to save you time and frustration while programming
10 tips to save you time and frustration while programmingHugo Shi
 
How To Do Kick-Ass Software Development
How To Do Kick-Ass Software DevelopmentHow To Do Kick-Ass Software Development
How To Do Kick-Ass Software DevelopmentSven Peters
 

Similar to Pair Programming - Be the best pair you can be. (20)

Scottish Ruby Conference 2014
Scottish Ruby Conference  2014Scottish Ruby Conference  2014
Scottish Ruby Conference 2014
 
Tensorflow go
Tensorflow goTensorflow go
Tensorflow go
 
I Want 2 Do Project Tell Me Wat 2 Do
I Want 2 Do Project Tell Me Wat 2 DoI Want 2 Do Project Tell Me Wat 2 Do
I Want 2 Do Project Tell Me Wat 2 Do
 
Framer for the win - Using Framer prototypes for your app project. (For Melbo...
Framer for the win - Using Framer prototypes for your app project. (For Melbo...Framer for the win - Using Framer prototypes for your app project. (For Melbo...
Framer for the win - Using Framer prototypes for your app project. (For Melbo...
 
Visual Rhetoric, Feb 11, 2013
Visual Rhetoric, Feb 11, 2013Visual Rhetoric, Feb 11, 2013
Visual Rhetoric, Feb 11, 2013
 
Learn Python The Hard Way, 3rd Edition .pdf
Learn Python The Hard Way, 3rd Edition .pdfLearn Python The Hard Way, 3rd Edition .pdf
Learn Python The Hard Way, 3rd Edition .pdf
 
PHP World DC 2015 - What Can Go Wrong with Agile Development and How to Fix It
PHP World DC 2015 - What Can Go Wrong with Agile Development and How to Fix ItPHP World DC 2015 - What Can Go Wrong with Agile Development and How to Fix It
PHP World DC 2015 - What Can Go Wrong with Agile Development and How to Fix It
 
How to tell a better story (in code)(final)
How to tell a better story (in code)(final)How to tell a better story (in code)(final)
How to tell a better story (in code)(final)
 
Visual Rhetoric, Feb 12, 2013
Visual Rhetoric, Feb 12, 2013Visual Rhetoric, Feb 12, 2013
Visual Rhetoric, Feb 12, 2013
 
Data Science Salon: Deep Learning as a Product @ Scribd
Data Science Salon: Deep Learning as a Product @ ScribdData Science Salon: Deep Learning as a Product @ Scribd
Data Science Salon: Deep Learning as a Product @ Scribd
 
Geecon10: Object Oriented for nonbelievers
Geecon10: Object Oriented for nonbelieversGeecon10: Object Oriented for nonbelievers
Geecon10: Object Oriented for nonbelievers
 
Evaluation 7
Evaluation 7Evaluation 7
Evaluation 7
 
The IT Crowd stance on writing advice documents
The IT Crowd stance on writing advice documentsThe IT Crowd stance on writing advice documents
The IT Crowd stance on writing advice documents
 
The rocket internet experience @ PHP.TO.START 2013 in Turin
The rocket internet experience @ PHP.TO.START 2013 in TurinThe rocket internet experience @ PHP.TO.START 2013 in Turin
The rocket internet experience @ PHP.TO.START 2013 in Turin
 
Evaluation 7
Evaluation 7Evaluation 7
Evaluation 7
 
7 tips for more effective morning SCRUM
7 tips for more effective morning SCRUM7 tips for more effective morning SCRUM
7 tips for more effective morning SCRUM
 
10 tips to save you time and frustration while programming
10 tips to save you time and frustration while programming10 tips to save you time and frustration while programming
10 tips to save you time and frustration while programming
 
Pair programming
Pair programmingPair programming
Pair programming
 
How To Do Kick-Ass Software Development
How To Do Kick-Ass Software DevelopmentHow To Do Kick-Ass Software Development
How To Do Kick-Ass Software Development
 
EAMUGMar9
EAMUGMar9EAMUGMar9
EAMUGMar9
 

Recently uploaded

Buds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in NoidaBuds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in Noidabntitsolutionsrishis
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceBrainSell Technologies
 
What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....kzayra69
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 
How to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdfHow to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdfLivetecs LLC
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odishasmiwainfosol
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Andreas Granig
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作qr0udbr0
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtimeandrehoraa
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Matt Ray
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...Christina Lin
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfAlina Yurenko
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...OnePlan Solutions
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsAhmed Mohamed
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 

Recently uploaded (20)

Buds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in NoidaBuds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in Noida
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. Salesforce
 
What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 
How to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdfHow to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdf
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtime
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML Diagrams
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 

Pair Programming - Be the best pair you can be.

  • 2. Who Am I?  David Morgantini  Independent consultant  Previously worked for:  ThoughtWorks  Government Digital Services  Paid to write code for 9 years  Focus on Tech Leadership, Agile Coaching & pragmatic delivery
  • 3. Why are we here?
  • 4. In Scope  Better understanding of the practice of pair programming  Concrete tips on how to be more effective while pair programming
  • 5. Out of scope  A discussion on whether pairing is a good practice  Tips on how to convince your team to try/use pair programming  An overview of all the research on pair programming
  • 6. Overview  Some Definitions  Pairing patterns  Intended benefits  Avoiding disengagement
  • 7.
  • 8. Common Definition Let’s solve this problem! Ok!
  • 9. More definitions Let’s use the bits class to get some bobs That sounds good. Driver Navigator Pairing Session
  • 10. Disengagement I am such a good developer! I haven’t a clue what’s going on. What’s for dinner?
  • 11. Players in a pairing session I’ve worked on the milking functionality before. Glad he knows this code, I’ve never seen it before. Expert Novice
  • 12. Players in a pairing session But I’ve never had to work the DevOps* Expert Novice * DevOps is not a thing Ah I know all about the DevOps*!
  • 13. Players in a pairing session But I’ve never had to work the DevOps* Novice Expert * DevOps is not a thing Ah I know all about the DevOps*!
  • 14.
  • 15. There can only be one … and we add an implementation here … You missed a semi-colon.
  • 16. There can only be one Jerk. Keeps hogging the keyboard. And my neck hurts. … and now watch as I type these seven new classes …
  • 17. Two keyboards … let me explain by driving for a bit! Ah, now I understand what you’re trying to say!
  • 18. Two keyboards STOP TYPING DAMNIT! WE DO THIS!
  • 19. A Laptop I don’t understand, I can’t see. Pair programming is stupid. … the gubbins go with the bits and bobs…
  • 20. Mirrored laptop I still don’t understand but at least now I can see! Pair programming rocks! … and then we connect the bobs to the ESB via the night service …
  • 21. Dual station … You’ll be able to connect to the gubbins! We ROCK! … so you’re saying if I catch the night service at line 135 …
  • 22. Dual station There is a problem there! La la la, looking at my monitor, don’t know what you’re talking about
  • 23.
  • 24. What does the research say? Based on bug count, pairing is equivalent to solo programming. Pair Programming makes a major positive difference. Pair programming is a hindrance. Don’t use it.
  • 25. I would be more interested in looking at the patterns of interactions that can lead to the benefits or how they are lost. Pair vacation taking is AWESOME!
  • 26. Intended benefits of pairing  Economics  Design quality  Developer satisfaction  Learning/Knowledge transfer  Team building and communication
  • 27. Economics … create loads of gubbins! … use the gubbin factory to … Two people doing one person’s work!? Yep! Fewer bugs & better design should lead to lower long term costs!
  • 28. Quality But how do we connect the gubbins without one? Maybe an ESB is a bad idea? Excellent, keep up the good work! No new bugs to report, sir!
  • 29. Developer satisfaction Ok, no ESB. Let’s use a light-weight message queue instead Great idea! Today was AWESOME! WE ROCK! HIGH FIVE
  • 30. Learning/Knowledge sharing I know this code! I paired with Jill! Good thing we pair cause I don’t know what a gubbin is!
  • 31. Communication This would be a pain if we had to use an antiquated communication method. I hear ya!. E-mail is so 2005.
  • 32. Systemic Benefits WE WE ARE ARE BUILDING BUILDING BETTER BETTER SOFTWARE! SOFTWARE!
  • 33.
  • 34. Disengagement I am such a good developer! I haven’t a clue what’s going on. What’s for dinner?
  • 35. Mutually agreed disengagement … and while you do that I’m going to refactor the gubbin factory. I’m going to connect up the message queue
  • 36. Expert-Novice *whistling* I’m so confused  Expert Novice
  • 37. Expert-Novice Do you understand? No. Can you please explain more? Expert Novice
  • 38. Reasons for disengagement 1) Type of work 1) Unfamiliar working environment 2) Interruptions 3) Time pressure 4) Social pressure
  • 39. Type of work I don’t think that this work needs a pair. Ya. I’m not really able to effectively contribute
  • 40. Suggestions 1) Consider tiny tasking 2) Break up the pair 3) Ask yourself if the work needs a pair 4) Expert: Ensure the novice is driving
  • 41. Uncomfortable dev environment I love EMACS!1! Um… I can’t use this insane text editor
  • 42. Suggestions 1) Make each pair feel ‘at home’  Dual monitors/keyboard etc…  Team IDE standardization 2) Expert: Take the comfort hit if the goal is learning
  • 43. Interruptions Ha ha! Free from the old ball and chain! When the cat’s away, the ESB returns! Sorry, I forgot. You didn’t put a new cover sheet on your TPS report!
  • 44. Interruptions … and then remember to add one to combat the naming problems … I don’t know what’s going on anymore…
  • 45. Suggestions 1) Try not to disrupt an in progress session 2) Complete any in progress discussion before acknowledging interruption 3) Plan for longer interruptions 4) Re-establish mutual context when interruption is complete
  • 46. Time pressure I feel the need… the need for speed. OMG. I lost him 25 minutes ago. Expert Novice
  • 47. Suggestions 1) Plan novice pairing time into estimation 2) Expert: Verbalize progress and ask for feedback
  • 48. Social pressure … and finally, once we have connected the message queue… I don’t understand. But I don’t want to look stupid by asking a question
  • 49. Suggestions 1) Expert: Give novice partner some time to consider solutions alone before development starts 2) Novice: Stop your partner when you don’t know what’s going on 3) Expert: Encourage your partner to drive 4) Establish mutual context before starting development
  • 50. Thank You! What an interesting group of research subjects. So did you learn anything today? I was busy playing candy crush. He made 5 mistakes!!!! GET BACK TO WORK! I DON’T PAY YOU TO SIT AROUND AND TALK!

Editor's Notes

  1. What does the research say? Pairing has been shown to cost more with few benefits and cost less with loads of benefits. Why??
  2. What does the research say? Pairing has been shown to cost more with few benefits and cost less with loads of benefits. Why??
  3. Laurie Williams of the University of Utah in Salt Lake City has shown that paired programmers are 15% slower than two independent individual programmers, while "error-free" code increased from 70% to 85%. Since testing and debugging are often many times more costly than initial programming, this is an impressive result.[6] Pairs typically consider more design alternatives than programmers working alone, and arrive at simpler, more maintainable designs; they also catch design defects early.[7]
  4. Two developers will bring Different view points to the problem Different methods to find information relevant to the problem A larger number of differing solutions than a single developer Therefore, are less likely to select a poor solution
  5. Developers are happier when they are confident in their solutions Developers are more confident in their solutions when pairing Developers are happier when pairing
  6. Constant knowledge sharing between developers in a pair Each developer on a team pairs with all other developer which helps to break down knowledge silos Instant feedback on coding style and techniques 2 things – team knowledge sharing 1- Personal learning
  7. Developers share problems with each other Less likely to have ‘hidden agendas’ Communication flow is increased within the tea ‘Common code ownership’
  8. These benefits are systemic They are not useful in judging a given pairing session There is a degree of ‘faith’ you have to put into the practice
  9. Have the highest incidence of ‘bad’ disengagement Both members of the pair need to be mindful of disengagement
  10. Pay attention to your pair Understand the context of the pairing session Learning Completing the work quickly
  11. Not all work needs a pair Or, more accurately, not all work is most effective in a pair: Diagnosing some bugs Simple UI fixes Research Some parts of most stories
  12. Driving helps ensure engagement An uncomfortable work environment leads to not driving Ergo, the more comfortable you are to drive, the more likely you are to stay engaged
  13. Double edged sword It’s very easy to lose track of progress if one member of the pair is interrupted Losing track of progress leads to ‘bad’ disengagement
  14. Double edged sword It’s very easy to lose track of progress if one member of the pair is interrupted Losing track of progress leads to ‘bad’ disengagement
  15. Mostly an issue in Expert-Novice constellations The expert will want to move faster than the novice is capable of keeping up
  16. It’s hard to pair with experienced people Don’t want to seem stupid Don’t want to slow the pair down Less likely to ask questions required to stay engaged