How to measure and improve developer productivity | Nicole Forsgren (Microsoft Research, GitHub, Google)

Jul 30, 2023 1h 16m 13 insights Episode Page ↗
Nicole Forsgren, a developer productivity expert and partner at Microsoft Research, discusses measuring and improving engineering team productivity and experience. She details the DORA and SPACE frameworks, provides elite performance benchmarks, and explains how faster delivery enhances quality and stability.
Actionable Insights

1. Define Problem Clearly

Before tackling any initiative, clearly define your problem or goal to ensure everyone is on the same page and working towards the same objective, preventing misaligned efforts.

2. Ship Smaller Changes Frequently

To improve both speed and stability, ship smaller changes more often; this reduces the blast radius of errors and makes debugging significantly easier and faster.

3. Track DORA Four Metrics

Measure your team’s software delivery performance using the DORA four key metrics: lead time for changes, deployment frequency, mean time to restore (MTTR), and change fail rate, as these predict both speed and stability.

4. Apply SPACE for Productivity Measurement

When measuring complex creative work like developer productivity, use the SPACE framework (Satisfaction & Well-being, Performance, Activity, Communication & Collaboration, Efficiency & Flow) by selecting at least three dimensions to ensure a balanced and holistic view.

5. Combine People & System Data

Complement system-generated data (quantitative) with insights from people (qualitative, e.g., surveys, interviews) to gain a comprehensive understanding of productivity, as each provides unique perspectives that the other cannot.

6. Aim for Elite DORA Benchmarks

Strive for elite performance benchmarks: deploy on demand, achieve lead time for changes under one day, restore services in less than an hour, and maintain a change fail rate between 0-15% to gauge your team’s top-tier efficiency and reliability.

7. Adopt DevOps Capabilities

To achieve fast and stable feature delivery, implement key DevOps capabilities such as automated testing, continuous integration/continuous deployment (CI/CD), trunk-based development, and loosely coupled architectural systems.

8. Use Dora.dev Quick Check

Visit Dora.dev’s quick check to benchmark your team’s performance and identify statistical constraints specific to your industry and performance profile, guiding your improvement efforts.

9. Query Developers on Barriers

Directly ask developers about their feelings regarding work tools and processes, and identify their biggest barriers to productivity, as their insights are crucial for targeted improvements.

10. Utilize Four Box Framework

When forming a hypothesis or planning to measure something, use the Four Box Framework: define your hypothesis in “words” (two boxes linked by an arrow), then define how you’ll measure each part with “data” (two corresponding boxes below), ensuring clarity and testability.

11. Communicate Work Accessibly

Make your work incredibly accessible by understanding your audience’s role and vocabulary, then translate your work into concise summaries (a few sentences or less) to ensure clear communication and resonance.

12. Use Decision-Making Spreadsheet

To make informed decisions, create a spreadsheet outlining options, defining important criteria, assigning relative weights (summing to 100%), and scoring each option against the criteria, then multiply to get a weighted score.

13. Align Top-Down & Bottom-Up

Drive success for initiatives by pursuing them with both top-down leadership support and bottom-up buy-in from individual contributors, ensuring good communication throughout the organization.