{"id":3775,"date":"2025-02-28T17:40:03","date_gmt":"2025-02-28T17:40:03","guid":{"rendered":"https:\/\/www.aviator.co\/blog\/?p=3775"},"modified":"2025-09-09T22:23:17","modified_gmt":"2025-09-09T22:23:17","slug":"applying-developer-productivity-metrics-system","status":"publish","type":"post","link":"https:\/\/www.aviator.co\/blog\/applying-developer-productivity-metrics-system\/","title":{"rendered":"Measuring Developer Productivity the Right Way"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"538\" src=\"https:\/\/www.aviator.co\/blog\/wp-content\/uploads\/2025\/02\/blog-1200x630-2-1024x538.png\" alt=\"Developer Productivity Metrics\" class=\"wp-image-3785\" srcset=\"https:\/\/www.aviator.co\/blog\/wp-content\/uploads\/2025\/02\/blog-1200x630-2-1024x538.png 1024w, https:\/\/www.aviator.co\/blog\/wp-content\/uploads\/2025\/02\/blog-1200x630-2-300x158.png 300w, https:\/\/www.aviator.co\/blog\/wp-content\/uploads\/2025\/02\/blog-1200x630-2-768x403.png 768w, https:\/\/www.aviator.co\/blog\/wp-content\/uploads\/2025\/02\/blog-1200x630-2-1536x806.png 1536w, https:\/\/www.aviator.co\/blog\/wp-content\/uploads\/2025\/02\/blog-1200x630-2-2048x1075.png 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><br>Whether you think developer productivity can\u2019t be measured (<a href=\"https:\/\/martinfowler.com\/bliki\/CannotMeasureProductivity.html\" target=\"_blank\" rel=\"noopener\" title=\"\">like Martin Fowler<\/a>) or are obsessed with getting precise insights into what slows down developers or makes teams collaborate better, as an engineering leader, you\u2019ll probably have to and want to apply some kind of <strong>developer productivity metrics system.<\/strong><br><br>Instead of debating whether you can measure developer productivity or whether you should, let\u2019s figure out <strong>how to do it correctly.<\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Developer Productivity: What to Track, When, Why, and How?<\/strong><\/h2>\n\n\n\n<p>One thing everyone seems to agree on \u2014 McKinsey, <strong>Gergely Orosz<\/strong>, <strong>Kent Beck<\/strong>, <strong>Martin Fowler,<\/strong> <strong>Dave Farley<\/strong>, and hundreds of engineering leaders working at organizations of all shapes and sizes \u2014 is that some standard metrics systems, like <a href=\"https:\/\/www.aviator.co\/blog\/how-to-calculate-dora-metrics\/\" target=\"_blank\" rel=\"noopener\" title=\"\">the DORA metrics<\/a>, are the best we have so far.<\/p>\n\n\n\n<p>At least as a starting point. When Orosz asked 17 engineering leaders at 17 companies what metrics they track, he got <a href=\"https:\/\/newsletter.pragmaticengineer.com\/p\/measuring-developer-productivity-bae\" target=\"_blank\" rel=\"noopener\" title=\"\">17 different answers.<\/a><br><br>And that\u2019s OK. When you go just one level beyond the DORA metrics, every company optimizes for what they care about.<br><br><strong>The secret to getting developer productivity metrics righ<\/strong>t is to measure what matters to you, what matters to your engineering teams, and what is applicable to your way of working, your product, and the stage of the company.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The 4 Rules of Measuring Developer Productivity the Right Way<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><strong><br>1. Contextualize Developer Productivity Metrics to the Team\u2019s Specific Goals<\/strong><\/h3>\n\n\n\n<p>Not all teams are alike. The metrics that matter for a team working on a highly experimental, rapidly evolving product will be different from those for a team maintaining a large, stable enterprise application. Engineering leaders should tailor productivity metrics to the specific context of the team and the project.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><em>\u201cI\u2019m a big proponent of the DORA metrics, but it&#8217;s important to <strong>understand the context for which you\u2019re going to apply them<\/strong>. We have Atlas, which is a SaaS product, and productivity can easily be measured with time to deploy, time to failure, and time to recovery. That\u2019s the context <\/em>\u2014<em> cloud-native development <\/em>\u2014<em> that the DORA metrics were meant for. <br><br>But we also have non-SaaS offerings, and our customers wouldn\u2019t want to download a new distro package every day, not even every week or even every month. We have a major version cycle of one year. <br>You can also measure time to \u2018deploy\u2019 in that context; it\u2019s just going to be slightly different <\/em>\u2014-<em> not measuring packages made available to download, but in our staging environment.\u201d<\/em><\/p>\n\n\n\n<p><strong>Tara Hernandez, MongoDB<\/strong><\/p>\n<\/blockquote>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/podcast.aviator.co\/p\/designing-developer-productivity-mongo-db\" target=\"_blank\" rel=\" noreferrer noopener\"><img decoding=\"async\" width=\"1024\" height=\"538\" src=\"https:\/\/www.aviator.co\/blog\/wp-content\/uploads\/2025\/02\/hangar-dx-podcast-mongodb-1024x538.png\" alt=\"\" class=\"wp-image-3896\" srcset=\"https:\/\/www.aviator.co\/blog\/wp-content\/uploads\/2025\/02\/hangar-dx-podcast-mongodb-1024x538.png 1024w, https:\/\/www.aviator.co\/blog\/wp-content\/uploads\/2025\/02\/hangar-dx-podcast-mongodb-300x158.png 300w, https:\/\/www.aviator.co\/blog\/wp-content\/uploads\/2025\/02\/hangar-dx-podcast-mongodb-768x403.png 768w, https:\/\/www.aviator.co\/blog\/wp-content\/uploads\/2025\/02\/hangar-dx-podcast-mongodb.png 1200w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p>Full episode of HangarDX podcast episode on <a href=\"https:\/\/podcast.aviator.co\/p\/designing-developer-productivity-mongo-db\" target=\"_blank\" rel=\"noopener\" title=\"\">Designing MongoDB developer productivity at Mongo DB<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>2. Developer Experience =&gt; Developer Happiness =&gt; Developer Productivity <\/strong><\/h3>\n\n\n\n<p>The goal of developer productivity metrics should be to <strong>identify and reduce inefficiencies and friction in developers\u2019 workflows.<\/strong> Although they\u2019re different concepts and shouldn\u2019t be confused, Developer Productivity, Engineering Effectiveness, and Developer Experience are intertwined.<br><strong><br>Quantitative metrics like DORA or SPACE<\/strong> should be <strong>paired with developer satisfaction surveys<\/strong> to diagnose waste and friction that frustrate developers. Ultimately, good developer experience practices lead to <strong>developer satisfaction, which leads to developer productivity.<\/strong><\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>3. Measure what Matters (and Stop When it Doesn\u2019t)<\/strong><\/h3>\n\n\n\n<p>When you understand the issues in your organization, you can start tracking whether they are getting better or worse. A good way to avoid metrics overload is to measure only what really matters to your team or organization in addition to the basic DORA or SPACE metrics.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><em>\u201cWhen you have identified a metric\/signal that is too high or too low, you measure it until it\u2019s where you wanted it to be. Then you STOP.&nbsp;<\/em><\/p>\n\n\n\n<p><em>Otherwise, you <strong>end up with a dashboard with over 100 metrics that look like the stock market!<\/strong> <\/em><br><br><em>Half of the metrics are going up, and half of them are going down, and no one knows whether that\u2019s good or bad.\u201d<\/em><br><strong>Chris Westerhold, HTEC<\/strong><\/p>\n<\/blockquote>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/podcast.aviator.co\/p\/case-against-metrics-with-chris-westerhold\" target=\"_blank\" rel=\" noreferrer noopener\"><img decoding=\"async\" width=\"1024\" height=\"538\" src=\"https:\/\/www.aviator.co\/blog\/wp-content\/uploads\/2025\/02\/hangar-dx-podcast-chris-1024x538.png\" alt=\"\" class=\"wp-image-3891\" srcset=\"https:\/\/www.aviator.co\/blog\/wp-content\/uploads\/2025\/02\/hangar-dx-podcast-chris-1024x538.png 1024w, https:\/\/www.aviator.co\/blog\/wp-content\/uploads\/2025\/02\/hangar-dx-podcast-chris-300x158.png 300w, https:\/\/www.aviator.co\/blog\/wp-content\/uploads\/2025\/02\/hangar-dx-podcast-chris-768x403.png 768w, https:\/\/www.aviator.co\/blog\/wp-content\/uploads\/2025\/02\/hangar-dx-podcast-chris.png 1200w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">4. <strong>Tie Metrics with Dollars<\/strong><\/h3>\n\n\n\n<p>Developer productivity<strong> <\/strong>metrics are a means to an end, and<strong> <\/strong>different layers of organization need different sets of metrics. Many leaders see developer experience as just a cost center. It\u2019s key to present what <strong>bad developer experience is costing the entire company in dollars<\/strong>. Build metrics that can help make that visible to them!<br><br>One of the ways is the classic triangle of cost, speed, and quality. By understanding that one of them has to be compromised unless friction is removed within the company, the C-suite will have an understanding of how the engineering organization is affecting the business results. <strong>Sixty-nine percent of developers are losing more than 8 hours a week<\/strong> to inefficiencies, according to <a href=\"https:\/\/www.atlassian.com\/blog\/developer\/developer-experience-report-2024\" target=\"_blank\" rel=\"noopener\" title=\"\">Atlassian\u2019s Developer Experience Report<\/a>). That\u2019s 20 percent of wasted developer hours!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong> 3 Ways How Developer Productivity Metrics Can Go Wrong<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>1. Measuring the Productivity of Individual Developers<\/strong><\/h3>\n\n\n\n<p>Measuring the productivity of individuals in any way \u2014 be it <strong>the lines of code or the number of closed tickets<\/strong> or something else is pointless. No one likes to be micromanaged, and software development is a team effort anyway. What you measure should say to developers that you\u2019re measuring that with them, not against them.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>2. Metrics for the Sake of Metrics<\/strong><\/h3>\n\n\n\n<p>Don\u2019t measure things that are easy to measure but don\u2019t have a real impact. As<strong> Goodhart&#8217;s Law<\/strong> says \u2014 when a measure becomes a target, it ceases to be a good measure. When you set very specific goals for people, especially if those metrics are tied to financial rewards or career progress, they will tend to <strong>optimize for those metrics no matter the consequences.<\/strong><br><br>Avoid metric pitfalls by <strong>setting your developer productivity metrics in pairs of positive and negative metrics.<\/strong> So, if the goal is to <a href=\"https:\/\/www.aviator.co\/blog\/rethinking-code-reviews-with-stacked-prs\/\" target=\"_blank\" rel=\"noopener\" title=\"\">lower code review times<\/a>, you don\u2019t want to achieve that by engineers just approving whatever comes their way and the number of bugs in production going up.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3. <strong>Not Caring About Culture and Satisfaction<\/strong><\/h3>\n\n\n\n<p>We tend to think of productivity as just an output. But as an engineering manager, you also have to consider people. That\u2019s why the SPACE framework takes into account developer satisfaction and well-being. Because, again, a h<strong>appy developer equals a productive developer.<\/strong><\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><em>\u201cEngineers are not people working in the widget factory. <\/em><br><br><em>I don\u2019t want to think about productivity as telling a developer <\/em>\u2014<em> <strong>last week, you produced 50 widgets, and this week, you have to produce 51. <\/strong><\/em><\/p>\n\n\n\n<p><em>What if he told me that he produced 51 widgets this week, but he was really unhappy because the widget machine was broken, and he did it with brute force? You realize that if you invested in fixing the widget machine, you\u2019d get 100 widgets produced a week!\u201d<\/em><br><strong>Max Kanat-Alexander, LinkedIn<\/strong><\/p>\n<\/blockquote>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/podcast.aviator.co\/p\/developer-productivity-and-happiness\" target=\"_blank\" rel=\" noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"538\" src=\"https:\/\/www.aviator.co\/blog\/wp-content\/uploads\/2025\/02\/hangar-dx-podcast-linkedin-1024x538.png\" alt=\"\" class=\"wp-image-3898\" srcset=\"https:\/\/www.aviator.co\/blog\/wp-content\/uploads\/2025\/02\/hangar-dx-podcast-linkedin-1024x538.png 1024w, https:\/\/www.aviator.co\/blog\/wp-content\/uploads\/2025\/02\/hangar-dx-podcast-linkedin-300x158.png 300w, https:\/\/www.aviator.co\/blog\/wp-content\/uploads\/2025\/02\/hangar-dx-podcast-linkedin-768x403.png 768w, https:\/\/www.aviator.co\/blog\/wp-content\/uploads\/2025\/02\/hangar-dx-podcast-linkedin-1536x806.png 1536w, https:\/\/www.aviator.co\/blog\/wp-content\/uploads\/2025\/02\/hangar-dx-podcast-linkedin-2048x1075.png 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p>Listen to the full Hangar DX podcast episode on <a href=\"https:\/\/podcast.aviator.co\/p\/developer-productivity-and-happiness\" target=\"_blank\" rel=\"noopener\" title=\"\">Developer Productivity and Happiness framework at LinkedIn<\/a><br><br>Interested in measuring productivity and improving developer experience?<br><strong>Join The Hangar DX, a curated community for developer-experience (DX) enthusiasts!<\/strong><\/p>\n\n\n\n<!-- Hardcoded CTA for Hangar DX -->\n<div style=\"position: relative; display: flex; align-items: center; background: #FFD966; padding: 20px 30px; border-radius: 10px; margin: 40px 0; justify-content: space-between; flex-wrap: wrap; overflow: hidden; max-width: 860px; box-shadow: 0px 4px 10px rgba(0,0,0,0.1);\">\n    <div style=\"flex: 1; z-index: 2; max-width: 500px;\">\n        <h2 style=\"margin: 0; color: #0C344B; font-size: 20px; font-weight: 600;\">Join The Hangar DX<\/h2>\n        <p style=\"color: #333; font-size: 13px; margin-bottom: 15px;\">A vetted community of developer-experience (DX) enthusiasts.<\/p>\n        <form id=\"hubspot-form\" action=\"https:\/\/forms.hubspot.com\/uploads\/form\/v2\/40144919\/d19cd783-21ad-4c7a-b188-1626fcf45ac1\" method=\"POST\" style=\"display: flex; gap: 6px; align-items: center; max-width: 400px;\">\n            <input type=\"hidden\" name=\"hs_context\" value='{\"hutk\": \"{{contact.hs_context}}\"}'>\n            <input type=\"email\" name=\"email\" placeholder=\"Email\" required style=\"padding: 8px; border: 1px solid #ccc; border-radius: 5px; width: 130px; font-size: 13px; background: white;\">\n            <input type=\"text\" name=\"company\" placeholder=\"Company\" required style=\"padding: 8px; border: 1px solid #ccc; border-radius: 5px; width: 130px; font-size: 13px; background: white;\">\n            <button type=\"submit\" id=\"submit-btn\" style=\"background: #5A87F0; color: white; border: none; padding: 8px 15px; border-radius: 5px; cursor: pointer; font-size: 13px; font-weight: 600; display: flex; align-items: center; justify-content: center; min-width: 130px;\">Request access<\/button>\n        <\/form>\n        <p id=\"success-message\" style=\"display: none; color: #0C344B; font-size: 14px; font-weight: 400; margin-top: 10px;\">Thank you! We&#8217;ll be in touch.<\/p>\n    <\/div>\n    <div style=\"position: absolute; top: 0; right: 0; width: 100%; height: 100%; background: linear-gradient(to bottom left, white 15%, #FFD966 45%); z-index: 1; pointer-events: none; clip-path: polygon(60% 0%, 100% 0%, 100% 100%, 70% 100%);\"><\/div>\n    <div style=\"max-width: 220px; z-index: 2; position: absolute; right: 10px; bottom: -25px;\">\n        <img decoding=\"async\" src=\"\/blog\/wp-content\/uploads\/2025\/03\/aviator-hangar-dx-plane-logo-illustration-clear-min.png\" alt=\"Aviator Hangar DX Plane Illustration Logo\" style=\"max-width: 100%; height: auto; transform: scale(1.05);\">\n    <\/div>\n<\/div>\n\n<script>\n  document.getElementById(\"hubspot-form\").addEventListener(\"submit\", function(event) {\n    event.preventDefault(); \/\/ Prevent default submission behavior\n    \n    var form = this;\n    var formData = new FormData(form);\n    \n    fetch(form.action, {\n      method: \"POST\",\n      body: formData,\n      headers: {\n        \"Accept\": \"application\/json\"\n      }\n    }).then(response => {\n      if (response.ok) {\n        document.getElementById(\"submit-btn\").style.display = \"none\";\n        document.getElementById(\"success-message\").style.display = \"block\";\n      }\n    }).catch(error => console.error(\"Error:\", error));\n  });\n<\/script>\n\n\n\n<p>The Hangar DX is a <strong>community of senior DevOps and senior software engineers focused on developer experience.<\/strong> This is a space where vetted, experienced professionals can exchange ideas, share hard-earned wisdom, troubleshoot issues, and ultimately help each other in their projects and careers.<br><\/p>\n","protected":false},"excerpt":{"rendered":"<p>How to measure software developer productivity without ending up with a stock-market-like dashboard tracking hundreds of metrics<\/p>\n","protected":false},"author":18,"featured_media":3785,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[77],"tags":[246,243,32,247,244,245],"class_list":["post-3775","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-developer-productivity"],"blocksy_meta":[],"acf":[],"aioseo_notices":[],"jetpack_featured_media_url":"https:\/\/www.aviator.co\/blog\/wp-content\/uploads\/2025\/02\/blog-1200x630-2.png","post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/www.aviator.co\/blog\/wp-json\/wp\/v2\/posts\/3775","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.aviator.co\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.aviator.co\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.aviator.co\/blog\/wp-json\/wp\/v2\/users\/18"}],"replies":[{"embeddable":true,"href":"https:\/\/www.aviator.co\/blog\/wp-json\/wp\/v2\/comments?post=3775"}],"version-history":[{"count":27,"href":"https:\/\/www.aviator.co\/blog\/wp-json\/wp\/v2\/posts\/3775\/revisions"}],"predecessor-version":[{"id":4817,"href":"https:\/\/www.aviator.co\/blog\/wp-json\/wp\/v2\/posts\/3775\/revisions\/4817"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.aviator.co\/blog\/wp-json\/wp\/v2\/media\/3785"}],"wp:attachment":[{"href":"https:\/\/www.aviator.co\/blog\/wp-json\/wp\/v2\/media?parent=3775"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.aviator.co\/blog\/wp-json\/wp\/v2\/categories?post=3775"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.aviator.co\/blog\/wp-json\/wp\/v2\/tags?post=3775"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}