SlideShare ist ein Scribd-Unternehmen logo
1 von 29
Downloaden Sie, um offline zu lesen
Pair Programming
Austrian Institute of Technology,
NGCMS Jfx, March 2014
Peter Kofler, ‘Code Cop’
@codecopkofler
www.code-cop.org
Copyright Peter Kofler, licensed under CC-BY.
Peter Kofler
• Ph.D. (Appl. Math.)
• Professional Software
Developer for 14 years
• “fanatic about code quality”
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
Pair Programming
Pair Programming
●
Two programmers
●
work together
●
on the same thing
●
at one workstation.
Pair programming is a dialogue between
two people simultaneously programming
(and analysing and designing and testing)
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
Enterprise CTO
not impressed by
pair programming.
“We often have hundreds
of developers working
on the same thing.”
(Hacker News Onion)
What are the benefits?
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
Benefits
●
most immediate feedback
●
maintained self-discipline
●
we keep each other honest
●
improved code quality, less defects
●
knowledge sharing
●
higher team bus number
●
mentoring junior team members.
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
“One disadvantage of
pair programming: you
have to go the toilet in
pairs too :-)”
(Zsolt Fabók)
Pairing Roles
Driver
●
Writes code
●
Takes the decisions
●
Consults with the Navigator
●
Focuses on short term actions
●
Verbalizes all the performed actions
●
Less-informed pair member is driving
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
http://www.slideshare.net/adibolb/sherlock-holmes-and-pairing-wlidcard-conference-2013-09-13
Navigator
●
Looks ahead for strategy
●
Rechecks facts of the Driver (review)
●
Remembers facts to the driver
●
Asks meaningful questions
●
Verbalizes agreement or disagreement
●
Supports driver's decisions
●
Does not cross the Driver's comfort zone
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
The Rules
You Pair For...
●
Writing Production Code (XP Rule)
●
Any development on the mainline of
delivery (writing code, writing tests,
build engineering, documentation)
●
Works well for web applications
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
Pairing is Useful For...
●
Tasks that need focused energy,
brainstorming, problem solving,
continuous design, mentoring and
motivation.
●
Pair by default and work solo by
exception. (Novice Rule)
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
When Not to Pair
●
Non-mainline tasks like spiking
(prototyping), research, admin.
●
Tasks which call for quiet, steady focus.
●
Don’t insist on pairing for every task.
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
How Long
●
70% of time, not more than 5 or 6 hours
●
Breaks!
●
Shift partners often
●
every hour to every couple of hours
●
Pair Marriage is bad
●
Need quiet work time.
●
When interrupted, the negative impact
is doubled.
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
Workstation
●
Partners sit comfortably side-by-side.
●
Level 0: Basic Pairing
●
Level 1: Good Pairing - two keyboards
●
Level 2: Great Pairing - mirrored screen
●
Level 3: Awesome Pairing - eye contact
●
Level 4: “Pair”-adise - extra laptop
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
http://www.nomachetejuggling.com/2011/08/25/mechanics-of-good-pairing/
Mob Programming
●
All the brilliant people
●
working at the same time,
●
in the same space,
●
at the same computer,
●
on the same thing.
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
http://mobprogramming.org/
Human Aspects
Breaking the ice
●
Difficult to start pairing
●
The first sessions are awkward
●
Pairs open themselves one to the other
●
Afraid of criticism
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
Behave Well
●
Personal hygiene is important.
●
Take a shower (1st
Rule of Pairing)
●
Use chewing gum
●
Be polite!
●
Have patience!
●
Be honest!
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
“In pair programming
wait 15 seconds before
you point out mistakes.
Give your pair a chance
to find it first.”
(J. B. Rainsberger)
Communicate Freely
●
Focus on the code
●
Ask questions
●
Express things (even to a newbie)
●
Talk about the code
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
http://www.slideshare.net/angelaharms/pair-programming-10082278
Anti Patterns
●
Do not focus on typing/coding
●
Do not hug the keyboard
●
Do not dominate your pair
●
Do not zone out (mobile phone etc.)
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
Not for everyone
●
Do I want to sit next
to this person every day?
●
In doubt raise your voice
(don’t risk the project)
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
“Don’t be afraid of pair-
programming - you’re
not as good as you think,
but you’re not as bad as
you fear.”
(Ron Jeffries)
Peter Kofler
@codecopkofler
www.code-cop.org
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
CC Images
●
driver http://www.flickr.com/photos/48694743@N00/517658329/
●
pairing http://www.flickr.com/photos/dav/94735395/
●
wants you http://www.flickr.com/photos/shutter/105497713/
●
rules http://www.flickr.com/photos/mc_sensei/3935815039/
●
learn http://www.flickr.com/photos/83633410@N07/7658268052/
●
sign http://www.flickr.com/photos/hugosimmelink/2252095723/
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY

Weitere ähnliche Inhalte

Was ist angesagt?

Arch factory - Agile Design: Best Practices
Arch factory - Agile Design: Best PracticesArch factory - Agile Design: Best Practices
Arch factory - Agile Design: Best Practices
Igor Moochnick
 
Best practices for agile design
Best practices for agile designBest practices for agile design
Best practices for agile design
Igor Moochnick
 
Agile software development and extreme Programming
Agile software development and extreme Programming  Agile software development and extreme Programming
Agile software development and extreme Programming
Fatemeh Karimi
 
I Smell A RAT- Rapid Application Testing
I Smell A RAT- Rapid Application TestingI Smell A RAT- Rapid Application Testing
I Smell A RAT- Rapid Application Testing
Peter Presnell
 

Was ist angesagt? (20)

Extreme programming
Extreme programmingExtreme programming
Extreme programming
 
Going extreme-with-extreme-programming
Going extreme-with-extreme-programmingGoing extreme-with-extreme-programming
Going extreme-with-extreme-programming
 
Coderetreat - Practice to Master Your Crafts
Coderetreat - Practice to Master Your CraftsCoderetreat - Practice to Master Your Crafts
Coderetreat - Practice to Master Your Crafts
 
Extreme programming - a quick and agile overview !
Extreme programming - a quick and agile overview !Extreme programming - a quick and agile overview !
Extreme programming - a quick and agile overview !
 
Software Craftsmanship vs Software Engineering (Lightning Talk)
Software Craftsmanship vs Software Engineering (Lightning Talk)Software Craftsmanship vs Software Engineering (Lightning Talk)
Software Craftsmanship vs Software Engineering (Lightning Talk)
 
Xtreme Programming
Xtreme ProgrammingXtreme Programming
Xtreme Programming
 
Arch factory - Agile Design: Best Practices
Arch factory - Agile Design: Best PracticesArch factory - Agile Design: Best Practices
Arch factory - Agile Design: Best Practices
 
Agile Practices
Agile PracticesAgile Practices
Agile Practices
 
Xp(Xtreme Programming) presentation
Xp(Xtreme Programming) presentationXp(Xtreme Programming) presentation
Xp(Xtreme Programming) presentation
 
Agile and test driven development
Agile and test driven developmentAgile and test driven development
Agile and test driven development
 
extreme Programming
extreme Programmingextreme Programming
extreme Programming
 
Extreme Programming
Extreme ProgrammingExtreme Programming
Extreme Programming
 
The Software Craftsman (2nd edition)
The Software Craftsman (2nd edition)The Software Craftsman (2nd edition)
The Software Craftsman (2nd edition)
 
The Software Craftsman
The Software CraftsmanThe Software Craftsman
The Software Craftsman
 
Best practices for agile design
Best practices for agile designBest practices for agile design
Best practices for agile design
 
Agile software development and extreme Programming
Agile software development and extreme Programming  Agile software development and extreme Programming
Agile software development and extreme Programming
 
Software testing
Software testingSoftware testing
Software testing
 
I Smell A RAT- Rapid Application Testing
I Smell A RAT- Rapid Application TestingI Smell A RAT- Rapid Application Testing
I Smell A RAT- Rapid Application Testing
 
How To Review The Sprints Efficiently
How To Review The Sprints EfficientlyHow To Review The Sprints Efficiently
How To Review The Sprints Efficiently
 
XP Explained
XP ExplainedXP Explained
XP Explained
 

Ähnlich wie Pair Programming (2014)

Coding Dojo: Fun with Tic-Tac-Toe (2014)
Coding Dojo: Fun with Tic-Tac-Toe (2014)Coding Dojo: Fun with Tic-Tac-Toe (2014)
Coding Dojo: Fun with Tic-Tac-Toe (2014)
Peter Kofler
 
Coding Dojo: Bank OCR (2014)
Coding Dojo: Bank OCR (2014)Coding Dojo: Bank OCR (2014)
Coding Dojo: Bank OCR (2014)
Peter Kofler
 
Deliberate Practice (2014)
Deliberate Practice (2014)Deliberate Practice (2014)
Deliberate Practice (2014)
Peter Kofler
 
Coding Dojo: Roman Numerals (2014)
Coding Dojo: Roman Numerals (2014)Coding Dojo: Roman Numerals (2014)
Coding Dojo: Roman Numerals (2014)
Peter Kofler
 
Code Quality Assurance v4 (2013)
Code Quality Assurance v4 (2013)Code Quality Assurance v4 (2013)
Code Quality Assurance v4 (2013)
Peter Kofler
 
The Brutal Refactoring Game (2013)
The Brutal Refactoring Game (2013)The Brutal Refactoring Game (2013)
The Brutal Refactoring Game (2013)
Peter Kofler
 
Coding Dojo: Mars Rover (2014)
Coding Dojo: Mars Rover (2014)Coding Dojo: Mars Rover (2014)
Coding Dojo: Mars Rover (2014)
Peter Kofler
 
Coding Dojo: Baby Steps (2014)
Coding Dojo: Baby Steps (2014)Coding Dojo: Baby Steps (2014)
Coding Dojo: Baby Steps (2014)
Peter Kofler
 

Ähnlich wie Pair Programming (2014) (20)

Pair Programming (2015)
Pair Programming (2015)Pair Programming (2015)
Pair Programming (2015)
 
Coding Dojo: Fun with Tic-Tac-Toe (2014)
Coding Dojo: Fun with Tic-Tac-Toe (2014)Coding Dojo: Fun with Tic-Tac-Toe (2014)
Coding Dojo: Fun with Tic-Tac-Toe (2014)
 
Coding Dojo: Bank OCR (2014)
Coding Dojo: Bank OCR (2014)Coding Dojo: Bank OCR (2014)
Coding Dojo: Bank OCR (2014)
 
Deliberate Practice (Agile Slovenia 2015)
Deliberate Practice (Agile Slovenia 2015)Deliberate Practice (Agile Slovenia 2015)
Deliberate Practice (Agile Slovenia 2015)
 
JUnit Boot Camp (GeeCON 2016)
JUnit Boot Camp (GeeCON 2016)JUnit Boot Camp (GeeCON 2016)
JUnit Boot Camp (GeeCON 2016)
 
Deliberate Practice (2014)
Deliberate Practice (2014)Deliberate Practice (2014)
Deliberate Practice (2014)
 
Coding Dojo: Roman Numerals (2014)
Coding Dojo: Roman Numerals (2014)Coding Dojo: Roman Numerals (2014)
Coding Dojo: Roman Numerals (2014)
 
Coding Dojo: Naming with Dices (2021)
Coding Dojo: Naming with Dices (2021)Coding Dojo: Naming with Dices (2021)
Coding Dojo: Naming with Dices (2021)
 
Prime Factors Code Kata - Practicing TDD (2014)
Prime Factors Code Kata - Practicing TDD (2014)Prime Factors Code Kata - Practicing TDD (2014)
Prime Factors Code Kata - Practicing TDD (2014)
 
TDD as if You Meant It (2013)
TDD as if You Meant It (2013)TDD as if You Meant It (2013)
TDD as if You Meant It (2013)
 
Code Quality Assurance v4 (2013)
Code Quality Assurance v4 (2013)Code Quality Assurance v4 (2013)
Code Quality Assurance v4 (2013)
 
Refactoring the Tennis Kata v2 (2016)
Refactoring the Tennis Kata v2 (2016)Refactoring the Tennis Kata v2 (2016)
Refactoring the Tennis Kata v2 (2016)
 
Coding Dojo: Functional Calisthenics (2016)
Coding Dojo: Functional Calisthenics (2016)Coding Dojo: Functional Calisthenics (2016)
Coding Dojo: Functional Calisthenics (2016)
 
Coding Dojo: Baby Steps Push Challenge (2021)
Coding Dojo: Baby Steps Push Challenge (2021)Coding Dojo: Baby Steps Push Challenge (2021)
Coding Dojo: Baby Steps Push Challenge (2021)
 
Code Retreat Venice (2016)
Code Retreat Venice (2016)Code Retreat Venice (2016)
Code Retreat Venice (2016)
 
The Brutal Refactoring Game (2013)
The Brutal Refactoring Game (2013)The Brutal Refactoring Game (2013)
The Brutal Refactoring Game (2013)
 
Deliberate Practice, New Learning Styles (2015)
Deliberate Practice, New Learning Styles (2015)Deliberate Practice, New Learning Styles (2015)
Deliberate Practice, New Learning Styles (2015)
 
Mob Programming (2016)
Mob Programming (2016)Mob Programming (2016)
Mob Programming (2016)
 
Coding Dojo: Mars Rover (2014)
Coding Dojo: Mars Rover (2014)Coding Dojo: Mars Rover (2014)
Coding Dojo: Mars Rover (2014)
 
Coding Dojo: Baby Steps (2014)
Coding Dojo: Baby Steps (2014)Coding Dojo: Baby Steps (2014)
Coding Dojo: Baby Steps (2014)
 

Mehr von Peter Kofler

Coding Dojo for Testers/Testing Dojo: Designing Test Cases with FitNesse (2014)
Coding Dojo for Testers/Testing Dojo: Designing Test Cases with FitNesse (2014)Coding Dojo for Testers/Testing Dojo: Designing Test Cases with FitNesse (2014)
Coding Dojo for Testers/Testing Dojo: Designing Test Cases with FitNesse (2014)
Peter Kofler
 
Code Refactoring - Live Coding Demo (JavaDay 2014)
Code Refactoring - Live Coding Demo (JavaDay 2014)Code Refactoring - Live Coding Demo (JavaDay 2014)
Code Refactoring - Live Coding Demo (JavaDay 2014)
Peter Kofler
 

Mehr von Peter Kofler (17)

Writing Tests with the Unity Test Framework
Writing Tests with the Unity Test FrameworkWriting Tests with the Unity Test Framework
Writing Tests with the Unity Test Framework
 
Outside-in Test Driven Development - the London School of TDD
Outside-in Test Driven Development - the London School of TDDOutside-in Test Driven Development - the London School of TDD
Outside-in Test Driven Development - the London School of TDD
 
Using Automated Code Reviews to Achieve Continuous Quality (ASQF Agile Night ...
Using Automated Code Reviews to Achieve Continuous Quality (ASQF Agile Night ...Using Automated Code Reviews to Achieve Continuous Quality (ASQF Agile Night ...
Using Automated Code Reviews to Achieve Continuous Quality (ASQF Agile Night ...
 
Pragmatic Introduction to Python Unit Testing (PyDays 2018)
Pragmatic Introduction to Python Unit Testing (PyDays 2018)Pragmatic Introduction to Python Unit Testing (PyDays 2018)
Pragmatic Introduction to Python Unit Testing (PyDays 2018)
 
Coding Dojo Object Calisthenics (2016)
Coding Dojo Object Calisthenics (2016)Coding Dojo Object Calisthenics (2016)
Coding Dojo Object Calisthenics (2016)
 
Brutal Coding Constraints (ITAKE 2017)
Brutal Coding Constraints (ITAKE 2017)Brutal Coding Constraints (ITAKE 2017)
Brutal Coding Constraints (ITAKE 2017)
 
Designing Test Cases for the Gilded Rose Kata v3 (2016)
Designing Test Cases for the Gilded Rose Kata v3 (2016)Designing Test Cases for the Gilded Rose Kata v3 (2016)
Designing Test Cases for the Gilded Rose Kata v3 (2016)
 
Coding Dojo: Asynchronous Clock-In (2016)
Coding Dojo: Asynchronous Clock-In (2016)Coding Dojo: Asynchronous Clock-In (2016)
Coding Dojo: Asynchronous Clock-In (2016)
 
Coding Dojo: Data Munging (2016)
Coding Dojo: Data Munging (2016)Coding Dojo: Data Munging (2016)
Coding Dojo: Data Munging (2016)
 
Clean Readable Specifications (ETC 2016)
Clean Readable Specifications (ETC 2016)Clean Readable Specifications (ETC 2016)
Clean Readable Specifications (ETC 2016)
 
Extract Method Refactoring Workshop (2016)
Extract Method Refactoring Workshop (2016)Extract Method Refactoring Workshop (2016)
Extract Method Refactoring Workshop (2016)
 
GDCR15 in Las Palmas, Gran Canaria
GDCR15 in Las Palmas, Gran CanariaGDCR15 in Las Palmas, Gran Canaria
GDCR15 in Las Palmas, Gran Canaria
 
Designing Test Cases for the Gilded Rose Kata v2 (2015)
Designing Test Cases for the Gilded Rose Kata v2 (2015)Designing Test Cases for the Gilded Rose Kata v2 (2015)
Designing Test Cases for the Gilded Rose Kata v2 (2015)
 
Coding Dojo: Bank OCR Outside-In (2015)
Coding Dojo: Bank OCR Outside-In (2015)Coding Dojo: Bank OCR Outside-In (2015)
Coding Dojo: Bank OCR Outside-In (2015)
 
Pragmatic Introduction to PHP Unit Testing (2015)
Pragmatic Introduction to PHP Unit Testing (2015)Pragmatic Introduction to PHP Unit Testing (2015)
Pragmatic Introduction to PHP Unit Testing (2015)
 
Coding Dojo for Testers/Testing Dojo: Designing Test Cases with FitNesse (2014)
Coding Dojo for Testers/Testing Dojo: Designing Test Cases with FitNesse (2014)Coding Dojo for Testers/Testing Dojo: Designing Test Cases with FitNesse (2014)
Coding Dojo for Testers/Testing Dojo: Designing Test Cases with FitNesse (2014)
 
Code Refactoring - Live Coding Demo (JavaDay 2014)
Code Refactoring - Live Coding Demo (JavaDay 2014)Code Refactoring - Live Coding Demo (JavaDay 2014)
Code Refactoring - Live Coding Demo (JavaDay 2014)
 

Kürzlich hochgeladen

Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Kürzlich hochgeladen (20)

Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 

Pair Programming (2014)

  • 1. Pair Programming Austrian Institute of Technology, NGCMS Jfx, March 2014 Peter Kofler, ‘Code Cop’ @codecopkofler www.code-cop.org Copyright Peter Kofler, licensed under CC-BY.
  • 2. Peter Kofler • Ph.D. (Appl. Math.) • Professional Software Developer for 14 years • “fanatic about code quality” PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  • 4. Pair Programming ● Two programmers ● work together ● on the same thing ● at one workstation. Pair programming is a dialogue between two people simultaneously programming (and analysing and designing and testing) PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  • 5. Enterprise CTO not impressed by pair programming. “We often have hundreds of developers working on the same thing.” (Hacker News Onion)
  • 6. What are the benefits? PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  • 7. Benefits ● most immediate feedback ● maintained self-discipline ● we keep each other honest ● improved code quality, less defects ● knowledge sharing ● higher team bus number ● mentoring junior team members. PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  • 8. “One disadvantage of pair programming: you have to go the toilet in pairs too :-)” (Zsolt Fabók)
  • 10. Driver ● Writes code ● Takes the decisions ● Consults with the Navigator ● Focuses on short term actions ● Verbalizes all the performed actions ● Less-informed pair member is driving PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY http://www.slideshare.net/adibolb/sherlock-holmes-and-pairing-wlidcard-conference-2013-09-13
  • 11. Navigator ● Looks ahead for strategy ● Rechecks facts of the Driver (review) ● Remembers facts to the driver ● Asks meaningful questions ● Verbalizes agreement or disagreement ● Supports driver's decisions ● Does not cross the Driver's comfort zone PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  • 13. You Pair For... ● Writing Production Code (XP Rule) ● Any development on the mainline of delivery (writing code, writing tests, build engineering, documentation) ● Works well for web applications PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  • 14. Pairing is Useful For... ● Tasks that need focused energy, brainstorming, problem solving, continuous design, mentoring and motivation. ● Pair by default and work solo by exception. (Novice Rule) PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  • 15. When Not to Pair ● Non-mainline tasks like spiking (prototyping), research, admin. ● Tasks which call for quiet, steady focus. ● Don’t insist on pairing for every task. PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  • 16. How Long ● 70% of time, not more than 5 or 6 hours ● Breaks! ● Shift partners often ● every hour to every couple of hours ● Pair Marriage is bad ● Need quiet work time. ● When interrupted, the negative impact is doubled. PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  • 17. Workstation ● Partners sit comfortably side-by-side. ● Level 0: Basic Pairing ● Level 1: Good Pairing - two keyboards ● Level 2: Great Pairing - mirrored screen ● Level 3: Awesome Pairing - eye contact ● Level 4: “Pair”-adise - extra laptop PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY http://www.nomachetejuggling.com/2011/08/25/mechanics-of-good-pairing/
  • 18. Mob Programming ● All the brilliant people ● working at the same time, ● in the same space, ● at the same computer, ● on the same thing. PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY http://mobprogramming.org/
  • 20. Breaking the ice ● Difficult to start pairing ● The first sessions are awkward ● Pairs open themselves one to the other ● Afraid of criticism PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  • 21. Behave Well ● Personal hygiene is important. ● Take a shower (1st Rule of Pairing) ● Use chewing gum ● Be polite! ● Have patience! ● Be honest! PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  • 22. “In pair programming wait 15 seconds before you point out mistakes. Give your pair a chance to find it first.” (J. B. Rainsberger)
  • 23. Communicate Freely ● Focus on the code ● Ask questions ● Express things (even to a newbie) ● Talk about the code PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY http://www.slideshare.net/angelaharms/pair-programming-10082278
  • 24. Anti Patterns ● Do not focus on typing/coding ● Do not hug the keyboard ● Do not dominate your pair ● Do not zone out (mobile phone etc.) PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  • 25.
  • 26. Not for everyone ● Do I want to sit next to this person every day? ● In doubt raise your voice (don’t risk the project) PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  • 27. “Don’t be afraid of pair- programming - you’re not as good as you think, but you’re not as bad as you fear.” (Ron Jeffries)
  • 28. Peter Kofler @codecopkofler www.code-cop.org PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  • 29. CC Images ● driver http://www.flickr.com/photos/48694743@N00/517658329/ ● pairing http://www.flickr.com/photos/dav/94735395/ ● wants you http://www.flickr.com/photos/shutter/105497713/ ● rules http://www.flickr.com/photos/mc_sensei/3935815039/ ● learn http://www.flickr.com/photos/83633410@N07/7658268052/ ● sign http://www.flickr.com/photos/hugosimmelink/2252095723/ PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY