SlideShare a Scribd company logo
Testability starts with code
Lorraine Steyn
@lor_krs @KRSSoftware
www.krs.co.za
Statistics, Averages, Lies
Pairing in Context of Agile
Pair Programming Described
Working Space
Benefits
Arguments Against Pairing
Q&A
Agenda
70-100 defects per 1000 lines of code
70% removed during development
Quality Inspections find 1 (true) defect per man-hour
QA’s are 20 x more effective than manual testing
Manual testing takes between 4 and 16 hours per defect
Stats, Averages,Lies
References:
Experience with Inspection in Ultralarge-scale Development, IEEE, Russell 1991
An Experiment to Assess the Cost-Benefits of Code Inspections IEEE, Porter
The Costs and Benefits of Pair Programming, ACM, Cockburn and Williams
Promiscuous Pairing and Beginner’s Mind, ACM, Belshee 2005
Pair Programming and the Mysterious Role of the Navigator, ACM, Bryant 2008
Assume 1000 lines of code, 100 defects, developer finds 70%
Assume 50 lines of code per hour = 20 hours to develop the code
30 defects go to QA, rate of 1 defect identified per hour = 30 hours
30 defects go to Testing, assume 10 hours to find 1 defect = 300 hours?
If we could halve the defects:
QA hours would reduce to 15, Testers would reduce to 150 hours …
Maths: Time = money
Applied Software Measurement,
Casper Jones, 1996
X X
Costs
Opportunity cost
Cost of rework : time, more people, energy, trust …
Safety, life-and-death issues
Economic loss
How does Agile help us with
code?
Customer collaboration over contract
negotiation
Responding to change over following a
plan
Working software over comprehensive
documentation
Individuals and interactions over processes and
tools
The Agile Manifesto
Scrum
XP
Communication
Simplicity
Feedback
Courage
Respect
Sit Together
Whole Team
Informative Workspace
Energized Work
Stories
Weekly Cycle
Quarterly Cycle
Slack
Ten-Minute Build
Continuous Integration
Incremental Design
Pair Programming
Swap often
Swap mouse and keyboard every 10 minutes
Prevents “watch the master” dysfunction
Swap pairs every 90 minutes to 2
hours
Highest velocity, lowest exhaustion
Tag Teaming
Driver / Navigator
Syntax
PercentageofSyntaxrelatedcomments%
Levels Syntax Vars Methods Domain Phys Other
Flow – achieved together
Constant explaining – to self and partner
Constant adjusting of approach
Syntax corrections, but hold back
Both need time to think
Micro design, discussed as you go
Very tiring!
X
In Practice
But doesn’t it cost More?
TIME +15% QUALITY +20%
Lines of Code
LINES -10%
Working Space
X
Code Benefits
Quality of 70% bug free (solo) rises to 85% (paired) – gain 20%
Constant micro design results in cleaner solutions – less code
Less code is better – simplicity, easier to read and support
Avoids confirmation bias – more innovation
Developers consider more alternatives together – robust code
People Benefits
Share knowledge and skills – silo busting
Easier on-boarding of new team members – mentoring
Shared problems are easier to tackle – motivation
Harder to procrastinate – productivity
Heightened communication – collaboration
Issues, Concerns and Excuses
None.
Personalities who can really not work together
Forcing people causes resentment
But it costs double…
“I work faster alone”
Spending more time training than developing
Workspace is not comfortable
Personal hygiene
Handling concerns
Ego – Primadonnas are not good in a team, lack of care for
team members
Imposter syndrome – fear of failure
People as Resources attitude – “but it costs double”
Pair Strategies
Senior – Senior Highest skills, good value
Senior – Junior Great for mentoring, good to great value
Junior – Junior Better than working alone, poor value
Senior – Tester Collaborate on Test Cases (TDD), winning
XP – making the world safe for developers
and vice versa
Q+A
Lorraine Steyn
@lor_krs @KRSSoftware
Agile Software Development and Coaching
www.krs.co.za

More Related Content

What's hot

CP-SAT - Certified Professional Selenium Automation Testing
CP-SAT - Certified Professional Selenium Automation TestingCP-SAT - Certified Professional Selenium Automation Testing
CP-SAT - Certified Professional Selenium Automation Testing
Agile Testing Alliance
 
Agile Testing by Example
Agile Testing by ExampleAgile Testing by Example
Agile Testing by Example
Mikalai Alimenkou
 
DevOps Summit 2015 Presentation: Continuous Testing At the Speed of DevOps
DevOps Summit 2015 Presentation: Continuous Testing At the Speed of DevOpsDevOps Summit 2015 Presentation: Continuous Testing At the Speed of DevOps
DevOps Summit 2015 Presentation: Continuous Testing At the Speed of DevOps
Sailaja Tennati
 
Implement BDD with Cucumber and SpecFlow
Implement BDD with Cucumber and SpecFlowImplement BDD with Cucumber and SpecFlow
Implement BDD with Cucumber and SpecFlow
TechWell
 
Why Automated Testing Matters To DevOps
Why Automated Testing Matters To DevOpsWhy Automated Testing Matters To DevOps
Why Automated Testing Matters To DevOps
dpaulmerrill
 
DevOps Tactical Adoption Theory: Continuous Testing
DevOps Tactical Adoption Theory: Continuous TestingDevOps Tactical Adoption Theory: Continuous Testing
DevOps Tactical Adoption Theory: Continuous Testing
Berk Dülger
 
Agile tour ncr test360_degree - agile testing on steroids
Agile tour ncr test360_degree - agile testing on steroidsAgile tour ncr test360_degree - agile testing on steroids
Agile tour ncr test360_degree - agile testing on steroidsVipul Gupta
 
#TesterbhiCoder - Every Tester should get into coding - Selenium automation
#TesterbhiCoder - Every Tester should get into coding - Selenium automation#TesterbhiCoder - Every Tester should get into coding - Selenium automation
#TesterbhiCoder - Every Tester should get into coding - Selenium automation
Agile Testing Alliance
 
Testing in Agile Development
Testing in Agile DevelopmentTesting in Agile Development
Testing in Agile Development
Hariprakash Agrawal
 
Test pyramid
Test pyramidTest pyramid
Test pyramid
Poornima Durairaj
 
Agile testing alliance cp aat highlights 1.2
Agile testing alliance cp aat highlights 1.2Agile testing alliance cp aat highlights 1.2
Agile testing alliance cp aat highlights 1.2
Agile Testing Alliance
 
Agile Testing Process
Agile Testing ProcessAgile Testing Process
Agile Testing ProcessIntetics
 
Continuous Testing: A Key to DevOps Success
Continuous Testing: A Key to DevOps SuccessContinuous Testing: A Key to DevOps Success
Continuous Testing: A Key to DevOps Success
TechWell
 
ISTQB Foundation and Selenium Java Automation Testing
ISTQB Foundation and Selenium Java Automation TestingISTQB Foundation and Selenium Java Automation Testing
ISTQB Foundation and Selenium Java Automation Testing
HiraQureshi22
 
A Concise QA Process
A Concise QA Process A Concise QA Process
A Concise QA Process
Arslan Ali
 
Tech talks #1- Unit testing and TDD
Tech talks #1- Unit testing and TDDTech talks #1- Unit testing and TDD
Tech talks #1- Unit testing and TDD
DUONG Trong Tan
 
QA in Agile
QA in AgileQA in Agile
QA in Agile
Mikalai Alimenkou
 
Continuous testing the new must have skill of tomorrow's tech leaders
Continuous testing  the new must have skill of tomorrow's tech leadersContinuous testing  the new must have skill of tomorrow's tech leaders
Continuous testing the new must have skill of tomorrow's tech leaders
Nadav Yeheskel - Looking for a Test/QA engineer
 
ATA CP-MAT program highlights
ATA CP-MAT program highlightsATA CP-MAT program highlights
ATA CP-MAT program highlights
Agile Testing Alliance
 
How to Add Test Automation to your Quality Assurance Toolbelt
How to Add Test Automation to your Quality Assurance ToolbeltHow to Add Test Automation to your Quality Assurance Toolbelt
How to Add Test Automation to your Quality Assurance Toolbelt
Brett Tramposh
 

What's hot (20)

CP-SAT - Certified Professional Selenium Automation Testing
CP-SAT - Certified Professional Selenium Automation TestingCP-SAT - Certified Professional Selenium Automation Testing
CP-SAT - Certified Professional Selenium Automation Testing
 
Agile Testing by Example
Agile Testing by ExampleAgile Testing by Example
Agile Testing by Example
 
DevOps Summit 2015 Presentation: Continuous Testing At the Speed of DevOps
DevOps Summit 2015 Presentation: Continuous Testing At the Speed of DevOpsDevOps Summit 2015 Presentation: Continuous Testing At the Speed of DevOps
DevOps Summit 2015 Presentation: Continuous Testing At the Speed of DevOps
 
Implement BDD with Cucumber and SpecFlow
Implement BDD with Cucumber and SpecFlowImplement BDD with Cucumber and SpecFlow
Implement BDD with Cucumber and SpecFlow
 
Why Automated Testing Matters To DevOps
Why Automated Testing Matters To DevOpsWhy Automated Testing Matters To DevOps
Why Automated Testing Matters To DevOps
 
DevOps Tactical Adoption Theory: Continuous Testing
DevOps Tactical Adoption Theory: Continuous TestingDevOps Tactical Adoption Theory: Continuous Testing
DevOps Tactical Adoption Theory: Continuous Testing
 
Agile tour ncr test360_degree - agile testing on steroids
Agile tour ncr test360_degree - agile testing on steroidsAgile tour ncr test360_degree - agile testing on steroids
Agile tour ncr test360_degree - agile testing on steroids
 
#TesterbhiCoder - Every Tester should get into coding - Selenium automation
#TesterbhiCoder - Every Tester should get into coding - Selenium automation#TesterbhiCoder - Every Tester should get into coding - Selenium automation
#TesterbhiCoder - Every Tester should get into coding - Selenium automation
 
Testing in Agile Development
Testing in Agile DevelopmentTesting in Agile Development
Testing in Agile Development
 
Test pyramid
Test pyramidTest pyramid
Test pyramid
 
Agile testing alliance cp aat highlights 1.2
Agile testing alliance cp aat highlights 1.2Agile testing alliance cp aat highlights 1.2
Agile testing alliance cp aat highlights 1.2
 
Agile Testing Process
Agile Testing ProcessAgile Testing Process
Agile Testing Process
 
Continuous Testing: A Key to DevOps Success
Continuous Testing: A Key to DevOps SuccessContinuous Testing: A Key to DevOps Success
Continuous Testing: A Key to DevOps Success
 
ISTQB Foundation and Selenium Java Automation Testing
ISTQB Foundation and Selenium Java Automation TestingISTQB Foundation and Selenium Java Automation Testing
ISTQB Foundation and Selenium Java Automation Testing
 
A Concise QA Process
A Concise QA Process A Concise QA Process
A Concise QA Process
 
Tech talks #1- Unit testing and TDD
Tech talks #1- Unit testing and TDDTech talks #1- Unit testing and TDD
Tech talks #1- Unit testing and TDD
 
QA in Agile
QA in AgileQA in Agile
QA in Agile
 
Continuous testing the new must have skill of tomorrow's tech leaders
Continuous testing  the new must have skill of tomorrow's tech leadersContinuous testing  the new must have skill of tomorrow's tech leaders
Continuous testing the new must have skill of tomorrow's tech leaders
 
ATA CP-MAT program highlights
ATA CP-MAT program highlightsATA CP-MAT program highlights
ATA CP-MAT program highlights
 
How to Add Test Automation to your Quality Assurance Toolbelt
How to Add Test Automation to your Quality Assurance ToolbeltHow to Add Test Automation to your Quality Assurance Toolbelt
How to Add Test Automation to your Quality Assurance Toolbelt
 

Similar to Pair Programming

The computer says no! Software Quality in the DevOps world
The computer says no! Software Quality in the DevOps worldThe computer says no! Software Quality in the DevOps world
The computer says no! Software Quality in the DevOps world
Matteo Emili
 
Automatic for the People
Automatic for the PeopleAutomatic for the People
Automatic for the People
Andy Zaidman
 
Continuous testing & devops with @petemar5hall
Continuous testing & devops with @petemar5hallContinuous testing & devops with @petemar5hall
Continuous testing & devops with @petemar5hall
Peter Marshall
 
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
Lemi Orhan Ergin
 
4.Security Assessment And Testing
4.Security Assessment And Testing4.Security Assessment And Testing
4.Security Assessment And Testingphanleson
 
Creating a successful continuous testing environment by Eran Kinsbruner
Creating a successful continuous testing environment by Eran KinsbrunerCreating a successful continuous testing environment by Eran Kinsbruner
Creating a successful continuous testing environment by Eran Kinsbruner
QA or the Highway
 
Making the Unstable Stable - An Intro To Testing
Making the Unstable Stable - An Intro To TestingMaking the Unstable Stable - An Intro To Testing
Making the Unstable Stable - An Intro To Testing
Cameron Presley
 
Cross functional peer review preso 10-01-2013
Cross functional peer review preso 10-01-2013Cross functional peer review preso 10-01-2013
Cross functional peer review preso 10-01-2013SmartBear
 
Dev ops
Dev opsDev ops
Designing Self-maintaining UI Tests for Web Applications
Designing Self-maintaining UI Tests for Web ApplicationsDesigning Self-maintaining UI Tests for Web Applications
Designing Self-maintaining UI Tests for Web Applications
TechWell
 
Test-Driven Development in the Corporate Workplace
Test-Driven Development in the Corporate WorkplaceTest-Driven Development in the Corporate Workplace
Test-Driven Development in the Corporate Workplace
Ahmed Owian
 
Creating a DevOps Practice for Analytics -- Strata Data, September 28, 2017
Creating a DevOps Practice for Analytics -- Strata Data, September 28, 2017Creating a DevOps Practice for Analytics -- Strata Data, September 28, 2017
Creating a DevOps Practice for Analytics -- Strata Data, September 28, 2017
Caserta
 
SCA in an Agile World | June 2010
SCA in an Agile World | June 2010SCA in an Agile World | June 2010
SCA in an Agile World | June 2010
Klocwork
 
Formal Versus Agile: Survival of the Fittest? (Paul Boca)
Formal Versus Agile: Survival of the Fittest? (Paul Boca)Formal Versus Agile: Survival of the Fittest? (Paul Boca)
Formal Versus Agile: Survival of the Fittest? (Paul Boca)
AdaCore
 
DevOps: Cultural and Tooling Tips Around the World
DevOps: Cultural and Tooling Tips Around the WorldDevOps: Cultural and Tooling Tips Around the World
DevOps: Cultural and Tooling Tips Around the World
Dynatrace
 
Agile & DevOps - It's all about project success
Agile & DevOps - It's all about project successAgile & DevOps - It's all about project success
Agile & DevOps - It's all about project success
Adam Stephensen
 
MGM Agile Dec 28th 2022 (003).pptx
MGM Agile Dec 28th 2022 (003).pptxMGM Agile Dec 28th 2022 (003).pptx
MGM Agile Dec 28th 2022 (003).pptx
Jalaja Raj
 
R Tool for Visual Studio และการทำงานร่วมกันเป็นทีม โดย เฉลิมวงศ์ วิจิตรปิยะกุ...
R Tool for Visual Studio และการทำงานร่วมกันเป็นทีม โดย เฉลิมวงศ์ วิจิตรปิยะกุ...R Tool for Visual Studio และการทำงานร่วมกันเป็นทีม โดย เฉลิมวงศ์ วิจิตรปิยะกุ...
R Tool for Visual Studio และการทำงานร่วมกันเป็นทีม โดย เฉลิมวงศ์ วิจิตรปิยะกุ...
BAINIDA
 
Can we induce change with what we measure?
Can we induce change with what we measure?Can we induce change with what we measure?
Can we induce change with what we measure?
Michaela Greiler
 
Code Smells Part 1: Basic Smells
Code Smells Part 1:  Basic SmellsCode Smells Part 1:  Basic Smells
Code Smells Part 1: Basic Smells
Nancy Henson
 

Similar to Pair Programming (20)

The computer says no! Software Quality in the DevOps world
The computer says no! Software Quality in the DevOps worldThe computer says no! Software Quality in the DevOps world
The computer says no! Software Quality in the DevOps world
 
Automatic for the People
Automatic for the PeopleAutomatic for the People
Automatic for the People
 
Continuous testing & devops with @petemar5hall
Continuous testing & devops with @petemar5hallContinuous testing & devops with @petemar5hall
Continuous testing & devops with @petemar5hall
 
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
 
4.Security Assessment And Testing
4.Security Assessment And Testing4.Security Assessment And Testing
4.Security Assessment And Testing
 
Creating a successful continuous testing environment by Eran Kinsbruner
Creating a successful continuous testing environment by Eran KinsbrunerCreating a successful continuous testing environment by Eran Kinsbruner
Creating a successful continuous testing environment by Eran Kinsbruner
 
Making the Unstable Stable - An Intro To Testing
Making the Unstable Stable - An Intro To TestingMaking the Unstable Stable - An Intro To Testing
Making the Unstable Stable - An Intro To Testing
 
Cross functional peer review preso 10-01-2013
Cross functional peer review preso 10-01-2013Cross functional peer review preso 10-01-2013
Cross functional peer review preso 10-01-2013
 
Dev ops
Dev opsDev ops
Dev ops
 
Designing Self-maintaining UI Tests for Web Applications
Designing Self-maintaining UI Tests for Web ApplicationsDesigning Self-maintaining UI Tests for Web Applications
Designing Self-maintaining UI Tests for Web Applications
 
Test-Driven Development in the Corporate Workplace
Test-Driven Development in the Corporate WorkplaceTest-Driven Development in the Corporate Workplace
Test-Driven Development in the Corporate Workplace
 
Creating a DevOps Practice for Analytics -- Strata Data, September 28, 2017
Creating a DevOps Practice for Analytics -- Strata Data, September 28, 2017Creating a DevOps Practice for Analytics -- Strata Data, September 28, 2017
Creating a DevOps Practice for Analytics -- Strata Data, September 28, 2017
 
SCA in an Agile World | June 2010
SCA in an Agile World | June 2010SCA in an Agile World | June 2010
SCA in an Agile World | June 2010
 
Formal Versus Agile: Survival of the Fittest? (Paul Boca)
Formal Versus Agile: Survival of the Fittest? (Paul Boca)Formal Versus Agile: Survival of the Fittest? (Paul Boca)
Formal Versus Agile: Survival of the Fittest? (Paul Boca)
 
DevOps: Cultural and Tooling Tips Around the World
DevOps: Cultural and Tooling Tips Around the WorldDevOps: Cultural and Tooling Tips Around the World
DevOps: Cultural and Tooling Tips Around the World
 
Agile & DevOps - It's all about project success
Agile & DevOps - It's all about project successAgile & DevOps - It's all about project success
Agile & DevOps - It's all about project success
 
MGM Agile Dec 28th 2022 (003).pptx
MGM Agile Dec 28th 2022 (003).pptxMGM Agile Dec 28th 2022 (003).pptx
MGM Agile Dec 28th 2022 (003).pptx
 
R Tool for Visual Studio และการทำงานร่วมกันเป็นทีม โดย เฉลิมวงศ์ วิจิตรปิยะกุ...
R Tool for Visual Studio และการทำงานร่วมกันเป็นทีม โดย เฉลิมวงศ์ วิจิตรปิยะกุ...R Tool for Visual Studio และการทำงานร่วมกันเป็นทีม โดย เฉลิมวงศ์ วิจิตรปิยะกุ...
R Tool for Visual Studio และการทำงานร่วมกันเป็นทีม โดย เฉลิมวงศ์ วิจิตรปิยะกุ...
 
Can we induce change with what we measure?
Can we induce change with what we measure?Can we induce change with what we measure?
Can we induce change with what we measure?
 
Code Smells Part 1: Basic Smells
Code Smells Part 1:  Basic SmellsCode Smells Part 1:  Basic Smells
Code Smells Part 1: Basic Smells
 

More from Lorraine Steyn

Applying Systems Thinking to Teams and Software.pptx
Applying Systems Thinking to Teams and Software.pptxApplying Systems Thinking to Teams and Software.pptx
Applying Systems Thinking to Teams and Software.pptx
Lorraine Steyn
 
Applying Systems Thinking in Teams.pptx
Applying Systems Thinking in Teams.pptxApplying Systems Thinking in Teams.pptx
Applying Systems Thinking in Teams.pptx
Lorraine Steyn
 
Systems Thinking and the Art of Simplification
Systems Thinking and the Art of SimplificationSystems Thinking and the Art of Simplification
Systems Thinking and the Art of Simplification
Lorraine Steyn
 
DDD Introduction
DDD IntroductionDDD Introduction
DDD Introduction
Lorraine Steyn
 
Systems Thinking 2019
Systems Thinking 2019Systems Thinking 2019
Systems Thinking 2019
Lorraine Steyn
 
Homo naledi - highlights from the paper published on eLife
Homo naledi - highlights from the paper published on eLifeHomo naledi - highlights from the paper published on eLife
Homo naledi - highlights from the paper published on eLife
Lorraine Steyn
 
Fighting Facebook (social media marketing)
Fighting Facebook (social media marketing)Fighting Facebook (social media marketing)
Fighting Facebook (social media marketing)
Lorraine Steyn
 
Entrepreneurially Agile
Entrepreneurially AgileEntrepreneurially Agile
Entrepreneurially Agile
Lorraine Steyn
 
Domain Driven Design in an Agile World
Domain Driven Design in an Agile WorldDomain Driven Design in an Agile World
Domain Driven Design in an Agile World
Lorraine Steyn
 

More from Lorraine Steyn (9)

Applying Systems Thinking to Teams and Software.pptx
Applying Systems Thinking to Teams and Software.pptxApplying Systems Thinking to Teams and Software.pptx
Applying Systems Thinking to Teams and Software.pptx
 
Applying Systems Thinking in Teams.pptx
Applying Systems Thinking in Teams.pptxApplying Systems Thinking in Teams.pptx
Applying Systems Thinking in Teams.pptx
 
Systems Thinking and the Art of Simplification
Systems Thinking and the Art of SimplificationSystems Thinking and the Art of Simplification
Systems Thinking and the Art of Simplification
 
DDD Introduction
DDD IntroductionDDD Introduction
DDD Introduction
 
Systems Thinking 2019
Systems Thinking 2019Systems Thinking 2019
Systems Thinking 2019
 
Homo naledi - highlights from the paper published on eLife
Homo naledi - highlights from the paper published on eLifeHomo naledi - highlights from the paper published on eLife
Homo naledi - highlights from the paper published on eLife
 
Fighting Facebook (social media marketing)
Fighting Facebook (social media marketing)Fighting Facebook (social media marketing)
Fighting Facebook (social media marketing)
 
Entrepreneurially Agile
Entrepreneurially AgileEntrepreneurially Agile
Entrepreneurially Agile
 
Domain Driven Design in an Agile World
Domain Driven Design in an Agile WorldDomain Driven Design in an Agile World
Domain Driven Design in an Agile World
 

Recently uploaded

Graspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code AnalysisGraspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code Analysis
Aftab Hussain
 
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
Alina Yurenko
 
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket ManagementUtilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate
 
A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
Philip Schwarz
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
Fermin Galan
 
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of CodeA Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
Aftab Hussain
 
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Mind IT Systems
 
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
Łukasz Chruściel
 
Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"
Donna Lenk
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
Max Andersen
 
openEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain SecurityopenEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain Security
Shane Coughlan
 
APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)
Boni García
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
Paco van Beckhoven
 
Launch Your Streaming Platforms in Minutes
Launch Your Streaming Platforms in MinutesLaunch Your Streaming Platforms in Minutes
Launch Your Streaming Platforms in Minutes
Roshan Dwivedi
 
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppAI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
Google
 
GraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph TechnologyGraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph Technology
Neo4j
 
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdfAutomated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
timtebeek1
 
Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
Drona Infotech
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke
 

Recently uploaded (20)

Graspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code AnalysisGraspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code Analysis
 
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
 
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket ManagementUtilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
 
A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
 
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of CodeA Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
 
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
 
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
 
Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
 
openEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain SecurityopenEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain Security
 
APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
 
Launch Your Streaming Platforms in Minutes
Launch Your Streaming Platforms in MinutesLaunch Your Streaming Platforms in Minutes
Launch Your Streaming Platforms in Minutes
 
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppAI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
 
GraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph TechnologyGraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph Technology
 
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdfAutomated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
 
Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
 

Pair Programming

  • 1. Testability starts with code Lorraine Steyn @lor_krs @KRSSoftware www.krs.co.za
  • 2. Statistics, Averages, Lies Pairing in Context of Agile Pair Programming Described Working Space Benefits Arguments Against Pairing Q&A Agenda
  • 3. 70-100 defects per 1000 lines of code 70% removed during development Quality Inspections find 1 (true) defect per man-hour QA’s are 20 x more effective than manual testing Manual testing takes between 4 and 16 hours per defect Stats, Averages,Lies
  • 4. References: Experience with Inspection in Ultralarge-scale Development, IEEE, Russell 1991 An Experiment to Assess the Cost-Benefits of Code Inspections IEEE, Porter The Costs and Benefits of Pair Programming, ACM, Cockburn and Williams Promiscuous Pairing and Beginner’s Mind, ACM, Belshee 2005 Pair Programming and the Mysterious Role of the Navigator, ACM, Bryant 2008
  • 5. Assume 1000 lines of code, 100 defects, developer finds 70% Assume 50 lines of code per hour = 20 hours to develop the code 30 defects go to QA, rate of 1 defect identified per hour = 30 hours 30 defects go to Testing, assume 10 hours to find 1 defect = 300 hours? If we could halve the defects: QA hours would reduce to 15, Testers would reduce to 150 hours … Maths: Time = money
  • 7. Costs Opportunity cost Cost of rework : time, more people, energy, trust … Safety, life-and-death issues Economic loss
  • 8.
  • 9. How does Agile help us with code?
  • 10. Customer collaboration over contract negotiation Responding to change over following a plan Working software over comprehensive documentation Individuals and interactions over processes and tools The Agile Manifesto
  • 11. Scrum
  • 12. XP Communication Simplicity Feedback Courage Respect Sit Together Whole Team Informative Workspace Energized Work Stories Weekly Cycle Quarterly Cycle Slack Ten-Minute Build Continuous Integration Incremental Design
  • 14. Swap often Swap mouse and keyboard every 10 minutes Prevents “watch the master” dysfunction Swap pairs every 90 minutes to 2 hours Highest velocity, lowest exhaustion
  • 15. Tag Teaming Driver / Navigator
  • 17. Levels Syntax Vars Methods Domain Phys Other
  • 18. Flow – achieved together Constant explaining – to self and partner Constant adjusting of approach Syntax corrections, but hold back Both need time to think Micro design, discussed as you go Very tiring! X In Practice
  • 19. But doesn’t it cost More? TIME +15% QUALITY +20%
  • 22. X
  • 23.
  • 24. Code Benefits Quality of 70% bug free (solo) rises to 85% (paired) – gain 20% Constant micro design results in cleaner solutions – less code Less code is better – simplicity, easier to read and support Avoids confirmation bias – more innovation Developers consider more alternatives together – robust code
  • 25. People Benefits Share knowledge and skills – silo busting Easier on-boarding of new team members – mentoring Shared problems are easier to tackle – motivation Harder to procrastinate – productivity Heightened communication – collaboration
  • 26. Issues, Concerns and Excuses None. Personalities who can really not work together Forcing people causes resentment But it costs double… “I work faster alone” Spending more time training than developing Workspace is not comfortable Personal hygiene
  • 27. Handling concerns Ego – Primadonnas are not good in a team, lack of care for team members Imposter syndrome – fear of failure People as Resources attitude – “but it costs double”
  • 28. Pair Strategies Senior – Senior Highest skills, good value Senior – Junior Great for mentoring, good to great value Junior – Junior Better than working alone, poor value Senior – Tester Collaborate on Test Cases (TDD), winning
  • 29. XP – making the world safe for developers and vice versa
  • 30. Q+A Lorraine Steyn @lor_krs @KRSSoftware Agile Software Development and Coaching www.krs.co.za

Editor's Notes

  1. Ask questions at end
  2. Other defects from QA’s are style preferences, misunderstanding of code, readability suggestions Only 15-35% of QA feedback must be fixed 2 reviewers were slightly more efficient than 1, no gains after 2
  3. Association for Computing Machinery
  4. 50 lines of code per hour – so 20 hours to develop the code. 50% longer to inspect bugs out of it
  5. 1956
  6. Satisfaction drops, morale, trust in team members, lowers collaboration
  7. Energized work – not removing value from the code Dial up sitting together if you have a problem
  8. 2nd screen, only one laptop/pc
  9. Swap pairs per sprint, or per week, or daily. No wrong way. Small team, and the frequent swaps kept them all involved in all aspects. Mobbing in pairs
  10. Driver types, navigator directs the design and helps spot coding errors Stats showing this is not exactly what happens, call it tag team rather. Your turn, my turn, etc. The notepad is a big help – write goals and approach
  11. 17 missing, 3 the navigator fell asleep, 2 driver just obeyed. Overall it’s balanced.
  12. Hour bursts, use paper, keep on track. Share the load – getting difficult, hand over to partner.
  13. Less is very good. Most time spent in support, and more reading takes longer.
  14. Personal space!
  15. Mob, relaxed, have space to withdraw and come together. Keyboard and mouse accessible by both.
  16. Not just new members, mentoring good for all We normally work like toddlers, along-side. Pairing is first real collaboration.
  17. Not judgemental – personal space, religious or cultural issues male/female, autistic people If a team is not convinced, they’ll find ways to avoid pairing