SlideShare una empresa de Scribd logo
1 de 23
Descargar para leer sin conexión
Jenkins
ReviewBuddy
Jenkins assisted Peer Code Reviews
Knud.Poulsen@switch-gears.dk
Inspiration for this talk
+ = JRB
Competitive advantage today can only be achieved through
better man/machine cooperation.
No huge surprise to Jenkins users.
Race *with* the machine.
What we’ll cover
➢ Benefits of peer code review
➢ Our experiences
➢ Others’ experiences
➢ Real-world code review
➢ Causes of noise
➢ Jenkins to the rescue!
➢ Demo/ Screenshots
➢ Further development
➢ Call for sponsors & test pilots
Key Benefits of Peer Code Review
➢ 90% reduction in shipped defects often
reported in industry studies
➢ 25% net productivity increase often reported
in industry studies
➢ Knowledge sharing
➢ Silo reduction
➢ Training new employees
➢ Best practice propagation
Our experiences - Low Gain Example
[Anonymized and obscured]
Our experiences - High Gain Example
[Anonymized and obscured]
Others’ experiences
Many excellent studies out there
So, what do we know ?
➢ Average defect detection rate is only 25
percent for unit testing, 35 percent for
function testing, and 45 percent for
integration testing. In contrast, the average
effectiveness of design and code inspections
are 55 and 60 percent. [McConnell93]
So, what do we know ?
➢ Basic code reading is ~96% as effective at
finding defects as holding a formal
heavyweight inspection meeting [Votta1993]
➢ Technical code review checklists are a
powerful help (especially against omissions)
[Dunsmore2000]
➢ Defect detection drops dramatically after ~60
minutes, to zero after ~90 minutes [Dunsmore2000]
So, what do we know ?
➢ The longer a reviewer spends on the initial
read-through, the more defects will ultimately
be found [Uwano2006]
➢ Long methods are very time consuming to
understand [Uwano2006]
➢ Loops are very time consuming to
understand [Uwano2006]
➢ Reading time has ~3x higher correlation with
defects found than number of lines under
review [Laitenberger1999]
So, what do we know ?
➢ Maximum effective review rate ~400 lines
per hour [Cohen2006]
➢ Disproportionately more defects are found
when code changes are under 200 lines
[Cohen2006]
➢ Beneficial for “quality of review” if the author
pre-reviews and leaves comments for
subsequent reviewers [Cohen2006]
So, what do we know ?
➢ Review 100 to 300 LOC at a time, in 30-60
minutes chunks, with a break between each
sitting [Cohen2006]
➢ Spend at least 5 minutes reviewing a single
line of code [Cohen2006]
➢ Limit reviewing to 1 hour per day [Ganssle2009]
Real world
➢ Is messy...
➢ No clear pattern between time spent in the
review state, total number of reworks
required, or total number of lines changed
➢ Some studies compensate by dropping
unreasonable data points and assuming
informal out-of-tool review
Real world
Why no clear pattern?
➢ “Production pressure”
➢ “Lack of review guidance”
➢ Hard to justify time
➢ Just give up on large reviews
➢ Hard to delay 1000 lines of new code the 3
days (300 lines/h, 3x1h, 1h/day) it should
take to review effectively
What outcome would we like?
➢ Smaller reviews should merge faster
➢ Larger reviews should merge slower
Race *with* the machine
➢ Guidance on time to use doing review
➢ Remind author to do pre-review
➢ Up-front determination of reviewers
➢ Links to review checklists
➢ Load balance reviewers
➢ Help developers justify time investment
➢ Automatically add reviewers
➢ Automatically add developer as pre-reviewer
Let’s try it out
Let’s try it out
Let’s try it out
Let’s try it out
Further work
➢ Also consider previous reviewers, not only
previous developers
➢ Make language and domain specific review
checklists easily accessible
➢ Weight and score commit message size
against nr files/ lines changed
➢ Inline comments from warnings, static
checkers
➢ OO review expansion, ie. “you also need to
look at these 3 unchanged files”
Call for Sponsors and Test Pilots
➢ Try it out in your own Gerrit Review/ Jenkins
environment
➢ Sponsor development into a full-blow,
feature rich, configurable “Jenkins
ReviewBuddy” plugin
➢ Catch me in the break

Más contenido relacionado

La actualidad más candente

Continuous integration
Continuous integrationContinuous integration
Continuous integration
amscanne
 
2013 10-28 php ug presentation - ci using phing and hudson
2013 10-28 php ug presentation - ci using phing and hudson2013 10-28 php ug presentation - ci using phing and hudson
2013 10-28 php ug presentation - ci using phing and hudson
Shreeniwas Iyer
 
Eclipse DemoCamp Bucharest 2014 - Continuous Integration Jenkins/Hudson
Eclipse DemoCamp Bucharest 2014 - Continuous Integration Jenkins/HudsonEclipse DemoCamp Bucharest 2014 - Continuous Integration Jenkins/Hudson
Eclipse DemoCamp Bucharest 2014 - Continuous Integration Jenkins/Hudson
VladLica
 
Continuous Integration (Jenkins/Hudson)
Continuous Integration (Jenkins/Hudson)Continuous Integration (Jenkins/Hudson)
Continuous Integration (Jenkins/Hudson)
Dennys Hsieh
 
Jenkins - Continuous Integration after Hudson, CruiseControl, and home built
Jenkins - Continuous Integration after Hudson, CruiseControl, and home builtJenkins - Continuous Integration after Hudson, CruiseControl, and home built
Jenkins - Continuous Integration after Hudson, CruiseControl, and home built
Mark Waite
 
Continuous deployment steve povilaitis
Continuous deployment   steve povilaitisContinuous deployment   steve povilaitis
Continuous deployment steve povilaitis
Steve Povilaitis
 

La actualidad más candente (20)

Continuous integration
Continuous integrationContinuous integration
Continuous integration
 
Jenkins Pipeline 101 and TCI - presentation and workshop
Jenkins Pipeline 101 and TCI - presentation and workshopJenkins Pipeline 101 and TCI - presentation and workshop
Jenkins Pipeline 101 and TCI - presentation and workshop
 
2013 10-28 php ug presentation - ci using phing and hudson
2013 10-28 php ug presentation - ci using phing and hudson2013 10-28 php ug presentation - ci using phing and hudson
2013 10-28 php ug presentation - ci using phing and hudson
 
Pipeline as code using Jenkins -Ministry of Testing
Pipeline as code using Jenkins -Ministry of TestingPipeline as code using Jenkins -Ministry of Testing
Pipeline as code using Jenkins -Ministry of Testing
 
Continuous Integration, Continuous Quality, Continuous Delivery
Continuous Integration, Continuous Quality, Continuous DeliveryContinuous Integration, Continuous Quality, Continuous Delivery
Continuous Integration, Continuous Quality, Continuous Delivery
 
Continuous Delivery
Continuous DeliveryContinuous Delivery
Continuous Delivery
 
Eclipse DemoCamp Bucharest 2014 - Continuous Integration Jenkins/Hudson
Eclipse DemoCamp Bucharest 2014 - Continuous Integration Jenkins/HudsonEclipse DemoCamp Bucharest 2014 - Continuous Integration Jenkins/Hudson
Eclipse DemoCamp Bucharest 2014 - Continuous Integration Jenkins/Hudson
 
Delivery Pipeline as Code: using Jenkins 2.0 Pipeline
Delivery Pipeline as Code: using Jenkins 2.0 PipelineDelivery Pipeline as Code: using Jenkins 2.0 Pipeline
Delivery Pipeline as Code: using Jenkins 2.0 Pipeline
 
Building an Extensible, Resumable DSL on Top of Apache Groovy
Building an Extensible, Resumable DSL on Top of Apache GroovyBuilding an Extensible, Resumable DSL on Top of Apache Groovy
Building an Extensible, Resumable DSL on Top of Apache Groovy
 
Let’s start Continuous Integration with jenkins
Let’s start Continuous Integration with jenkinsLet’s start Continuous Integration with jenkins
Let’s start Continuous Integration with jenkins
 
Jenkins CI presentation
Jenkins CI presentationJenkins CI presentation
Jenkins CI presentation
 
Jenkins CI
Jenkins CIJenkins CI
Jenkins CI
 
Continuous Integration (Jenkins/Hudson)
Continuous Integration (Jenkins/Hudson)Continuous Integration (Jenkins/Hudson)
Continuous Integration (Jenkins/Hudson)
 
Hacking Jenkins
Hacking JenkinsHacking Jenkins
Hacking Jenkins
 
Dev ops using Jenkins
Dev ops using JenkinsDev ops using Jenkins
Dev ops using Jenkins
 
Jenkins - Continuous Integration after Hudson, CruiseControl, and home built
Jenkins - Continuous Integration after Hudson, CruiseControl, and home builtJenkins - Continuous Integration after Hudson, CruiseControl, and home built
Jenkins - Continuous Integration after Hudson, CruiseControl, and home built
 
Continuous integration
Continuous integrationContinuous integration
Continuous integration
 
Continuous deployment steve povilaitis
Continuous deployment   steve povilaitisContinuous deployment   steve povilaitis
Continuous deployment steve povilaitis
 
Supermondays: Jenkins CI lightning talk
Supermondays: Jenkins CI lightning talkSupermondays: Jenkins CI lightning talk
Supermondays: Jenkins CI lightning talk
 
Hudson: Your robotic butler
Hudson: Your robotic butlerHudson: Your robotic butler
Hudson: Your robotic butler
 

Destacado

Business insight 2014 - Social Media Analytics, Thomas Normann-Ekegren, Micro...
Business insight 2014 - Social Media Analytics, Thomas Normann-Ekegren, Micro...Business insight 2014 - Social Media Analytics, Thomas Normann-Ekegren, Micro...
Business insight 2014 - Social Media Analytics, Thomas Normann-Ekegren, Micro...
Microsoft
 
Business Insight 2014 - Microsofts nye BI og database platform - Erling Skaal...
Business Insight 2014 - Microsofts nye BI og database platform - Erling Skaal...Business Insight 2014 - Microsofts nye BI og database platform - Erling Skaal...
Business Insight 2014 - Microsofts nye BI og database platform - Erling Skaal...
Microsoft
 

Destacado (20)

Microsoft Next 2014, Device Workshop v. Louise Harders
Microsoft Next 2014, Device Workshop v. Louise HardersMicrosoft Next 2014, Device Workshop v. Louise Harders
Microsoft Next 2014, Device Workshop v. Louise Harders
 
Kundeservice for vindere
Kundeservice for vindereKundeservice for vindere
Kundeservice for vindere
 
оргмомент
оргмоменторгмомент
оргмомент
 
Microsoft CRM2013
Microsoft CRM2013Microsoft CRM2013
Microsoft CRM2013
 
Cyber Security Conference - Informationssikkerhed og tryghed i digitalisering...
Cyber Security Conference - Informationssikkerhed og tryghed i digitalisering...Cyber Security Conference - Informationssikkerhed og tryghed i digitalisering...
Cyber Security Conference - Informationssikkerhed og tryghed i digitalisering...
 
Трейвиш А.И. Страноведение. Лекция 7
Трейвиш А.И. Страноведение. Лекция 7Трейвиш А.И. Страноведение. Лекция 7
Трейвиш А.И. Страноведение. Лекция 7
 
Grib mulighederne med seneste IT trends- få Microsoft overblikket og nyhederne
Grib mulighederne med seneste IT trends- få Microsoft overblikket og nyhederneGrib mulighederne med seneste IT trends- få Microsoft overblikket og nyhederne
Grib mulighederne med seneste IT trends- få Microsoft overblikket og nyhederne
 
Трейвиш А.И. Страноведение Лекция 1
Трейвиш А.И. Страноведение Лекция 1Трейвиш А.И. Страноведение Лекция 1
Трейвиш А.И. Страноведение Лекция 1
 
Samspillet mellem mennesker, processer og teknologi
Samspillet mellem mennesker, processer og teknologiSamspillet mellem mennesker, processer og teknologi
Samspillet mellem mennesker, processer og teknologi
 
Starter unikke kundeoplevelser i Marketing eller IT?
Starter unikke kundeoplevelser i Marketing eller IT?Starter unikke kundeoplevelser i Marketing eller IT?
Starter unikke kundeoplevelser i Marketing eller IT?
 
Transformér dine produkter med teknologi
Transformér dine produkter med teknologiTransformér dine produkter med teknologi
Transformér dine produkter med teknologi
 
Sådan understøtt er Mærsk sin strategi med sociale medier
Sådan understøtt er Mærsk sin strategi med sociale medierSådan understøtt er Mærsk sin strategi med sociale medier
Sådan understøtt er Mærsk sin strategi med sociale medier
 
Территория: Порождение, свойства, фиксация
Территория: Порождение, свойства, фиксацияТерритория: Порождение, свойства, фиксация
Территория: Порождение, свойства, фиксация
 
Business insight 2014 - Social Media Analytics, Thomas Normann-Ekegren, Micro...
Business insight 2014 - Social Media Analytics, Thomas Normann-Ekegren, Micro...Business insight 2014 - Social Media Analytics, Thomas Normann-Ekegren, Micro...
Business insight 2014 - Social Media Analytics, Thomas Normann-Ekegren, Micro...
 
Business Insight 2014 - Microsofts nye BI og database platform - Erling Skaal...
Business Insight 2014 - Microsofts nye BI og database platform - Erling Skaal...Business Insight 2014 - Microsofts nye BI og database platform - Erling Skaal...
Business Insight 2014 - Microsofts nye BI og database platform - Erling Skaal...
 
Трейвиш А.И. Страноведение. Лекция 4
Трейвиш А.И. Страноведение. Лекция 4Трейвиш А.И. Страноведение. Лекция 4
Трейвиш А.И. Страноведение. Лекция 4
 
Microsoft Next 2014 - Productivity session 5 - Projektoverblik, effektivt sam...
Microsoft Next 2014 - Productivity session 5 - Projektoverblik, effektivt sam...Microsoft Next 2014 - Productivity session 5 - Projektoverblik, effektivt sam...
Microsoft Next 2014 - Productivity session 5 - Projektoverblik, effektivt sam...
 
Трейвиш А.И. Страноведение. Лекция 3
Трейвиш А.И. Страноведение. Лекция 3Трейвиш А.И. Страноведение. Лекция 3
Трейвиш А.И. Страноведение. Лекция 3
 
Microsoft Next 2014 - Cloud Platform session 2 - Lolland kommune får styr på ...
Microsoft Next 2014 - Cloud Platform session 2 - Lolland kommune får styr på ...Microsoft Next 2014 - Cloud Platform session 2 - Lolland kommune får styr på ...
Microsoft Next 2014 - Cloud Platform session 2 - Lolland kommune får styr på ...
 
Неизвестное об известном. Выпуск 2
Неизвестное об известном. Выпуск 2Неизвестное об известном. Выпуск 2
Неизвестное об известном. Выпуск 2
 

Similar a Jenkins review buddy

The art of system and solution testing
The art of system and solution testingThe art of system and solution testing
The art of system and solution testing
gaoliang641
 
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
SmartBear
 

Similar a Jenkins review buddy (20)

Solving the 3 Biggest Questions in Continuous Testing
Solving the 3 Biggest Questions in Continuous TestingSolving the 3 Biggest Questions in Continuous Testing
Solving the 3 Biggest Questions in Continuous Testing
 
The Art of Testing Less without Sacrificing Quality @ ICSE 2015
The Art of Testing Less without Sacrificing Quality @ ICSE 2015The Art of Testing Less without Sacrificing Quality @ ICSE 2015
The Art of Testing Less without Sacrificing Quality @ ICSE 2015
 
The art of system and solution testing
The art of system and solution testingThe art of system and solution testing
The art of system and solution testing
 
Unit Testing talk
Unit Testing talkUnit Testing talk
Unit Testing talk
 
Measuring DevOps Performance
Measuring DevOps PerformanceMeasuring DevOps Performance
Measuring DevOps Performance
 
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
 
The Key to DevOps? Testing Early in the Pipeline
The Key to DevOps? Testing Early in the PipelineThe Key to DevOps? Testing Early in the Pipeline
The Key to DevOps? Testing Early in the Pipeline
 
Software testing
Software testingSoftware testing
Software testing
 
Continuous Performance Testing
Continuous Performance TestingContinuous Performance Testing
Continuous Performance Testing
 
Actionable Continuous Delivery Metrics - QCon San Francisco November 2018
Actionable Continuous Delivery Metrics - QCon San Francisco November 2018 Actionable Continuous Delivery Metrics - QCon San Francisco November 2018
Actionable Continuous Delivery Metrics - QCon San Francisco November 2018
 
Agile
AgileAgile
Agile
 
Tdd
TddTdd
Tdd
 
The size of the pull request is more important than you think
The size of the pull request is more important than you thinkThe size of the pull request is more important than you think
The size of the pull request is more important than you think
 
Pushing the Bottleneck: Predicting and Addressing the Next, Next Thing
Pushing the Bottleneck: Predicting and Addressing the Next, Next ThingPushing the Bottleneck: Predicting and Addressing the Next, Next Thing
Pushing the Bottleneck: Predicting and Addressing the Next, Next Thing
 
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
 
Soft quality & standards
Soft quality & standardsSoft quality & standards
Soft quality & standards
 
Soft quality & standards
Soft quality & standardsSoft quality & standards
Soft quality & standards
 
Why Software Test Performance Matters
Why Software Test Performance MattersWhy Software Test Performance Matters
Why Software Test Performance Matters
 
NYC MeetUp 10.9
NYC MeetUp 10.9NYC MeetUp 10.9
NYC MeetUp 10.9
 
Tips for Writing Better Charters for Exploratory Testing Sessions by Michael...
 Tips for Writing Better Charters for Exploratory Testing Sessions by Michael... Tips for Writing Better Charters for Exploratory Testing Sessions by Michael...
Tips for Writing Better Charters for Exploratory Testing Sessions by Michael...
 

Último

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 

Último (20)

A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
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
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 

Jenkins review buddy

  • 1. Jenkins ReviewBuddy Jenkins assisted Peer Code Reviews Knud.Poulsen@switch-gears.dk
  • 2. Inspiration for this talk + = JRB Competitive advantage today can only be achieved through better man/machine cooperation. No huge surprise to Jenkins users. Race *with* the machine.
  • 3. What we’ll cover ➢ Benefits of peer code review ➢ Our experiences ➢ Others’ experiences ➢ Real-world code review ➢ Causes of noise ➢ Jenkins to the rescue! ➢ Demo/ Screenshots ➢ Further development ➢ Call for sponsors & test pilots
  • 4. Key Benefits of Peer Code Review ➢ 90% reduction in shipped defects often reported in industry studies ➢ 25% net productivity increase often reported in industry studies ➢ Knowledge sharing ➢ Silo reduction ➢ Training new employees ➢ Best practice propagation
  • 5. Our experiences - Low Gain Example [Anonymized and obscured]
  • 6. Our experiences - High Gain Example [Anonymized and obscured]
  • 8. So, what do we know ? ➢ Average defect detection rate is only 25 percent for unit testing, 35 percent for function testing, and 45 percent for integration testing. In contrast, the average effectiveness of design and code inspections are 55 and 60 percent. [McConnell93]
  • 9. So, what do we know ? ➢ Basic code reading is ~96% as effective at finding defects as holding a formal heavyweight inspection meeting [Votta1993] ➢ Technical code review checklists are a powerful help (especially against omissions) [Dunsmore2000] ➢ Defect detection drops dramatically after ~60 minutes, to zero after ~90 minutes [Dunsmore2000]
  • 10. So, what do we know ? ➢ The longer a reviewer spends on the initial read-through, the more defects will ultimately be found [Uwano2006] ➢ Long methods are very time consuming to understand [Uwano2006] ➢ Loops are very time consuming to understand [Uwano2006] ➢ Reading time has ~3x higher correlation with defects found than number of lines under review [Laitenberger1999]
  • 11. So, what do we know ? ➢ Maximum effective review rate ~400 lines per hour [Cohen2006] ➢ Disproportionately more defects are found when code changes are under 200 lines [Cohen2006] ➢ Beneficial for “quality of review” if the author pre-reviews and leaves comments for subsequent reviewers [Cohen2006]
  • 12. So, what do we know ? ➢ Review 100 to 300 LOC at a time, in 30-60 minutes chunks, with a break between each sitting [Cohen2006] ➢ Spend at least 5 minutes reviewing a single line of code [Cohen2006] ➢ Limit reviewing to 1 hour per day [Ganssle2009]
  • 13. Real world ➢ Is messy... ➢ No clear pattern between time spent in the review state, total number of reworks required, or total number of lines changed ➢ Some studies compensate by dropping unreasonable data points and assuming informal out-of-tool review
  • 15. Why no clear pattern? ➢ “Production pressure” ➢ “Lack of review guidance” ➢ Hard to justify time ➢ Just give up on large reviews ➢ Hard to delay 1000 lines of new code the 3 days (300 lines/h, 3x1h, 1h/day) it should take to review effectively
  • 16. What outcome would we like? ➢ Smaller reviews should merge faster ➢ Larger reviews should merge slower
  • 17. Race *with* the machine ➢ Guidance on time to use doing review ➢ Remind author to do pre-review ➢ Up-front determination of reviewers ➢ Links to review checklists ➢ Load balance reviewers ➢ Help developers justify time investment ➢ Automatically add reviewers ➢ Automatically add developer as pre-reviewer
  • 22. Further work ➢ Also consider previous reviewers, not only previous developers ➢ Make language and domain specific review checklists easily accessible ➢ Weight and score commit message size against nr files/ lines changed ➢ Inline comments from warnings, static checkers ➢ OO review expansion, ie. “you also need to look at these 3 unchanged files”
  • 23. Call for Sponsors and Test Pilots ➢ Try it out in your own Gerrit Review/ Jenkins environment ➢ Sponsor development into a full-blow, feature rich, configurable “Jenkins ReviewBuddy” plugin ➢ Catch me in the break