SlideShare a Scribd company logo
unwritten manual
of pair programming
Lemi Orhan Ergin
What is the
purpose
of pair programming?
teaching domain
mentorship
showing code
getting confirmation
finding bugs
teaching domain
mentorship
showing code
getting confirmation
finding bugs
producing software
(all the other points are side-products)
producing
software
high quality
Test Driven Development
Behavior Driven Development
Acceptance Testing
Unit Testing
Continuous Integration
Continuous Delivery
Emergent Simple Design
Code Review
Design Patterns
Clean Code Principles
Coding Standards
SOLID Principles
Continuous Deployment
Enterprise Environments
Version Control Systems
PAIR PROGRAMMING
a practice in
development
P.J. Plauger, one of the implementors of C: "At each terminal were two
programmers! Of course, only one programmer was actually cutting code
at each keyboard, but the others were peering over their shoulders.”
1978-1988
1995
“Developing in Pairs” pattern in Jim Complien's book
"Pair Programming Illuminated", by Laurie Williams and Robert Kessler,
is the first book devoted exclusively
2002
PAIR PROGRAMMING
Core Practice in Extreme Programming
http://www.extremeprogramming.org/rules/pair.html
PAIR PROGRAMMING
http://www.extremeprogramming.org/rules/pair.html
Social Skill
PAIR PROGRAMMING
it means it is not suitable for everyone
Social Skill
http://firstround.com/review/Why-Every-Startup-Should-Pair-Program
Unwritten Manual for Pair Programming
Unwritten Manual for Pair Programming
Pairing does not amplify my productivity. Instead,
it erases all the bad habits I have that keep me from
being a superstar on my own.
h!p://www.sarahmei.com/blog/201%4/14/thoughts-on-two-months-of-pairing
PAIR PROGRAMMING
2 developers
1 machine
1 monitor
1 keyboard
1 mouse
Programming
Designing
Reading
Thinking
Searching
Deciding
Programming
Designing
Reading
Thinking
Searching
Deciding
Unwritten Manual for Pair Programming
?DOES IT
HOW
SEEM
EASY
SCARY
?AWKWARD
MOTIVATING
INTERESTING
UNCOMFORTABLE
MANY PEOPLE HATE IT
So that's why I don't like pair programming. My
weaknesses are exaggerated and my strengths are
vetoed. For me, pairing doesn't work. For plenty of
others, it very clearly does work. But not me. And
that's why I quit the best company I've ever
worked for: Pivotal Labs.
h!p://mwilden.blogspot.com.tr/2009/11/why-i-dont-like-pair-programming-and.html
Learn how to do
Have desire
Define coding standards
Have experienced people
Practice and be patient
Inspect and adapt
PRACTICE
PROGRAMMING
PAIR
TO MAKE
STEPS
YOURINDISPENSABLE
DRIVER
TacticianStrategist
NAVIGATOR
DRIVER
TacticianStrategist
NAVIGATOR
Codes
Thinks about 

how to code better
Doesn’t dictate the code
Programs out loud
Thinks through problems
Reviews code
Does sanity testing
Reads and checks
Besides, if people program solo,
they are more likely to make mistakes,
more likely to over design, and
more likely drop the other practices,
particularly under pressure.
XP Explained
Higher quality in code
Higher morale
Better collaboration
Shared knowledge
Quicker to market
Automatic code review
Useful for training people
Lower defect rates
Faster defect removal
Cannot force people
Tiring
Hard to setup common infra
Hard to keep focus
Clash of egos
Harder for introverts
No multiple committers
Easy to do anti-patterns
More effort on first & last sprint
BENEFITS
CAVEATS
10 EASY
Select you pair wisely1 Don't force people who don't like each other to pair
Two juniors might not be a good idea
Start with a reasonably well-
defined task before you sit down2
It's better if you do not need to investigate a lot
how to program or which technologies to use
Agree on one tiny goal at a time3 Define your checkpoints. Select minor goals.
Rely on your partner and support him4
Talk a lot!5
Does that look correct to you?
Do you think this is a valid test?
What’s next?
Trust me!
Do you have any better idea?
I suggest better names for variables and classes
I suggest to implement in smaller steps
I suggest possible inputs that we haven’t covered
Let me give you some details about this technology
Think out loud
Sync up frequently6 Ask for agreement
Ask if you miss something
Take a moment to celebrate7
Rotate pairs in every 90 minutes8 Do not exceed 4-6 hours a day
Understand not everything has to be paired
Criticize the practice9 Do you do retrospectives?
Schedule the pairings if required
Pairing full time is not practical
25% for 3 days in a week
50% for 2 days in a week
Revisit how you pair after sprints
Talk on pairing schedules daily
10
10 EASY
Give breaks1 Pair programming is an exthausting practive. Never exceed 50 mins.
You can use pomodoro counters for 25 mins intervals.
Switch the keyboard
It's not a mentorship program, it is a development practice.
Give that f*ucking keyboard to your pair and switch the roles.
2
Write tests, no matter what
You can get the most out of pair programming if you write tests.
Try to write tests first and push yourself to do TDD.
3
Take your personal time
You need to read more, practice more, investigate more, learn more.
Take your time for working alone at least few hours a day.
4
Full day pairing is ok, but not
sustainable
You have to come to office at the same time, go to lunch together,
take breaks at the same time, leave the office at the same time.
5
Ask for used shortcuts, and learn
Learn all the tricks and shortcuts your pair uses. If you notice
your pair goes fast, stop him/her and ask the trick.
6
Do not worry about silly mistakes
Hey you know that. It is normal to do silly mistakes. Relax.
If your pair makes you stressed, let him/her know!
7
No one should be forced to pair
However if pair programming is a core practice in your company,
you might have to spend a lot of time with pairing.
8
Ask for your pair's opinion
Pairing is a matter of attitude. Do not always tell what to do.
Ask for suggestions and discuss together.
9
Recruit correct people10
h!p://scholarworks.lib.csusb.edu/cgi/viewcontent.cgi?article=1305&context=ciima
Recruit correct people10
h!p://scholarworks.lib.csusb.edu/cgi/viewcontent.cgi?article=1305&context=ciima
Do not fall into Anti-Pattern trap
Know the ways how you can screw up pairing and do your best
accordingly.
Superman

I am fast, give me keyboard
Absent-Mind Ed

I am too distracted
The Back-Seat Driver

Tons of non-trivial comments
The King of Shortcuts

Navigator knows all shortcuts and pushes to use
Fearful Freddie

Refusing to refactor code that you didn't write
The Anti-Mentor

Leaving the newbie alone while pairing
The Soloist

Works solo as much as possible
The Defactorator

Revert all refactorings the others did
ANTIPATTERNS
TYPES OF PAIRING
A writes a new test and sees that it fails

B implements the code to pass the test

B writes the next test

A implements it

And so on

Refactoring is done whenever needed
PING-PONG PAIRING
Well suited for applying TDD
If you aim to do remote pair
programming, start with ping-pong
GIT-PONG PAIRING
$ git remote add personA <URL>
$ git fetch personA
$ git checkout personA/master
$ git checkout -b feature/PA-231
add your changes and commit
$ git push personA feature/PA-231
A B
$ git checkout feature/PA-231
add your changes and commit
$ git pull personA feature/PA-231
A writes test
B writes production code
Repeat for 4-5 times
A refactors all
Switch roles
MICRO PAIRING
Similar to ping-pong, but you may pass a
succeeding test and switch the keyboard
It is an advanced skill, best suited for
seasoned, well-practiced teams
Any number of pairs might work on a
task at various times until it is complete
PROMISCUOUS PAIRING
A does pair programming with B
B does pair programming with C
C does pair programming with D
on the same task
even on the same day
1 driver, multiple navigators
Big projector or big TVs
Switch every 15 minutes
MOB PROGRAMMING
The whole team works on the same thing, at the same
time, in the same space, and at the same computer
Unwritten Manual for Pair Programming
ENJOYremember
whatever you do
do not forget to
https://www.flickr.com/photos/fraserspeirs/3394902061
Joe O'Brien and Jim Weirich while doing ruby code review
Unwritten Manual for Pair Programming

More Related Content

What's hot (20)

PDF
Coderetreat - Practice to Master Your Crafts
Lemi Orhan Ergin
 
PDF
Fighting with Waste Driven Development - XP Days Ukraine 2017
Lemi Orhan Ergin
 
PDF
Let the Elephants Leave the Room: Tips for Making Development Life Leaner by ...
Bosnia Agile
 
PDF
How to Become a Conference Speaker
Sven Peters
 
PDF
Let the Elephants Leave the Room: Tips for Making Development Life Leaner by ...
Agile ME
 
PDF
GMO'less Software Development Practices
Lemi Orhan Ergin
 
PPTX
Development without Testers: Myth or Real Option? (ConfeT&QA conference)
Mikalai Alimenkou
 
PDF
Code metrics in PHP
Julio Martinez
 
PPTX
Symptoms of Bad Quality Software
ashokguduru
 
PDF
Pair Programming (2014)
Peter Kofler
 
PPT
Peer Code Review An Agile Process
gsporar
 
PDF
Why you should integrate peer code reviews in your software company
Matts Devriendt
 
PDF
Big Ball of Mud: Software Maintenance Nightmares
Gonzalo Rodríguez
 
PDF
Software Craftsmanship vs Software Engineering (Lightning Talk)
Andy Maleh
 
PDF
Pair programming demystified
Marek Kirejczyk
 
PPTX
Best pratice
Eugenio Romano
 
PDF
Test Driven Design - GDG DevFest Istanbul 2016
Lemi Orhan Ergin
 
PPT
Pair Programming Presentation
ThoughtWorks
 
PPTX
Tdd 4 everyone full version
Lior Israel
 
PPTX
Importance of the quality of code
Shwe Yee
 
Coderetreat - Practice to Master Your Crafts
Lemi Orhan Ergin
 
Fighting with Waste Driven Development - XP Days Ukraine 2017
Lemi Orhan Ergin
 
Let the Elephants Leave the Room: Tips for Making Development Life Leaner by ...
Bosnia Agile
 
How to Become a Conference Speaker
Sven Peters
 
Let the Elephants Leave the Room: Tips for Making Development Life Leaner by ...
Agile ME
 
GMO'less Software Development Practices
Lemi Orhan Ergin
 
Development without Testers: Myth or Real Option? (ConfeT&QA conference)
Mikalai Alimenkou
 
Code metrics in PHP
Julio Martinez
 
Symptoms of Bad Quality Software
ashokguduru
 
Pair Programming (2014)
Peter Kofler
 
Peer Code Review An Agile Process
gsporar
 
Why you should integrate peer code reviews in your software company
Matts Devriendt
 
Big Ball of Mud: Software Maintenance Nightmares
Gonzalo Rodríguez
 
Software Craftsmanship vs Software Engineering (Lightning Talk)
Andy Maleh
 
Pair programming demystified
Marek Kirejczyk
 
Best pratice
Eugenio Romano
 
Test Driven Design - GDG DevFest Istanbul 2016
Lemi Orhan Ergin
 
Pair Programming Presentation
ThoughtWorks
 
Tdd 4 everyone full version
Lior Israel
 
Importance of the quality of code
Shwe Yee
 

Similar to Unwritten Manual for Pair Programming (20)

PDF
Introducing Pair Programming
Steven Smith
 
PPT
Pair Programming: overview and concepts
Lior Kirshner-Shalom
 
PDF
Pair programming
Ion Zghibarta
 
PPT
Pair Programming
Siriwat Jithunsa
 
PPTX
Pair programming
Sandeep Rani
 
PDF
Pair Programming (2015)
Peter Kofler
 
PPTX
It Takes Two - A Case Study in Pair Programming
Andy Melichar
 
TXT
Pairing notes.md
Bertrand Le Foulgoc
 
PDF
Pair Programming in Theory and Practice By Garrick West
XP Conference India
 
PPTX
Pair programming- Mariusz Kozieł
Visuality
 
PDF
Software Development Practices Patterns: from Pair to Mob Programming
Herez Moise Kattan
 
PDF
The Art Of Pair Programming
Todd Merritt
 
PDF
Pair Programming :: Conferencia Agile Spain 2014
Pedro Gustavo Torres
 
ODP
Pair Programming Talk
jlangr
 
PPT
Pair Programming
JazzSodhi
 
PPTX
Pair Programming - Be the best pair you can be.
David Morgantini
 
PDF
Pair programming 2 > 1 + 1
Neha Batra
 
PDF
Demystifying pair programming, swarming and mob programming - Shrikant Vashis...
Technical Agility institute
 
PPTX
Unlocking your team's potential with pair programming (workshop)
Mattia Battiston
 
PPTX
Pair Programming :: SAPO Codebits 2014
Pedro Gustavo Torres
 
Introducing Pair Programming
Steven Smith
 
Pair Programming: overview and concepts
Lior Kirshner-Shalom
 
Pair programming
Ion Zghibarta
 
Pair Programming
Siriwat Jithunsa
 
Pair programming
Sandeep Rani
 
Pair Programming (2015)
Peter Kofler
 
It Takes Two - A Case Study in Pair Programming
Andy Melichar
 
Pairing notes.md
Bertrand Le Foulgoc
 
Pair Programming in Theory and Practice By Garrick West
XP Conference India
 
Pair programming- Mariusz Kozieł
Visuality
 
Software Development Practices Patterns: from Pair to Mob Programming
Herez Moise Kattan
 
The Art Of Pair Programming
Todd Merritt
 
Pair Programming :: Conferencia Agile Spain 2014
Pedro Gustavo Torres
 
Pair Programming Talk
jlangr
 
Pair Programming
JazzSodhi
 
Pair Programming - Be the best pair you can be.
David Morgantini
 
Pair programming 2 > 1 + 1
Neha Batra
 
Demystifying pair programming, swarming and mob programming - Shrikant Vashis...
Technical Agility institute
 
Unlocking your team's potential with pair programming (workshop)
Mattia Battiston
 
Pair Programming :: SAPO Codebits 2014
Pedro Gustavo Torres
 
Ad

More from Lemi Orhan Ergin (19)

PDF
Yeni Nesil Yazılım Kültürü: Daha İyi Profesyoneller, Daha Kaliteli Yazılım, D...
Lemi Orhan Ergin
 
PDF
Git Anti Patterns - XP Days Ukraine 2017
Lemi Orhan Ergin
 
PDF
Git Anti-Patterns - Extended Version With 28 Common Anti-Patterns) - SCTurkey...
Lemi Orhan Ergin
 
PDF
Git Anti-Patterns: How To Mess Up With Git and Love it Again - DevoxxPL 2017
Lemi Orhan Ergin
 
PDF
Yazılım Geliştirme Kültürünün Kodları: Motivasyon, Teknik Mükemmellik ve İnov...
Lemi Orhan Ergin
 
PDF
Git Anti-Patterns: How To Mess Up With Git and Love it Again
Lemi Orhan Ergin
 
PDF
Let The Elephants Leave The Room - Remove Waste in Software Development - Bos...
Lemi Orhan Ergin
 
PDF
Happy Developer's Guide to the Galaxy: Thinking About Motivation of Developers
Lemi Orhan Ergin
 
PDF
Git - Bildiğiniz Gibi Değil
Lemi Orhan Ergin
 
PDF
Code Your Agility - Tips for Boosting Technical Agility in Your Organization
Lemi Orhan Ergin
 
PDF
Lost in Motivation in an Agile World
Lemi Orhan Ergin
 
PDF
TDD - Inevitable Challenge for Software Developers (phpkonf15 keynote)
Lemi Orhan Ergin
 
PDF
Unleashed Power Behind The Myths: Pair Programming (CraftSummit15)
Lemi Orhan Ergin
 
PDF
Trespassing The Forgotten and Abandoned: Ethics in Software Development
Lemi Orhan Ergin
 
PDF
Software Craftsmanship - Building A Culture For The Future (GDG DevFest Istan...
Lemi Orhan Ergin
 
PDF
Teoriden Pratiğe Mikroservisler - Özgür Web Teknolojileri Günü 2014
Lemi Orhan Ergin
 
PDF
Let The Elephants Leave The Room - Tips For Making Your Development Life Leaner
Lemi Orhan Ergin
 
PDF
A Gentle Introduction to Micro Services - From Theory into Practice
Lemi Orhan Ergin
 
PDF
Fix Your Broken Windows With Code Reviews - phpist14
Lemi Orhan Ergin
 
Yeni Nesil Yazılım Kültürü: Daha İyi Profesyoneller, Daha Kaliteli Yazılım, D...
Lemi Orhan Ergin
 
Git Anti Patterns - XP Days Ukraine 2017
Lemi Orhan Ergin
 
Git Anti-Patterns - Extended Version With 28 Common Anti-Patterns) - SCTurkey...
Lemi Orhan Ergin
 
Git Anti-Patterns: How To Mess Up With Git and Love it Again - DevoxxPL 2017
Lemi Orhan Ergin
 
Yazılım Geliştirme Kültürünün Kodları: Motivasyon, Teknik Mükemmellik ve İnov...
Lemi Orhan Ergin
 
Git Anti-Patterns: How To Mess Up With Git and Love it Again
Lemi Orhan Ergin
 
Let The Elephants Leave The Room - Remove Waste in Software Development - Bos...
Lemi Orhan Ergin
 
Happy Developer's Guide to the Galaxy: Thinking About Motivation of Developers
Lemi Orhan Ergin
 
Git - Bildiğiniz Gibi Değil
Lemi Orhan Ergin
 
Code Your Agility - Tips for Boosting Technical Agility in Your Organization
Lemi Orhan Ergin
 
Lost in Motivation in an Agile World
Lemi Orhan Ergin
 
TDD - Inevitable Challenge for Software Developers (phpkonf15 keynote)
Lemi Orhan Ergin
 
Unleashed Power Behind The Myths: Pair Programming (CraftSummit15)
Lemi Orhan Ergin
 
Trespassing The Forgotten and Abandoned: Ethics in Software Development
Lemi Orhan Ergin
 
Software Craftsmanship - Building A Culture For The Future (GDG DevFest Istan...
Lemi Orhan Ergin
 
Teoriden Pratiğe Mikroservisler - Özgür Web Teknolojileri Günü 2014
Lemi Orhan Ergin
 
Let The Elephants Leave The Room - Tips For Making Your Development Life Leaner
Lemi Orhan Ergin
 
A Gentle Introduction to Micro Services - From Theory into Practice
Lemi Orhan Ergin
 
Fix Your Broken Windows With Code Reviews - phpist14
Lemi Orhan Ergin
 
Ad

Recently uploaded (20)

PDF
Instantiations Company Update (ESUG 2025)
ESUG
 
PDF
ESUG 2025: Pharo 13 and Beyond (Stephane Ducasse)
ESUG
 
PDF
Message Level Status (MLS): The Instant Feedback Mechanism for UAE e-Invoicin...
Prachi Desai
 
PPTX
iaas vs paas vs saas :choosing your cloud strategy
CloudlayaTechnology
 
PDF
chapter 5.pdf cyber security and Internet of things
PalakSharma980227
 
PPTX
Cutting Optimization Pro 5.18.2 Crack With Free Download
cracked shares
 
PDF
How Attendance Management Software is Revolutionizing Education.pdf
Pikmykid
 
PDF
Dialora AI Voice Agent for Customer Support
Dialora. Ai
 
PPTX
UI5con_2025_Accessibility_Ever_Evolving_
gerganakremenska1
 
PDF
custom development enhancement | Togglenow.pdf
aswinisuhu
 
PDF
Notification System for Construction Logistics Application
Safe Software
 
PPT
Brief History of Python by Learning Python in three hours
adanechb21
 
PDF
Show Which Projects Support Your Strategy and Deliver Results with OnePlan df
OnePlan Solutions
 
PDF
AI Image Enhancer: Revolutionizing Visual Quality”
docmasoom
 
PDF
How to Download and Install ADT (ABAP Development Tools) for Eclipse IDE | SA...
SAP Vista, an A L T Z E N Company
 
PPTX
ChessBase 18.02 Crack + Serial Key Free Download
cracked shares
 
PPTX
SAP Public Cloud PPT , SAP PPT, Public Cloud PPT
sonawanekundan2024
 
PDF
SAP GUI Installation Guide for macOS (iOS) | Connect to SAP Systems on Mac
SAP Vista, an A L T Z E N Company
 
PDF
Code and No-Code Journeys: The Maintenance Shortcut
Applitools
 
PDF
Australian Enterprises Need Project Service Automation
Navision India
 
Instantiations Company Update (ESUG 2025)
ESUG
 
ESUG 2025: Pharo 13 and Beyond (Stephane Ducasse)
ESUG
 
Message Level Status (MLS): The Instant Feedback Mechanism for UAE e-Invoicin...
Prachi Desai
 
iaas vs paas vs saas :choosing your cloud strategy
CloudlayaTechnology
 
chapter 5.pdf cyber security and Internet of things
PalakSharma980227
 
Cutting Optimization Pro 5.18.2 Crack With Free Download
cracked shares
 
How Attendance Management Software is Revolutionizing Education.pdf
Pikmykid
 
Dialora AI Voice Agent for Customer Support
Dialora. Ai
 
UI5con_2025_Accessibility_Ever_Evolving_
gerganakremenska1
 
custom development enhancement | Togglenow.pdf
aswinisuhu
 
Notification System for Construction Logistics Application
Safe Software
 
Brief History of Python by Learning Python in three hours
adanechb21
 
Show Which Projects Support Your Strategy and Deliver Results with OnePlan df
OnePlan Solutions
 
AI Image Enhancer: Revolutionizing Visual Quality”
docmasoom
 
How to Download and Install ADT (ABAP Development Tools) for Eclipse IDE | SA...
SAP Vista, an A L T Z E N Company
 
ChessBase 18.02 Crack + Serial Key Free Download
cracked shares
 
SAP Public Cloud PPT , SAP PPT, Public Cloud PPT
sonawanekundan2024
 
SAP GUI Installation Guide for macOS (iOS) | Connect to SAP Systems on Mac
SAP Vista, an A L T Z E N Company
 
Code and No-Code Journeys: The Maintenance Shortcut
Applitools
 
Australian Enterprises Need Project Service Automation
Navision India
 

Unwritten Manual for Pair Programming

  • 1. unwritten manual of pair programming Lemi Orhan Ergin
  • 2. What is the purpose of pair programming?
  • 6. (all the other points are side-products) producing software high quality
  • 7. Test Driven Development Behavior Driven Development Acceptance Testing Unit Testing Continuous Integration Continuous Delivery Emergent Simple Design Code Review Design Patterns Clean Code Principles Coding Standards SOLID Principles Continuous Deployment Enterprise Environments Version Control Systems PAIR PROGRAMMING a practice in development
  • 8. P.J. Plauger, one of the implementors of C: "At each terminal were two programmers! Of course, only one programmer was actually cutting code at each keyboard, but the others were peering over their shoulders.” 1978-1988 1995 “Developing in Pairs” pattern in Jim Complien's book "Pair Programming Illuminated", by Laurie Williams and Robert Kessler, is the first book devoted exclusively 2002 PAIR PROGRAMMING
  • 9. Core Practice in Extreme Programming http://www.extremeprogramming.org/rules/pair.html PAIR PROGRAMMING
  • 11. Social Skill PAIR PROGRAMMING it means it is not suitable for everyone
  • 15. Pairing does not amplify my productivity. Instead, it erases all the bad habits I have that keep me from being a superstar on my own. h!p://www.sarahmei.com/blog/201%4/14/thoughts-on-two-months-of-pairing
  • 16. PAIR PROGRAMMING 2 developers 1 machine 1 monitor 1 keyboard 1 mouse
  • 21. MANY PEOPLE HATE IT So that's why I don't like pair programming. My weaknesses are exaggerated and my strengths are vetoed. For me, pairing doesn't work. For plenty of others, it very clearly does work. But not me. And that's why I quit the best company I've ever worked for: Pivotal Labs. h!p://mwilden.blogspot.com.tr/2009/11/why-i-dont-like-pair-programming-and.html
  • 22. Learn how to do Have desire Define coding standards Have experienced people Practice and be patient Inspect and adapt PRACTICE PROGRAMMING PAIR TO MAKE STEPS YOURINDISPENSABLE
  • 24. DRIVER TacticianStrategist NAVIGATOR Codes Thinks about 
 how to code better Doesn’t dictate the code Programs out loud Thinks through problems Reviews code Does sanity testing Reads and checks
  • 25. Besides, if people program solo, they are more likely to make mistakes, more likely to over design, and more likely drop the other practices, particularly under pressure. XP Explained
  • 26. Higher quality in code Higher morale Better collaboration Shared knowledge Quicker to market Automatic code review Useful for training people Lower defect rates Faster defect removal Cannot force people Tiring Hard to setup common infra Hard to keep focus Clash of egos Harder for introverts No multiple committers Easy to do anti-patterns More effort on first & last sprint BENEFITS CAVEATS
  • 28. Select you pair wisely1 Don't force people who don't like each other to pair Two juniors might not be a good idea
  • 29. Start with a reasonably well- defined task before you sit down2 It's better if you do not need to investigate a lot how to program or which technologies to use
  • 30. Agree on one tiny goal at a time3 Define your checkpoints. Select minor goals.
  • 31. Rely on your partner and support him4
  • 32. Talk a lot!5 Does that look correct to you? Do you think this is a valid test? What’s next? Trust me! Do you have any better idea? I suggest better names for variables and classes I suggest to implement in smaller steps I suggest possible inputs that we haven’t covered Let me give you some details about this technology Think out loud
  • 33. Sync up frequently6 Ask for agreement Ask if you miss something
  • 34. Take a moment to celebrate7
  • 35. Rotate pairs in every 90 minutes8 Do not exceed 4-6 hours a day Understand not everything has to be paired
  • 36. Criticize the practice9 Do you do retrospectives?
  • 37. Schedule the pairings if required Pairing full time is not practical 25% for 3 days in a week 50% for 2 days in a week Revisit how you pair after sprints Talk on pairing schedules daily 10
  • 39. Give breaks1 Pair programming is an exthausting practive. Never exceed 50 mins. You can use pomodoro counters for 25 mins intervals.
  • 40. Switch the keyboard It's not a mentorship program, it is a development practice. Give that f*ucking keyboard to your pair and switch the roles. 2
  • 41. Write tests, no matter what You can get the most out of pair programming if you write tests. Try to write tests first and push yourself to do TDD. 3
  • 42. Take your personal time You need to read more, practice more, investigate more, learn more. Take your time for working alone at least few hours a day. 4
  • 43. Full day pairing is ok, but not sustainable You have to come to office at the same time, go to lunch together, take breaks at the same time, leave the office at the same time. 5
  • 44. Ask for used shortcuts, and learn Learn all the tricks and shortcuts your pair uses. If you notice your pair goes fast, stop him/her and ask the trick. 6
  • 45. Do not worry about silly mistakes Hey you know that. It is normal to do silly mistakes. Relax. If your pair makes you stressed, let him/her know! 7
  • 46. No one should be forced to pair However if pair programming is a core practice in your company, you might have to spend a lot of time with pairing. 8
  • 47. Ask for your pair's opinion Pairing is a matter of attitude. Do not always tell what to do. Ask for suggestions and discuss together. 9
  • 50. Do not fall into Anti-Pattern trap Know the ways how you can screw up pairing and do your best accordingly.
  • 51. Superman
 I am fast, give me keyboard Absent-Mind Ed
 I am too distracted The Back-Seat Driver
 Tons of non-trivial comments The King of Shortcuts
 Navigator knows all shortcuts and pushes to use Fearful Freddie
 Refusing to refactor code that you didn't write The Anti-Mentor
 Leaving the newbie alone while pairing The Soloist
 Works solo as much as possible The Defactorator
 Revert all refactorings the others did ANTIPATTERNS
  • 53. A writes a new test and sees that it fails
 B implements the code to pass the test
 B writes the next test
 A implements it
 And so on
 Refactoring is done whenever needed PING-PONG PAIRING Well suited for applying TDD If you aim to do remote pair programming, start with ping-pong
  • 54. GIT-PONG PAIRING $ git remote add personA <URL> $ git fetch personA $ git checkout personA/master $ git checkout -b feature/PA-231 add your changes and commit $ git push personA feature/PA-231 A B $ git checkout feature/PA-231 add your changes and commit $ git pull personA feature/PA-231
  • 55. A writes test B writes production code Repeat for 4-5 times A refactors all Switch roles MICRO PAIRING Similar to ping-pong, but you may pass a succeeding test and switch the keyboard
  • 56. It is an advanced skill, best suited for seasoned, well-practiced teams Any number of pairs might work on a task at various times until it is complete PROMISCUOUS PAIRING A does pair programming with B B does pair programming with C C does pair programming with D on the same task even on the same day
  • 57. 1 driver, multiple navigators Big projector or big TVs Switch every 15 minutes MOB PROGRAMMING The whole team works on the same thing, at the same time, in the same space, and at the same computer
  • 59. ENJOYremember whatever you do do not forget to https://www.flickr.com/photos/fraserspeirs/3394902061 Joe O'Brien and Jim Weirich while doing ruby code review