SlideShare a Scribd company logo
1 of 18
Welcome to
Anthony Sciamanna | @asciamanna
THE ORGANIZERS…
Heather Blair
Nick Goede
Anthony Palumbi
Mark Schell
Anthony Sciamanna
@phillyxp
TONIGHT’S TOPIC
@phillyxp
Pair Programming & TDD
Pair Programming Misconceptions
FEATURE FACTORIES
@phillyxp
“Two people doing the work of one?? That’s a waste of expensive resources!”
An antiquated factory mindset where number of keystrokes per
hour and 100% utilization of developers are the goals
Image courtesy of @johncutlefish
FEATURE FACTORIES
 If we measure the value we are delivering to
customers there is a compelling argument for
pairing
 Pairing often reduces the time to market for
features
@phillyxp
SELECTIVE PAIR PROGRAMMING
@phillyxp
“Most development tasks aren’t worth pairing on. We only pair when it
is appropriate.”
SELECTIVE PAIR PROGRAMMING
 Developers only pair in very specific situations
 To onboard a new developer
 When someone gets stuck
 Effective pair programming is deceptively
challenging
 The less you do it the less useful it is to you
@phillyxp
Sometimes pair programming doesn't "take" -- most
frequently when it's framed as one programmer helping
out another who's struggling.
-Tim Ottinger, Agile Coach and Author
SELECTIVE PAIR PROGRAMMING CATCH-22
@phillyxp
Developers think
pairing all the time is
too prescriptive
Only pair for “special
circumstances”
Pairing occurs so
infrequently
developers never
build pairing skills
Without the skills to
effectively pair
developers fail to see its
benefit in the day-to-day
work
WHY SHOULD WE PAIR PROGRAM?
 Encourages team collaboration and team based design and
development
 Improves / Creates opportunities for mentoring
 Drastically reduces onboarding time
 Flattens learning curves
 Knowledge travels through team quickly
 Builds trust / Team building
 Reinforces collective code ownership
 Eliminates Towers of Knowlege
 When paired with TDD creates a powerful workflow
 Results in higher quality code
 Limits WIP
 Encourages Swarming
 JIT code reviews (non-blocking code reviews)
 Interruption blocker
 Social pressure not to get distracted / Pairs stay in flow longer
@phillyxp
@phillyxp
Test-Driven Development Refresher
2. Write only
enough
production code
to make the test
pass
1. Create a failing unit test
(not compiling counts as a
failing test)
3. Refactor only when all unit tests
are passing
Ping Pong
Pair
Programmi
ng
@phillyxp
Nick Anthony
Writes a failing test Makes the test pass
Writes the next failing testMakes the next test pass
Only when all tests pass either person can refactor
Continue until both people agree there are no more tests to write
@phillyxp
WORKSHOP
 Split up into pairs…
 Non-developers can pair with a developer or join a pair
as a third person
@phillyxp
[When pairing] learning happens every minute of every
day while actual work is being done.
-Richard Sheridan, Author of Joy, Inc. and CEO of Menlo
Innovations
WORKSHOP REPOSITORY
 SSH - git@github.com:PhillyXP/pair-programming-
workshop.git
 HTTPS - https://github.com/PhillyXP/pair-
programming-workshop.git
@phillyxp
WORKSHOP DEVELOPMENT TASKS
 As a Bill Payer I want to pay my mortgage bill on the first
business day that is on or after the due date
 As a Bill Payer I want to pay my water bill on the first business
day that is on or before the due date
 As a Bill Payer I want to treat holidays as non-business days
(external holiday service)
 As a Bill Payer I want to pay my electric bill on the first
business day that is closest to the due date
@phillyxp
HINT TO GET STARTED:
Create objects with public methods that take a date and
return a modified date based on business rules
IDEAL PAIRING WORKSTATION
@phillyxp
RESOURCES
 The Costs and Benefits of Pair Programming
 https://collaboration.csc.ncsu.edu/laurie/Papers/XPSardinia.PDF
 Ping Pong Pair Programming
 http://anthonysciamanna.com/2015/04/18/ping-pong-pair-
programming.html
 These books are excellent resources on pair programming
@phillyxp

More Related Content

What's hot

Why do mobile projects (still) fail - September 2014 edition
Why do mobile projects (still) fail - September 2014 editionWhy do mobile projects (still) fail - September 2014 edition
Why do mobile projects (still) fail - September 2014 editionIndiginox
 
Waste Driven Development - Agile Coaching Serbia Meetup
Waste Driven Development - Agile Coaching Serbia MeetupWaste Driven Development - Agile Coaching Serbia Meetup
Waste Driven Development - Agile Coaching Serbia MeetupLemi Orhan Ergin
 
Rapid Prototyping Nearsoft Workshop
Rapid Prototyping Nearsoft WorkshopRapid Prototyping Nearsoft Workshop
Rapid Prototyping Nearsoft WorkshopMisael Leon
 
Gluing it all together: How teams can build enterprise JavaScript application...
Gluing it all together: How teams can build enterprise JavaScript application...Gluing it all together: How teams can build enterprise JavaScript application...
Gluing it all together: How teams can build enterprise JavaScript application...Codemotion
 
Coderetreat - Practice to Master Your Crafts
Coderetreat - Practice to Master Your CraftsCoderetreat - Practice to Master Your Crafts
Coderetreat - Practice to Master Your CraftsLemi Orhan Ergin
 
Software Craftsmanship @ Ntnu
Software Craftsmanship @ NtnuSoftware Craftsmanship @ Ntnu
Software Craftsmanship @ Ntnugoeran
 
Cloud foundry, Lessons Learned at The Home Depot
Cloud foundry, Lessons Learned at The Home Depot Cloud foundry, Lessons Learned at The Home Depot
Cloud foundry, Lessons Learned at The Home Depot James Watters
 
Top Java IDE keyboard shortcuts for Eclipse, IntelliJIDEA, NetBeans (report p...
Top Java IDE keyboard shortcuts for Eclipse, IntelliJIDEA, NetBeans (report p...Top Java IDE keyboard shortcuts for Eclipse, IntelliJIDEA, NetBeans (report p...
Top Java IDE keyboard shortcuts for Eclipse, IntelliJIDEA, NetBeans (report p...ZeroTurnaround
 
Home Depot - From Platform Ops to Dev Enablement
Home Depot - From Platform Ops to Dev EnablementHome Depot - From Platform Ops to Dev Enablement
Home Depot - From Platform Ops to Dev EnablementAnthony McCulley
 
From 0 to 1000 Apps: The First Year of Cloud Foundry at the Home Depot
From 0 to 1000 Apps: The First Year of Cloud Foundry at the Home DepotFrom 0 to 1000 Apps: The First Year of Cloud Foundry at the Home Depot
From 0 to 1000 Apps: The First Year of Cloud Foundry at the Home DepotVMware Tanzu
 
When Feature Flags Go Bad : How Not to Have Feature Flags Be Used Incorrectly...
When Feature Flags Go Bad : How Not to Have Feature Flags Be Used Incorrectly...When Feature Flags Go Bad : How Not to Have Feature Flags Be Used Incorrectly...
When Feature Flags Go Bad : How Not to Have Feature Flags Be Used Incorrectly...LaunchDarkly
 
JavaOne 2016 - The DevOps Disaster
JavaOne 2016 -  The DevOps DisasterJavaOne 2016 -  The DevOps Disaster
JavaOne 2016 - The DevOps DisasterBert Jan Schrijver
 
Codemotion Amsterdam 2016 - The DevOps Disaster
Codemotion Amsterdam 2016 - The DevOps DisasterCodemotion Amsterdam 2016 - The DevOps Disaster
Codemotion Amsterdam 2016 - The DevOps DisasterBert Jan Schrijver
 
Productive Programmer - Using IDE effectively and various small practices to ...
Productive Programmer - Using IDE effectively and various small practices to ...Productive Programmer - Using IDE effectively and various small practices to ...
Productive Programmer - Using IDE effectively and various small practices to ...Bhavin Javia
 
Ditch Your Desktop! Lead Your Team into Cloud Computing! (workbook)
Ditch Your Desktop! Lead Your Team into Cloud Computing! (workbook)Ditch Your Desktop! Lead Your Team into Cloud Computing! (workbook)
Ditch Your Desktop! Lead Your Team into Cloud Computing! (workbook)Lauren Hayward Schaefer
 
Fighting with Waste Driven Development - XP Days Ukraine 2017
Fighting with Waste Driven Development - XP Days Ukraine 2017Fighting with Waste Driven Development - XP Days Ukraine 2017
Fighting with Waste Driven Development - XP Days Ukraine 2017Lemi Orhan Ergin
 
QConSF 2017: DevOps 2.0 - When Everyone Can Run What's Built
QConSF 2017: DevOps 2.0 - When Everyone Can Run What's Built QConSF 2017: DevOps 2.0 - When Everyone Can Run What's Built
QConSF 2017: DevOps 2.0 - When Everyone Can Run What's Built LaunchDarkly
 
The Cultural Changes of Feature Flagging
The Cultural Changes of Feature FlaggingThe Cultural Changes of Feature Flagging
The Cultural Changes of Feature FlaggingLaunchDarkly
 

What's hot (20)

Why do mobile projects (still) fail - September 2014 edition
Why do mobile projects (still) fail - September 2014 editionWhy do mobile projects (still) fail - September 2014 edition
Why do mobile projects (still) fail - September 2014 edition
 
Waste Driven Development - Agile Coaching Serbia Meetup
Waste Driven Development - Agile Coaching Serbia MeetupWaste Driven Development - Agile Coaching Serbia Meetup
Waste Driven Development - Agile Coaching Serbia Meetup
 
Rapid Prototyping Nearsoft Workshop
Rapid Prototyping Nearsoft WorkshopRapid Prototyping Nearsoft Workshop
Rapid Prototyping Nearsoft Workshop
 
Gluing it all together: How teams can build enterprise JavaScript application...
Gluing it all together: How teams can build enterprise JavaScript application...Gluing it all together: How teams can build enterprise JavaScript application...
Gluing it all together: How teams can build enterprise JavaScript application...
 
Coderetreat - Practice to Master Your Crafts
Coderetreat - Practice to Master Your CraftsCoderetreat - Practice to Master Your Crafts
Coderetreat - Practice to Master Your Crafts
 
Software Craftsmanship @ Ntnu
Software Craftsmanship @ NtnuSoftware Craftsmanship @ Ntnu
Software Craftsmanship @ Ntnu
 
DevOps Unicorns
DevOps UnicornsDevOps Unicorns
DevOps Unicorns
 
Cloud foundry, Lessons Learned at The Home Depot
Cloud foundry, Lessons Learned at The Home Depot Cloud foundry, Lessons Learned at The Home Depot
Cloud foundry, Lessons Learned at The Home Depot
 
Top Java IDE keyboard shortcuts for Eclipse, IntelliJIDEA, NetBeans (report p...
Top Java IDE keyboard shortcuts for Eclipse, IntelliJIDEA, NetBeans (report p...Top Java IDE keyboard shortcuts for Eclipse, IntelliJIDEA, NetBeans (report p...
Top Java IDE keyboard shortcuts for Eclipse, IntelliJIDEA, NetBeans (report p...
 
Home Depot - From Platform Ops to Dev Enablement
Home Depot - From Platform Ops to Dev EnablementHome Depot - From Platform Ops to Dev Enablement
Home Depot - From Platform Ops to Dev Enablement
 
From 0 to 1000 Apps: The First Year of Cloud Foundry at the Home Depot
From 0 to 1000 Apps: The First Year of Cloud Foundry at the Home DepotFrom 0 to 1000 Apps: The First Year of Cloud Foundry at the Home Depot
From 0 to 1000 Apps: The First Year of Cloud Foundry at the Home Depot
 
When Feature Flags Go Bad : How Not to Have Feature Flags Be Used Incorrectly...
When Feature Flags Go Bad : How Not to Have Feature Flags Be Used Incorrectly...When Feature Flags Go Bad : How Not to Have Feature Flags Be Used Incorrectly...
When Feature Flags Go Bad : How Not to Have Feature Flags Be Used Incorrectly...
 
JavaOne 2016 - The DevOps Disaster
JavaOne 2016 -  The DevOps DisasterJavaOne 2016 -  The DevOps Disaster
JavaOne 2016 - The DevOps Disaster
 
Codemotion Amsterdam 2016 - The DevOps Disaster
Codemotion Amsterdam 2016 - The DevOps DisasterCodemotion Amsterdam 2016 - The DevOps Disaster
Codemotion Amsterdam 2016 - The DevOps Disaster
 
Productive Programmer - Using IDE effectively and various small practices to ...
Productive Programmer - Using IDE effectively and various small practices to ...Productive Programmer - Using IDE effectively and various small practices to ...
Productive Programmer - Using IDE effectively and various small practices to ...
 
Ditch Your Desktop! Lead Your Team into Cloud Computing! (workbook)
Ditch Your Desktop! Lead Your Team into Cloud Computing! (workbook)Ditch Your Desktop! Lead Your Team into Cloud Computing! (workbook)
Ditch Your Desktop! Lead Your Team into Cloud Computing! (workbook)
 
Pair programming
Pair programmingPair programming
Pair programming
 
Fighting with Waste Driven Development - XP Days Ukraine 2017
Fighting with Waste Driven Development - XP Days Ukraine 2017Fighting with Waste Driven Development - XP Days Ukraine 2017
Fighting with Waste Driven Development - XP Days Ukraine 2017
 
QConSF 2017: DevOps 2.0 - When Everyone Can Run What's Built
QConSF 2017: DevOps 2.0 - When Everyone Can Run What's Built QConSF 2017: DevOps 2.0 - When Everyone Can Run What's Built
QConSF 2017: DevOps 2.0 - When Everyone Can Run What's Built
 
The Cultural Changes of Feature Flagging
The Cultural Changes of Feature FlaggingThe Cultural Changes of Feature Flagging
The Cultural Changes of Feature Flagging
 

Similar to PhillyXP Pair Programming

Mob Programming - Whole Team Collaboration
Mob Programming - Whole Team CollaborationMob Programming - Whole Team Collaboration
Mob Programming - Whole Team CollaborationNick Goede
 
It Takes Two - A Case Study in Pair Programming
It Takes Two - A Case Study in Pair ProgrammingIt Takes Two - A Case Study in Pair Programming
It Takes Two - A Case Study in Pair ProgrammingAndy Melichar
 
What every developer can learn from startups
What every developer can learn from startupsWhat every developer can learn from startups
What every developer can learn from startupsOleg Podsechin
 
Rapid Prototyping & Customer Development
Rapid Prototyping & Customer DevelopmentRapid Prototyping & Customer Development
Rapid Prototyping & Customer Developmentjohnwlong
 
Unwritten Manual for Pair Programming
Unwritten Manual for Pair ProgrammingUnwritten Manual for Pair Programming
Unwritten Manual for Pair ProgrammingLemi Orhan Ergin
 
Francesco Fullone - Project Management 2.0
Francesco Fullone - Project Management 2.0Francesco Fullone - Project Management 2.0
Francesco Fullone - Project Management 2.0Social Media Lab
 
Superman or Ironman - can everyone be a 10x developer?
Superman or Ironman - can everyone be a 10x developer?Superman or Ironman - can everyone be a 10x developer?
Superman or Ironman - can everyone be a 10x developer?Steve Poole
 
Pair Programming Presentation
Pair Programming PresentationPair Programming Presentation
Pair Programming PresentationThoughtWorks
 
Zero Adoption: Lessons Learned From Failing at Open Source
Zero Adoption: Lessons Learned From Failing at Open SourceZero Adoption: Lessons Learned From Failing at Open Source
Zero Adoption: Lessons Learned From Failing at Open SourceMemi Beltrame
 
Prototyping for tiny fingers
Prototyping for tiny fingersPrototyping for tiny fingers
Prototyping for tiny fingersJulio Pari
 
The Software Craftsman (2nd edition)
The Software Craftsman (2nd edition)The Software Craftsman (2nd edition)
The Software Craftsman (2nd edition)goeran
 
How Tools Have Shaped the Role of the Designer
How Tools Have Shaped the Role of the DesignerHow Tools Have Shaped the Role of the Designer
How Tools Have Shaped the Role of the DesignerJonathan Lieberman
 
Agile+Lean, Alum Meet Apr23 2016 - Short Version
Agile+Lean, Alum Meet Apr23 2016 - Short VersionAgile+Lean, Alum Meet Apr23 2016 - Short Version
Agile+Lean, Alum Meet Apr23 2016 - Short VersionHemant Elhence
 
Why pair programming is a good idea
Why pair programming is a good idea Why pair programming is a good idea
Why pair programming is a good idea Designveloper
 
5 Essential Tips For Improving Your Website Mockups & Prototypes!
5 Essential Tips For Improving Your Website Mockups & Prototypes!5 Essential Tips For Improving Your Website Mockups & Prototypes!
5 Essential Tips For Improving Your Website Mockups & Prototypes!Usersnap
 
This is a title
This is a titleThis is a title
This is a titlesailias
 
Josh Borts's Presentation
Josh Borts's PresentationJosh Borts's Presentation
Josh Borts's Presentationsailias
 
Josh Borts's Presentation
Josh Borts's PresentationJosh Borts's Presentation
Josh Borts's Presentationsailias
 
This is a title
This is a titleThis is a title
This is a titlesailias
 

Similar to PhillyXP Pair Programming (20)

Mob Programming - Whole Team Collaboration
Mob Programming - Whole Team CollaborationMob Programming - Whole Team Collaboration
Mob Programming - Whole Team Collaboration
 
It Takes Two - A Case Study in Pair Programming
It Takes Two - A Case Study in Pair ProgrammingIt Takes Two - A Case Study in Pair Programming
It Takes Two - A Case Study in Pair Programming
 
Pair Programming
Pair ProgrammingPair Programming
Pair Programming
 
What every developer can learn from startups
What every developer can learn from startupsWhat every developer can learn from startups
What every developer can learn from startups
 
Rapid Prototyping & Customer Development
Rapid Prototyping & Customer DevelopmentRapid Prototyping & Customer Development
Rapid Prototyping & Customer Development
 
Unwritten Manual for Pair Programming
Unwritten Manual for Pair ProgrammingUnwritten Manual for Pair Programming
Unwritten Manual for Pair Programming
 
Francesco Fullone - Project Management 2.0
Francesco Fullone - Project Management 2.0Francesco Fullone - Project Management 2.0
Francesco Fullone - Project Management 2.0
 
Superman or Ironman - can everyone be a 10x developer?
Superman or Ironman - can everyone be a 10x developer?Superman or Ironman - can everyone be a 10x developer?
Superman or Ironman - can everyone be a 10x developer?
 
Pair Programming Presentation
Pair Programming PresentationPair Programming Presentation
Pair Programming Presentation
 
Zero Adoption: Lessons Learned From Failing at Open Source
Zero Adoption: Lessons Learned From Failing at Open SourceZero Adoption: Lessons Learned From Failing at Open Source
Zero Adoption: Lessons Learned From Failing at Open Source
 
Prototyping for tiny fingers
Prototyping for tiny fingersPrototyping for tiny fingers
Prototyping for tiny fingers
 
The Software Craftsman (2nd edition)
The Software Craftsman (2nd edition)The Software Craftsman (2nd edition)
The Software Craftsman (2nd edition)
 
How Tools Have Shaped the Role of the Designer
How Tools Have Shaped the Role of the DesignerHow Tools Have Shaped the Role of the Designer
How Tools Have Shaped the Role of the Designer
 
Agile+Lean, Alum Meet Apr23 2016 - Short Version
Agile+Lean, Alum Meet Apr23 2016 - Short VersionAgile+Lean, Alum Meet Apr23 2016 - Short Version
Agile+Lean, Alum Meet Apr23 2016 - Short Version
 
Why pair programming is a good idea
Why pair programming is a good idea Why pair programming is a good idea
Why pair programming is a good idea
 
5 Essential Tips For Improving Your Website Mockups & Prototypes!
5 Essential Tips For Improving Your Website Mockups & Prototypes!5 Essential Tips For Improving Your Website Mockups & Prototypes!
5 Essential Tips For Improving Your Website Mockups & Prototypes!
 
This is a title
This is a titleThis is a title
This is a title
 
Josh Borts's Presentation
Josh Borts's PresentationJosh Borts's Presentation
Josh Borts's Presentation
 
Josh Borts's Presentation
Josh Borts's PresentationJosh Borts's Presentation
Josh Borts's Presentation
 
This is a title
This is a titleThis is a title
This is a title
 

Recently uploaded

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
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
"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
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
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
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
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
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
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
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
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
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 

Recently uploaded (20)

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
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
"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
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
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)
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort ServiceHot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
 
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
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
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
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
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!
 
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
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 

PhillyXP Pair Programming

  • 2. THE ORGANIZERS… Heather Blair Nick Goede Anthony Palumbi Mark Schell Anthony Sciamanna @phillyxp
  • 5. FEATURE FACTORIES @phillyxp “Two people doing the work of one?? That’s a waste of expensive resources!” An antiquated factory mindset where number of keystrokes per hour and 100% utilization of developers are the goals Image courtesy of @johncutlefish
  • 6. FEATURE FACTORIES  If we measure the value we are delivering to customers there is a compelling argument for pairing  Pairing often reduces the time to market for features @phillyxp
  • 7. SELECTIVE PAIR PROGRAMMING @phillyxp “Most development tasks aren’t worth pairing on. We only pair when it is appropriate.”
  • 8. SELECTIVE PAIR PROGRAMMING  Developers only pair in very specific situations  To onboard a new developer  When someone gets stuck  Effective pair programming is deceptively challenging  The less you do it the less useful it is to you @phillyxp Sometimes pair programming doesn't "take" -- most frequently when it's framed as one programmer helping out another who's struggling. -Tim Ottinger, Agile Coach and Author
  • 9. SELECTIVE PAIR PROGRAMMING CATCH-22 @phillyxp Developers think pairing all the time is too prescriptive Only pair for “special circumstances” Pairing occurs so infrequently developers never build pairing skills Without the skills to effectively pair developers fail to see its benefit in the day-to-day work
  • 10. WHY SHOULD WE PAIR PROGRAM?  Encourages team collaboration and team based design and development  Improves / Creates opportunities for mentoring  Drastically reduces onboarding time  Flattens learning curves  Knowledge travels through team quickly  Builds trust / Team building  Reinforces collective code ownership  Eliminates Towers of Knowlege  When paired with TDD creates a powerful workflow  Results in higher quality code  Limits WIP  Encourages Swarming  JIT code reviews (non-blocking code reviews)  Interruption blocker  Social pressure not to get distracted / Pairs stay in flow longer @phillyxp
  • 12. 2. Write only enough production code to make the test pass 1. Create a failing unit test (not compiling counts as a failing test) 3. Refactor only when all unit tests are passing Ping Pong Pair Programmi ng @phillyxp
  • 13. Nick Anthony Writes a failing test Makes the test pass Writes the next failing testMakes the next test pass Only when all tests pass either person can refactor Continue until both people agree there are no more tests to write @phillyxp
  • 14. WORKSHOP  Split up into pairs…  Non-developers can pair with a developer or join a pair as a third person @phillyxp [When pairing] learning happens every minute of every day while actual work is being done. -Richard Sheridan, Author of Joy, Inc. and CEO of Menlo Innovations
  • 15. WORKSHOP REPOSITORY  SSH - git@github.com:PhillyXP/pair-programming- workshop.git  HTTPS - https://github.com/PhillyXP/pair- programming-workshop.git @phillyxp
  • 16. WORKSHOP DEVELOPMENT TASKS  As a Bill Payer I want to pay my mortgage bill on the first business day that is on or after the due date  As a Bill Payer I want to pay my water bill on the first business day that is on or before the due date  As a Bill Payer I want to treat holidays as non-business days (external holiday service)  As a Bill Payer I want to pay my electric bill on the first business day that is closest to the due date @phillyxp HINT TO GET STARTED: Create objects with public methods that take a date and return a modified date based on business rules
  • 18. RESOURCES  The Costs and Benefits of Pair Programming  https://collaboration.csc.ncsu.edu/laurie/Papers/XPSardinia.PDF  Ping Pong Pair Programming  http://anthonysciamanna.com/2015/04/18/ping-pong-pair- programming.html  These books are excellent resources on pair programming @phillyxp

Editor's Notes

  1. Ideas for topics Want to speak Know someone who wants to speak REACH OUT TO US OR SEND A MESSAGE ON MEETUP We have all been in various leadership roles on XP teams in the past Looking forward to sharing our experiences and learning from all of you
  2. Pair Programming & TDD – and how they intersect in a practice called Ping Pong Pair Programming If you come back at the beginning of the year Nick and I will reprise our talk about Ping Pong Pair Programming that we gave at Alistair Cockburn’s Heart of Agile Conference. So this is a precursor to that talk that discusses this practice and how it addresses the challenges of traditional pair programming It ends with Nick and I working through these exercises that we’re going to do tonight Show of hands --- People who have paired - Of those people who have practiced TDD
  3. We wanted to talk briefly before the workshop about pair programming and its misconceptions Keep these in mind when pairing And if you want to take these practices back to your organization There are equally as many misconceptions about TDD – but that’ll be for another meeting I typically split pairing misconceptions into two categories
  4. Feature factory mindset - Comes out of orgs still rooted in “Old IT” ways of thinking Orgs measuring teams by output (optimizing for developer busyness, 100% utilization of developers) They are reluctant to try this practice - Knowledge work doesn’t work that way Evidence suggests opposite is true - Pairing is faster than developers working alone Agile Manifesto author Alistair Cockburn & his colleague Laurie Williams (from the university of Utah) Alistair Cockburn & Laurie Williams study – The Costs and Benefits of Pair Programming Measuring output – you would expect a 50% decrease if two people are really doing the work of one. They found an increase of total developer time of 15% However, the increase in the quality of the code and a decrease in bugs escaping to production, and less bugs found later in the development cycle made up for that 15%
  5. Higher quality code, less bugs escape to production, deliver value faster by limiting WIP and other techniques
  6. Teams who don’t pair tend to collaborate a lot less than teams who do Developers who say this insinuate that teams who pair all the time are somehow unprofessional. We pair when it’s appropriate THE PROBLEM – Software development is a social activity – teams who pair are much better collaborators and much more likely to collaborate than those who don’t. But when I observe these teams who “selectively pair” this is what I see the backs of people’s heads with headphones on and their face in the monitor. They don’t collaborate at all. Their team area resembles a library By contrast observing high functioning XP teams their work area is a hive of activity. Creative work is happening Becoming an expert in pairing helps you identify when you should or shouldn’t do it
  7. Why should we pair? Software development is a social activity – teams that pair are better collaborators and do it continuously
  8. TDD is a component of the workshop
  9. If anyone needs a TDD refresher, let’s discuss the basics quickly
  10. And now when TDD gets laid over Pair Programming it looks something like this
  11. Passing the laptop back and forth may seem awkward. And it is. This is our ideal setup