SlideShare a Scribd company logo
1 of 38
November 2019
The Elusive Quest To
Measure Developer
Productivity
The Elusive Quest to Measure Developer Productivity
“The single most important task of a manager
is to elicit peak performance from [their team].”
– Andy Grove, High Output Management
The Elusive Quest to Measure Developer Productivity
“Abi, just give me some number”
The Elusive Quest to Measure Developer Productivity
“If you can’t measure it, you can’t improve it.”
– Peter Drucker
Abi Noda
Product @ GitHub
The Elusive Quest to Measure Developer Productivity
Metrics Are Hard
The Elusive Quest to Measure Developer Productivity
The Elusive Quest to Measure Developer Productivity
Commits
Small, frequent commits support greater transparency, collaboration, and
continuous delivery.
Use cases:
• Reward teams with high number/frequency of commits
• Improve teams with low number/frequency of commits
The Elusive Quest to Measure Developer Productivity
“Not everything that can be counted... counts.”
– Albert Einstein
The Elusive Quest to Measure Developer Productivity
The Elusive Quest to Measure Developer Productivity
Metrics inform our incentives and
shape behavior.
The Elusive Quest to Measure Developer Productivity
The Elusive Quest to Measure Developer Productivity
The Flawed Five
1. Commits
2. Lines of code
3. Pull request count
4. Velocity points
5. “Impact”
The Elusive Quest to Measure Developer Productivity
The Flawed Five
Five metrics that are commonly misused to measure productivity
The Elusive Quest to Measure Developer Productivity
The Elusive Quest to Measure Developer Productivity
Output cannot be measured
accurately.
The Elusive Quest to Measure Developer Productivity
2. Lines of code
Poor measure of output:
- Differences in languages and formatting
- More lines of code is… worse
Good for understanding:
- The size of a software system
- How your codebase is changing
The Elusive Quest to Measure Developer Productivity
The Elusive Quest to Measure Developer Productivity
3. Pull request count
Poor measure of output:
- Doesn’t factor size or effort required of work
- Encourages unnecessarily small, chunked PRs
Good for undertanding:
- Release cadence and continuous delivery
The Elusive Quest to Measure Developer Productivity
The Elusive Quest to Measure Developer Productivity
4. Velocity points
Poor measure of output:
- Sizing is done before work is completed, not after
- Undermines usefulness of estimation process
Good for understanding:
- Delivery forecasts based on past estimates
The Elusive Quest to Measure Developer Productivity
The Elusive Quest to Measure Developer Productivity
5. “Impact”
Poor measure of output:
- Same flaws as Lines of Code
- Too abstract to be actionable
The Elusive Quest to Measure Developer Productivity
The Flawed Five
1. Commits
2. Lines of code
3. Pull request count
4. Velocity points
5. “Impact”
The Elusive Quest to Measure Developer Productivity
Why We Measure
The Elusive Quest to Measure Developer Productivity
“We are flying blind.”
The Elusive Quest to Measure Developer Productivity
Why We Measure
1. Prompt action
2. Goals and alignment
3. Advocation
4. Higher purpose
The Elusive Quest to Measure Developer Productivity
1. Prompt action
Why We Measure
The Elusive Quest to Measure Developer Productivity
2. Goals and alignment
Why We Measure
The Elusive Quest to Measure Developer Productivity
3. Advocation
Why We Measure
The Elusive Quest to Measure Developer Productivity
4. Higher purpose
Why We Measure
The Elusive Quest to Measure Developer Productivity
Making Metrics Work
The Elusive Quest to Measure Developer Productivity
Making metrics work…
1. Measure process – not output
2. Measure against targets
3. Avoid individual metrics
The Elusive Quest to Measure Developer Productivity
Measure process – not output
• Code review turnaround time
• Pull request size
• Work in progress
• Time to open
• …
The Elusive Quest to Measure Developer Productivity
The Elusive Quest to Measure Developer Productivity
The Elusive Quest to Measure Developer Productivity
The Elusive Quest To Measure Developer Productivity

More Related Content

What's hot

Do Agile Right - Lessons Learned from an Atlassian Product Manager - Sherif M...
Do Agile Right - Lessons Learned from an Atlassian Product Manager - Sherif M...Do Agile Right - Lessons Learned from an Atlassian Product Manager - Sherif M...
Do Agile Right - Lessons Learned from an Atlassian Product Manager - Sherif M...Atlassian
 
Agile & Test Driven Development: The Ampersand Commerce Approach
Agile & Test Driven Development: The Ampersand Commerce ApproachAgile & Test Driven Development: The Ampersand Commerce Approach
Agile & Test Driven Development: The Ampersand Commerce ApproachAmpersand
 
The Hard life of Agile Coach Project in a ruin
The Hard life of Agile Coach Project in a ruinThe Hard life of Agile Coach Project in a ruin
The Hard life of Agile Coach Project in a ruinJakub Drzazga
 
7 Secrets of Successful HipChat Integrations
7 Secrets of Successful HipChat Integrations7 Secrets of Successful HipChat Integrations
7 Secrets of Successful HipChat IntegrationsAtlassian
 
Overview of Agile theory
Overview of Agile theoryOverview of Agile theory
Overview of Agile theorySon Pham
 
Effective quality improvement paths for manufacturing
Effective quality improvement paths for manufacturingEffective quality improvement paths for manufacturing
Effective quality improvement paths for manufacturingFrank Rzeznikiewicz
 
Designing business outcomes
Designing business outcomesDesigning business outcomes
Designing business outcomesEvan Leybourn
 
Building Software Fast with Freelancers & JIRA
Building Software Fast with Freelancers & JIRABuilding Software Fast with Freelancers & JIRA
Building Software Fast with Freelancers & JIRAAtlassian
 
Agile hacks for product managers
Agile hacks for product managersAgile hacks for product managers
Agile hacks for product managersSam McAfee
 
Steel Wedge Webcast
Steel Wedge WebcastSteel Wedge Webcast
Steel Wedge WebcastSteelwedge
 
Building Smart Software
Building Smart SoftwareBuilding Smart Software
Building Smart SoftwareAtlassian
 
Андрій Просов "Fixed Price Agile Projects: Challenges for Project Manager" Kh...
Андрій Просов "Fixed Price Agile Projects: Challenges for Project Manager" Kh...Андрій Просов "Fixed Price Agile Projects: Challenges for Project Manager" Kh...
Андрій Просов "Fixed Price Agile Projects: Challenges for Project Manager" Kh...Lviv Startup Club
 
Agile software development: Rapid growth & Distributed scrum
Agile software development: Rapid growth & Distributed scrumAgile software development: Rapid growth & Distributed scrum
Agile software development: Rapid growth & Distributed scrumMaite Wetters
 
Bringing Execs to the Collaboration Table with Impact Mapping
Bringing Execs to the Collaboration Table with Impact MappingBringing Execs to the Collaboration Table with Impact Mapping
Bringing Execs to the Collaboration Table with Impact MappingEm Campbell-Pretty
 
Principles of Lean UX
Principles of Lean UXPrinciples of Lean UX
Principles of Lean UXuxspencer
 
Got work to do? Zest thoughts on making a process
Got work to do? Zest thoughts on making a processGot work to do? Zest thoughts on making a process
Got work to do? Zest thoughts on making a processTim Pennells
 

What's hot (20)

Do Agile Right - Lessons Learned from an Atlassian Product Manager - Sherif M...
Do Agile Right - Lessons Learned from an Atlassian Product Manager - Sherif M...Do Agile Right - Lessons Learned from an Atlassian Product Manager - Sherif M...
Do Agile Right - Lessons Learned from an Atlassian Product Manager - Sherif M...
 
Agile & Test Driven Development: The Ampersand Commerce Approach
Agile & Test Driven Development: The Ampersand Commerce ApproachAgile & Test Driven Development: The Ampersand Commerce Approach
Agile & Test Driven Development: The Ampersand Commerce Approach
 
The Hard life of Agile Coach Project in a ruin
The Hard life of Agile Coach Project in a ruinThe Hard life of Agile Coach Project in a ruin
The Hard life of Agile Coach Project in a ruin
 
7 Secrets of Successful HipChat Integrations
7 Secrets of Successful HipChat Integrations7 Secrets of Successful HipChat Integrations
7 Secrets of Successful HipChat Integrations
 
Overview of Agile theory
Overview of Agile theoryOverview of Agile theory
Overview of Agile theory
 
Intro agile for PO's
Intro agile for PO'sIntro agile for PO's
Intro agile for PO's
 
Hire php developers | hire dedicated php developers.
Hire php developers |  hire dedicated php developers.Hire php developers |  hire dedicated php developers.
Hire php developers | hire dedicated php developers.
 
Effective quality improvement paths for manufacturing
Effective quality improvement paths for manufacturingEffective quality improvement paths for manufacturing
Effective quality improvement paths for manufacturing
 
Designing business outcomes
Designing business outcomesDesigning business outcomes
Designing business outcomes
 
Kanban na lodówce
Kanban na lodówceKanban na lodówce
Kanban na lodówce
 
Building Software Fast with Freelancers & JIRA
Building Software Fast with Freelancers & JIRABuilding Software Fast with Freelancers & JIRA
Building Software Fast with Freelancers & JIRA
 
Agile hacks for product managers
Agile hacks for product managersAgile hacks for product managers
Agile hacks for product managers
 
Steel Wedge Webcast
Steel Wedge WebcastSteel Wedge Webcast
Steel Wedge Webcast
 
Building Smart Software
Building Smart SoftwareBuilding Smart Software
Building Smart Software
 
Андрій Просов "Fixed Price Agile Projects: Challenges for Project Manager" Kh...
Андрій Просов "Fixed Price Agile Projects: Challenges for Project Manager" Kh...Андрій Просов "Fixed Price Agile Projects: Challenges for Project Manager" Kh...
Андрій Просов "Fixed Price Agile Projects: Challenges for Project Manager" Kh...
 
Agile software development: Rapid growth & Distributed scrum
Agile software development: Rapid growth & Distributed scrumAgile software development: Rapid growth & Distributed scrum
Agile software development: Rapid growth & Distributed scrum
 
What not to do when adopting Agile
What not to do when adopting AgileWhat not to do when adopting Agile
What not to do when adopting Agile
 
Bringing Execs to the Collaboration Table with Impact Mapping
Bringing Execs to the Collaboration Table with Impact MappingBringing Execs to the Collaboration Table with Impact Mapping
Bringing Execs to the Collaboration Table with Impact Mapping
 
Principles of Lean UX
Principles of Lean UXPrinciples of Lean UX
Principles of Lean UX
 
Got work to do? Zest thoughts on making a process
Got work to do? Zest thoughts on making a processGot work to do? Zest thoughts on making a process
Got work to do? Zest thoughts on making a process
 

Similar to The Elusive Quest To Measure Developer Productivity

Agile Metrics...That Matter
Agile Metrics...That MatterAgile Metrics...That Matter
Agile Metrics...That MatterErik Weber
 
Agile Myths and Misconceptions
Agile Myths and MisconceptionsAgile Myths and Misconceptions
Agile Myths and MisconceptionsCalen Legaspi
 
Software development practices at younginnovations
Software development practices at younginnovationsSoftware development practices at younginnovations
Software development practices at younginnovationsBimal Maharjan
 
Build Measure Learn - Designing Your MVP
Build Measure Learn - Designing Your MVPBuild Measure Learn - Designing Your MVP
Build Measure Learn - Designing Your MVPemilller1024
 
Building & launching mobile & digital products
Building & launching mobile & digital productsBuilding & launching mobile & digital products
Building & launching mobile & digital productsAnurag Jain
 
BEST Practices - Testing & Optimization | Bredan Rendan
BEST Practices - Testing & Optimization | Bredan RendanBEST Practices - Testing & Optimization | Bredan Rendan
BEST Practices - Testing & Optimization | Bredan RendanCaleb Whitmore
 
The Design Blueprint for Creating Performance-Driven Learning
The Design Blueprint for Creating Performance-Driven LearningThe Design Blueprint for Creating Performance-Driven Learning
The Design Blueprint for Creating Performance-Driven LearningCarrie Zens
 
Best of Lean Startup and Scrum for product development and enhancement
Best of  Lean Startup and Scrum  for product development and enhancementBest of  Lean Startup and Scrum  for product development and enhancement
Best of Lean Startup and Scrum for product development and enhancementDr. Anish Cheriyan (PhD)
 
Baby Steps To Agility
Baby Steps To AgilityBaby Steps To Agility
Baby Steps To AgilityNaresh Jain
 
Development Process @ TkXel
Development Process @ TkXelDevelopment Process @ TkXel
Development Process @ TkXelTkXel
 
Webinar agile-spring-maximum-roi
Webinar agile-spring-maximum-roiWebinar agile-spring-maximum-roi
Webinar agile-spring-maximum-roiCygnet Infotech
 
Just Married: User Centered Design and Agile
Just Married: User Centered Design and AgileJust Married: User Centered Design and Agile
Just Married: User Centered Design and AgileMemi Beltrame
 
Presented at Ford's 2017 Global IT Learning Summit (GLITS)
Presented at Ford's 2017 Global IT Learning Summit (GLITS)Presented at Ford's 2017 Global IT Learning Summit (GLITS)
Presented at Ford's 2017 Global IT Learning Summit (GLITS)Ron Lazaro
 

Similar to The Elusive Quest To Measure Developer Productivity (20)

Agile Metrics...That Matter
Agile Metrics...That MatterAgile Metrics...That Matter
Agile Metrics...That Matter
 
Martijn Beijk & Charles Goodall
Martijn Beijk & Charles GoodallMartijn Beijk & Charles Goodall
Martijn Beijk & Charles Goodall
 
Agile Myths and Misconceptions
Agile Myths and MisconceptionsAgile Myths and Misconceptions
Agile Myths and Misconceptions
 
Software development practices at younginnovations
Software development practices at younginnovationsSoftware development practices at younginnovations
Software development practices at younginnovations
 
Build Measure Learn - Designing Your MVP
Build Measure Learn - Designing Your MVPBuild Measure Learn - Designing Your MVP
Build Measure Learn - Designing Your MVP
 
The Startup Lifecycle (Presented by CEI and friends)
The Startup Lifecycle (Presented by CEI and friends)The Startup Lifecycle (Presented by CEI and friends)
The Startup Lifecycle (Presented by CEI and friends)
 
Sanitized tb swstmppp1516july
Sanitized tb swstmppp1516julySanitized tb swstmppp1516july
Sanitized tb swstmppp1516july
 
Building & launching mobile & digital products
Building & launching mobile & digital productsBuilding & launching mobile & digital products
Building & launching mobile & digital products
 
BEST Practices - Testing & Optimization | Bredan Rendan
BEST Practices - Testing & Optimization | Bredan RendanBEST Practices - Testing & Optimization | Bredan Rendan
BEST Practices - Testing & Optimization | Bredan Rendan
 
The Design Blueprint for Creating Performance-Driven Learning
The Design Blueprint for Creating Performance-Driven LearningThe Design Blueprint for Creating Performance-Driven Learning
The Design Blueprint for Creating Performance-Driven Learning
 
Best of Lean Startup and Scrum for product development and enhancement
Best of  Lean Startup and Scrum  for product development and enhancementBest of  Lean Startup and Scrum  for product development and enhancement
Best of Lean Startup and Scrum for product development and enhancement
 
Agile metrics at-pmi bangalore
Agile metrics at-pmi bangaloreAgile metrics at-pmi bangalore
Agile metrics at-pmi bangalore
 
Baby Steps To Agility
Baby Steps To AgilityBaby Steps To Agility
Baby Steps To Agility
 
Madhur Kathuria Release planning using feature points
Madhur Kathuria Release planning using feature pointsMadhur Kathuria Release planning using feature points
Madhur Kathuria Release planning using feature points
 
Development Process @ TkXel
Development Process @ TkXelDevelopment Process @ TkXel
Development Process @ TkXel
 
Agile dashboard
Agile dashboardAgile dashboard
Agile dashboard
 
Webinar agile-spring-maximum-roi
Webinar agile-spring-maximum-roiWebinar agile-spring-maximum-roi
Webinar agile-spring-maximum-roi
 
U Xmagic Agile Presentation
U Xmagic Agile PresentationU Xmagic Agile Presentation
U Xmagic Agile Presentation
 
Just Married: User Centered Design and Agile
Just Married: User Centered Design and AgileJust Married: User Centered Design and Agile
Just Married: User Centered Design and Agile
 
Presented at Ford's 2017 Global IT Learning Summit (GLITS)
Presented at Ford's 2017 Global IT Learning Summit (GLITS)Presented at Ford's 2017 Global IT Learning Summit (GLITS)
Presented at Ford's 2017 Global IT Learning Summit (GLITS)
 

Recently uploaded

Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Andreas Granig
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - InfographicHr365.us smith
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsAhmed Mohamed
 
software engineering Chapter 5 System modeling.pptx
software engineering Chapter 5 System modeling.pptxsoftware engineering Chapter 5 System modeling.pptx
software engineering Chapter 5 System modeling.pptxnada99848
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptkotipi9215
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaHanief Utama
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfPower Karaoke
 

Recently uploaded (20)

Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - Infographic
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML Diagrams
 
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort ServiceHot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
 
software engineering Chapter 5 System modeling.pptx
software engineering Chapter 5 System modeling.pptxsoftware engineering Chapter 5 System modeling.pptx
software engineering Chapter 5 System modeling.pptx
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.ppt
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief Utama
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdf
 

The Elusive Quest To Measure Developer Productivity

  • 1. November 2019 The Elusive Quest To Measure Developer Productivity
  • 2. The Elusive Quest to Measure Developer Productivity “The single most important task of a manager is to elicit peak performance from [their team].” – Andy Grove, High Output Management
  • 3. The Elusive Quest to Measure Developer Productivity “Abi, just give me some number”
  • 4. The Elusive Quest to Measure Developer Productivity “If you can’t measure it, you can’t improve it.” – Peter Drucker
  • 6. The Elusive Quest to Measure Developer Productivity Metrics Are Hard
  • 7. The Elusive Quest to Measure Developer Productivity
  • 8. The Elusive Quest to Measure Developer Productivity Commits Small, frequent commits support greater transparency, collaboration, and continuous delivery. Use cases: • Reward teams with high number/frequency of commits • Improve teams with low number/frequency of commits
  • 9. The Elusive Quest to Measure Developer Productivity “Not everything that can be counted... counts.” – Albert Einstein
  • 10. The Elusive Quest to Measure Developer Productivity
  • 11. The Elusive Quest to Measure Developer Productivity Metrics inform our incentives and shape behavior.
  • 12. The Elusive Quest to Measure Developer Productivity
  • 13. The Elusive Quest to Measure Developer Productivity The Flawed Five 1. Commits 2. Lines of code 3. Pull request count 4. Velocity points 5. “Impact”
  • 14. The Elusive Quest to Measure Developer Productivity The Flawed Five Five metrics that are commonly misused to measure productivity
  • 15. The Elusive Quest to Measure Developer Productivity
  • 16. The Elusive Quest to Measure Developer Productivity Output cannot be measured accurately.
  • 17. The Elusive Quest to Measure Developer Productivity 2. Lines of code Poor measure of output: - Differences in languages and formatting - More lines of code is… worse Good for understanding: - The size of a software system - How your codebase is changing
  • 18. The Elusive Quest to Measure Developer Productivity
  • 19. The Elusive Quest to Measure Developer Productivity 3. Pull request count Poor measure of output: - Doesn’t factor size or effort required of work - Encourages unnecessarily small, chunked PRs Good for undertanding: - Release cadence and continuous delivery
  • 20. The Elusive Quest to Measure Developer Productivity
  • 21. The Elusive Quest to Measure Developer Productivity 4. Velocity points Poor measure of output: - Sizing is done before work is completed, not after - Undermines usefulness of estimation process Good for understanding: - Delivery forecasts based on past estimates
  • 22. The Elusive Quest to Measure Developer Productivity
  • 23. The Elusive Quest to Measure Developer Productivity 5. “Impact” Poor measure of output: - Same flaws as Lines of Code - Too abstract to be actionable
  • 24. The Elusive Quest to Measure Developer Productivity The Flawed Five 1. Commits 2. Lines of code 3. Pull request count 4. Velocity points 5. “Impact”
  • 25. The Elusive Quest to Measure Developer Productivity Why We Measure
  • 26. The Elusive Quest to Measure Developer Productivity “We are flying blind.”
  • 27. The Elusive Quest to Measure Developer Productivity Why We Measure 1. Prompt action 2. Goals and alignment 3. Advocation 4. Higher purpose
  • 28. The Elusive Quest to Measure Developer Productivity 1. Prompt action Why We Measure
  • 29. The Elusive Quest to Measure Developer Productivity 2. Goals and alignment Why We Measure
  • 30. The Elusive Quest to Measure Developer Productivity 3. Advocation Why We Measure
  • 31. The Elusive Quest to Measure Developer Productivity 4. Higher purpose Why We Measure
  • 32. The Elusive Quest to Measure Developer Productivity Making Metrics Work
  • 33. The Elusive Quest to Measure Developer Productivity Making metrics work… 1. Measure process – not output 2. Measure against targets 3. Avoid individual metrics
  • 34. The Elusive Quest to Measure Developer Productivity Measure process – not output • Code review turnaround time • Pull request size • Work in progress • Time to open • …
  • 35. The Elusive Quest to Measure Developer Productivity
  • 36. The Elusive Quest to Measure Developer Productivity
  • 37. The Elusive Quest to Measure Developer Productivity

Editor's Notes

  1. Several years ago, I was the CTO of a small software company. Things were going well, customers were happy, and I felt like I was doing a good job.
  2. We’d recruited and hired great people, and the team seemed happy. We’d set up good workflows and pipelines, and our process felt efficient. We had regular 1:1s and retros, so everyone had constant feedback on how they could improve. So things were going well. But after a while… something started bothering me. I started feeling like we were plateauing. I couldn’t tell if we were actually getting better. I started questioning whether we were even good. Whether I was doing my job well.
  3. I wasn’t the only one interested in knowing this. My boss was too. He asked the entire leadership team of the company to start reporting out metrics at our monthly meetings. He specifically asked me to provide some indicator of our teams output and productivity… what we were getting done. I protested. I told him that I had never seen productivity metrics work on an engineering team. And that the metrics that I knew of... simply didn’t work. He told me, “Abi, I don’t care what it is but just give me some number.”
  4. So I thought about it. And the more I thought about it, the more the problem frustrated me. Why wasn’t there a metric I could use? How was it that I had no way of measuring how well my team was doing? Why hadn’t this problem been solved? To try and find answers, I reached out to some mentors to ask for help. The first person I spoke to had been a CTO for almost 20 years and managed hundreds of engineers. When I asked him what metrics could be used to look at productivity, he told me it was impossible... he told me that we were flawed in even asking that question. I reached out to another CTO… he told me he wanted to develop something like NBA plus minus for software teams... a way to measure the value contributed by eacb developer... but he hadn’t figured out how. I spoke to several other CTOs, and they were all at a loss. I couldn’t believe what I was hearing. These companies were spending tens of millions of dollars on engineers, yet no one had any way to track how well they were doing, let alone whether they were getting better or worse? This seemed crazy to me. In almost every other profession I knew of, for example sports, marketing, or sales… there are established ways to use metrics to understand how well your team is doing. And these metrics are usually generated by software. But ironically, in software development, we haven’t figured this out. We don’t have ways of measuring how well we’re doing, or whether we’re getting better. I thought to myself, there had to be a way. And I was determined to figure it out.
  5. My name is Abi and I’ve spent the past several years working on figuring out what kinds of metrics can be used on software teams, and how to use metrics in ways that promote positive behaviors and changes on teams. A couple years ago I started a company called Pull Panda, where we developed an analytics product called Pull Analytics. GitHub acquired Pull Panda earlier this year, and now I’m working with an unbelievable team at GitHub to make these kinds of capabilities available to every team. Today, I’m going to tell you some stories from my journey, and share with you some of what I’ve learned along the way.
  6. A few months after I spoke to my mentors, I left my job to work on this problem full time. I quickly discovered that metrics are a really hard problem. There are many things we can measure in software, but very few that we should. It took me awhile to realize this. I met with lots of companies… read up on all the literature and products that I could find. And I also spoke a lot with my dad. See my dad is a retired software developer. And if there’s one thing that developers and dads share in common, it’s that they have a lot of opinions… and like to voice them. I’ll tell you more about my dad in a minute.
  7. One of the first metrics I looked at was commits. GitHub had a bunch of graphs showing commits, so it seemed like an easy thing to count… I knew it wasn’t going to be the perfect metric… but it seemed useful. For starters, having no commits was definitely a red flag. If there are no commits… no code is getting shipped… and on a software team, that’s a problem right? See how useful this metric is already? It gives you an awesome way to see how much work is getting done!
  8. And it gets even better! You see, teams that I spoke with agreed that making small, frequent commits leads to better designed code. And so if you increase your number of commits, that’ll in effect result in smaller, more frequent commits. This is awesome! I thought I was onto something… so I showed it to some CTOs and they thought it sounded kind of interesting… but then I brought it up with my dad over a family dinner. He thought it was garbage! He said that no developer would ever want to be measured like this. You see, my dad had been a developer for 30 years. And throughout his career, he’d seen many situations where managers would roll out terrible metrics and piss off everyone on the team. It was terrible!
  9. He told me that tracking commits was a horrible idea because it said nothing about the actual value of the work delivered. And if someone wanted to they could easily game the metric by creating extra commits… which would be stupid. So if you can’t tell already, my dad was super sensitive about metrics. So sensitive, that he would blanketly reject almost any metric idea I pitched him on. I’d ask him, “how about this metric?” ... or “how about this one?”, and he’d just shake his head and say that the problem I was working on was impossible. He made me feel like I was speaking of evil and blasphemous things. So the tension between us was rising… and one afternoon, it blew up. I was reading the book Accelerate. It’s an awesome book which analyzes high performing engineering organizations, and suggests some metrics which can be used for benchmarking. So I was reading the book... and came across something in it that I thought was a great idea. I was working from my parents house and my dad had come home from getting groceries… as he walked in the house, I told him “Hey dad... check this out…. ” and read a line out of the book to him. He just shook his head and dismissed it, so I countered back... I said “what are YOU talking about?”. Well we got into a little verbal boxing match, and at some point he said “Abi, you know you’re not the Einstein of engineering metrics”. Given that I had been dedicating myself to researching engineering metrics, I was pretty offended… I started yelling at him, and things escalated to the point where I had to leave the house.
  10. Neither of us are proud of that moment, but the more I’ve worked in this space, the more I think back to that conflict as a reminder of just how emotional of a topic metrics are for both managers and developers. My frustration as a manager… was so intense. But the fear and opposition from my father, who was a developer… was equally intense. And understandably so, right? We all know that metrics can easily be misused… and that this can cause a lot of harm. Bad metrics can make developers miserable. They can undermine the good processes and culture we hope to achieve with metrics in the first place.
  11. There are a lot of ways this happens. An obvious one would be if a manager were to reward or punish developers on their team based on a metric like number of commits. This is bad. You shouldn’t do this. But there are less obvious ways in which metrics can effect your team. And in fact, even good metrics can be harmful if they’re presented in certain ways. Let me go into an example…
  12. This is one of the features we built in Pull Panda. It shows the average code review turnaround times of everyone on your team, from lowest to highest. Code review turnaround time is the time it takes for someone to respond to a review that’s been requested of them. Code review turnaround is a great metric – I’ll talk more about it later – but the way it’s presented here is not. Take a look at this page… and ask yourself, what kinds of negative behaviors do you think occurred when teams started viewing this? … So there were a few behaviors we observed: Review quality slipped because reviewers rushed to complete reviews Teams started not requesting reviews on Fridays so it wouldn’t affect their metrics What’s fascinating here is that review turnaround time is actually a really good. But even a good metrics can hurt your team when presented in a certain ways. So we’ve looked at a couple ways metrics that seem good can backfire. This is really important. To be successful with metrics, you not only have to choose the right ones, but you have to manifest them and use them in the right ways.
  13. I’ve highlighted how commits are a problematic metric. But it’s not the only one that spells trouble. There are four other metrics that I see a lot companies using as a way measure productivity. But these metrics don’t work. I call them the “Flawed Five”. In a moment I’ll walk through these metrics… but first…
  14. I’ve said the word “productivity” throughout this talk, but we haven’t defined what productivity means in the context of software engineering. I’ve spent a lot of time pondering this question. A few months ago I was in a meeting and I asked everyone in the room what their definition of productivity was. One person raised their hand and suggested that productivity should be like GDP… something like the dollars of revenue a company brings in per engineer. I thought to myself “that’s interesting… but that sounds kind of agricultural… we’re not building farms here…” After this meeting I kept thinking about this and later that evening I googled the dictionary definition of “productivity”.
  15. And the definition that came up was “the state or quality of producing something, especially crops”! I thought this was hilarious… and of course it left me even more confused about what productivity is or how it should be measured in software development. I’ve asked many developers and leaders about how they define productivity. And I’ve gotten many different responses. But the most common definition I get is “how much are we getting done?”. In other words, output. And this makes sense… after all, we do produce things in software development. And it’s therefore logical that we should try to measure “how much”.
  16. But the problem in software development is that we can’t. The process of producing software isn’t like a factory assembly line where you can count how many widgets are produced and how much each one cost. Software is more like art… like creating a painting… putting more paint on a canvas isn’t better, and similarly, having more lines of code or more pull requests doesn’t mean you’re creating something better. It might take an artist a day of deep thought to figure out the perfect brush stroke, and similarly, software is a creative process where a small amount of code can take an immense amount of time and effort to figure out. So in software, we can’t really measure output. But that doesn’t stop people from trying. And that’s what the Flawed Five metrics share in common. They are all measures of output that are used to represent productivity – and they don’t work. Let’s go through them.
  17. Number of lines of code is a metric that’s been around for a long time. And it’s a really bad measure of productivity. For starters, there are different languages and formatting conventions that greatly vary in the number of lines of code they generate. So 3 lines of code in one programming language might be exactly the same thing as 9 lines in another. On top of that, any good developer knows that they can code the same stuff with huge variations in lines of code… and that refactoring code, which is good, results in less code. So not only is lines of code inaccurate, but it incentivizes programming approaches that are counter to what leads to good software.
  18. Unfortunately, lines of code is still a really common metric used in our industry. I come across companies that use lines of code as a way of evaluating developers’ contributions to their team, even stack ranking and terminating developers based on it. I think we’d all agree that this isn’t good practice, but its surprisingly common. We need to move away from this.
  19. Another metric that I see being used to measure productivity is pull request count. Counting pull requests seems to be a fairly recent trend. I was at a meet-up last year and a manager told me that that “pull request count is the new vanity metric”. And I completely agree with him. Counting pull requests is a vanity metric. It’s not a good way of measuring how much work is getting done. Tracking the number of pull requests created or merged doesn’t factor in the size, effort, or impact of that work. So it tells you almost nothing other than the number of pull requests created. Like lines of code, this metric can encourage counterproductive behaviors. For example, this metric could encourage developers to unnecessarily split up their work into smaller pull requests, which would create more work and noise for the team.
  20. I’ve seen this metric spreading like wildfire across our industry. A recent example I came across is GitLab’s engineering OKRs. These are published on their website. In this OKR, their objective is to improve productivity by 60%. And they intend to achieve and measure this by increasing the number of merge requests created per engineer by 20%. I don’t think this is a good practice. Counting pull request might seem less offensive than counting lines of code, but both metrics suffer from similar flaws. Ok, let’s move on
  21. Velocity points can be an unpleasant subject. I think a lot of developers see them as necessary evil. I’m personally a big fan of velocity points and think that they be an outstanding way of sizing and estimating work. You run into problems, though, when you try to turn velocity into a measurement of productivity.
  22. When you reward people or teams based on the amount of points they complete, they are incentivized to inflate their estimates in order to increase their number…. When this happens, it makes the estimates and the number of points you are completing meaningless. So as soon as you start using points to measure productivity, points become useless for their designed purpose.
  23. Impact is a new, proprietary metric offered by several prominent vendors in the engineering analytics space. “Impact” is an evolved version of “Lines of code” that factors in things like how many different files were changes and what amount of changes were new code vs changing existing code. All these factors are combined to calculate what is called an “Impact” score for each developer or team. I’ve observed many companies that have tried this metric, and developers almost always hate it. Not only does this metric suffer from the same flaws as Lines of code, but it’s really difficult to understand because it’s calculated using a number of factors. Then there’s the naming of it. Calling a metric “Impact” sends a strong signal about it how it should be used, particularly by managers. And this makes it very easy to misuse. Do you remember the story about my dad? This is exactly the kind of stuff he was terrified about.
  24. So to recap, these are the Flawed Five. These metrics attempt to measure output and tie it to productivity… and as I’ve outlined, these metrics don’t work. But why is it that these five metrics are still so prevalent? Why is it that we keep using them despite their flaws?
  25. If you recall the story I shared at the beginning of this talk… that frustration I had of not being able to measure how my team was doing… that was a strong emotion. And as I’ve spoken to many people across the industry, I have come to see how widespread and powerful the desire to measure is.
  26. I’ve met with leaders in charge of tens of thousands of engineers who tell me they are flying blind… the maintainers of some of the largest open source projects that have no way of seeing the health of their communities or impact of their work. And countless developers and managers who are looking for a way to measure their progress and improvement. These are all scenarios where measurement would be incredibly useful. But there aren’t good solutions today. And it’s this burning desire to measure… this desperation.. that can lead us into the trap of measuring the wrong things or using metrics in the wrong ways.
  27. So to help prevent ourselves from falling into these traps, we need to better understand ourselves. We need to be aware of what we’re trying to measure, and why. And the “why” is really important. Understanding the “why” allows us to recognize our biases, avoid the trap of misusing metrics, and move toward better solutions. I think that in almost all cases, our desire to measure is driven by four fundamental reasons… four “whys”. Let’s go through them.
  28. The first and most obvious reason we want to measure is to inform our actions and decisions. For example, I was talking to an engineering director a few weeks ago who wanted a way to more evenly distribute code reviews across their team. He wanted to create a dashboard that their team could use to see.
  29. All teams and organizations need ways of agreeing on what they’re trying to do,
  30. <Story of director who wants to ask for more headcount, or $10mm investment in a new tool> <We see this problem with GitHub itself>