\u003C/figure>\n\u003C!-- /wp:image -->\n\n\u003C!-- wp:paragraph -->\n\u003Cp>\u003Ca href=\"https://stackoverflow.blog/2023/02/27/stop-saying-technical-debt/\">Chelsea Troy wrote about the imprecision of the term tech debt\u003C/a>, and offered “maintenance load” as an alternative. Outdated tech and \u003Ca href=\"https://stackoverflow.blog/2021/12/22/best-practices-can-slow-your-application-down/\">sacrifices made in the name of efficienc\u003C/a>y have qualitative effects; that is, they feel bad at some point. But the amount of time that a team spends on non-feature code? That’s a metric you can hang a budget on. \u003C/p>\n\u003C!-- /wp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\u003Cp>As \u003Ca href=\"https://softwareengineering.stackexchange.com/questions/43948/how-can-i-convince-management-to-deal-with-technical-debt#comment935502_43972\">Some Guy said\u003C/a> on the Software Engineering Stack Engineering site, “Poor-quality code often takes significantly longer to maintain due to complexity, and also typically has a high bug count. Thus, poor quality will eventually severely impact things managers value.” Most companies already have some sort of issue tracking system in use, so devs who want to make their case can piggyback on that. It just requires discipline in tracking tickets, estimating story points, and proving out time spent on maintaining tech debt. Whether you roll all your debt up into a single epic depends on your organization’s needs; the tracking of specific tech debt-related actions is more important. \u003C/p>\n\u003C!-- /wp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\u003Cp>That applies to actions that you know are part of your maintenance load and existing debt. To identify the effects of specific areas of debt, look to the code. \u003Ca href=\"https://stackoverflow.com/a/1790504\">Andy Dent suggested on Stack Overflow\u003C/a> that you track which pieces of code are getting the most commits. “Doing such data mining would allow you to also identify clustering of when code is being maintained and compare that to bug completion in the tracking system,” he wrote. \u003C/p>\n\u003C!-- /wp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\u003Cp>You could just ask your team, though. Roberta Arcoverde, director of engineering here at Stack Overflow, said, \"It may sound naïve but there's actual data and science behind why that usually works as well as other more sophisticated techniques: if the team recognizes something as important, they probably either spent some time in it recently—which is why it's top of mind—or the code is so bad they remember it promptly.\"\u003C/p>\n\u003C!-- /wp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\u003Cp>Of course, these are just the costs of writing code to fix and maintain your debt. Another important metric is the code you didn’t write. \u003C/p>\n\u003C!-- /wp:paragraph -->\n\n\u003C!-- wp:heading -->\n\u003Ch2 class=\"wp-block-heading\" id=\"h-opportunity-cost\">Opportunity cost\u003C/h2>\n\u003C!-- /wp:heading -->\n\n\u003C!-- wp:paragraph -->\n\u003Cp>If developers are spending nearly half their time on tech debt and bad code, that means they aren’t shipping new features out to customers. For a software industry that has recently become obsessed with development velocity, this is a big deal. The faster you can ship new features, the better you can satisfy customer requirements, and the greater value you can add to your product. Conversely, the more time it takes to get features and fixes to market, the farther you fall behind competitors. \u003C/p>\n\u003C!-- /wp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\u003Cp>Much of development velocity focuses on the DevOps side of the software development lifecycle (SDLC): CI/CD, code reviews, build processes, and so on. The \u003Ca href=\"https://cloud.google.com/blog/products/devops-sre/using-the-four-keys-to-measure-your-devops-performance\">DORA metrics\u003C/a> are a pretty good guide for this. But any tech debt will also affect how long it takes to write the code that you’re trying to deliver, especially if you’re writing workarounds that increase the number of paths through code—\u003Ca href=\"https://stackoverflow.com/questions/27954015/cyclomatic-complexity-and-variants\">cyclomatic complexity\u003C/a>—in order to avoid tackling the tech debt slowing you down. That complexity itself becomes a piece of debt that you may need to resolve at some point. \u003C/p>\n\u003C!-- /wp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\u003Cp>There is absolutely a connection between this \u003Ca href=\"https://softwareengineering.stackexchange.com/questions/108403/is-there-a-correlation-between-code-complexity-and-developer-productivity\">complexity and developer productivity\u003C/a>. As code becomes harder to maintain, new features take longer to ship. The more places in the codebase that need to be touched for a change to work, the more time it takes. That’s why motivational acronyms like \u003Ca href=\"https://en.wikipedia.org/wiki/Don%27t_repeat_yourself\">DRY\u003C/a> and \u003Ca href=\"https://en.wikipedia.org/wiki/KISS_principle\">KISS\u003C/a> gain traction: other people need to read this code, so the easier it is for them to do that, the better. And the easier it is to read, the easier it is to change. \u003C/p>\n\u003C!-- /wp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\u003Cp>Sometimes tech debt comes from good-faith technical decisions that are outdated or based on previous versions of software. Updating those may require a \u003Ca href=\"https://softwareengineering.stackexchange.com/questions/6268/when-is-a-big-rewrite-the-answer/36756#36756\">bigger rewrite\u003C/a> than a simple refactoring. In \u003Ca href=\"https://softwareengineering.stackexchange.com/a/6303\">his answer\u003C/a>, Michael Meadows identifies a few items that can mean a rewrite is needed, including:\u003C/p>\n\u003C!-- /wp:paragraph -->\n\n\u003C!-- wp:list -->\n\u003Cul>\u003C!-- wp:list-item -->\n\u003Cli>The software in question has been deprecated or will be deprecated soon, or there is a better piece available. \u003C/li>\n\u003C!-- /wp:list-item -->\n\n\u003C!-- wp:list-item -->\n\u003Cli>You can’t fully automate deployment. \u003C/li>\n\u003C!-- /wp:list-item -->\n\n\u003C!-- wp:list-item -->\n\u003Cli>Testing takes too long, can’t be automated, or can’t cover important features.\u003C/li>\n\u003C!-- /wp:list-item -->\u003C/ul>\n\u003C!-- /wp:list -->\n\n\u003C!-- wp:paragraph -->\n\u003Cp>While the DORA metrics can help, you can also compare your current velocity to your best story point to effort sprint, which is often near the beginning of a piece of software’s lifespan. \u003Ca href=\"https://stackoverflow.com/a/1791569\">Doug Knesek wrote\u003C/a> that this can be considered the interest paid on technical debt. As debt grows, the payments to service the interest become increasingly onerous, and overtime may outstrip the principal. In a software organization, as tech debt grows, so does the time and effort that goes into paying down this interest. The slower your overall development velocity, the fewer new features get shipped to customers. \u003C/p>\n\u003C!-- /wp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\u003Cp>Of course, the costs in tech debt don’t just apply to code. They also affect the humans who write the code. \u003C/p>\n\u003C!-- /wp:paragraph -->\n\n\u003C!-- wp:heading -->\n\u003Ch2 class=\"wp-block-heading\" id=\"h-the-human-cost\">The human cost\u003C/h2>\n\u003C!-- /wp:heading -->\n\n\u003C!-- wp:paragraph -->\n\u003Cp>Software companies (and these days, almost \u003Ca href=\"https://www.satellitetoday.com/innovation/2019/02/26/microsoft-ceo-every-company-is-now-a-software-company/\">every company is a software company\u003C/a>) have been competing fiercely for top technical talent. Finding and onboarding a new hire can cost up to \u003Ca href=\"https://www.huffpost.com/entry/high-turnover-costs-way-more-than-you-think_b_9197238\">six to nine months of their salary\u003C/a>. It’s no wonder so many companies are focusing on developer experience: hiring a new dev is expensive. Technical debt affects those technical professionals at every step within a role, starting from the moment they sit down at their new keyboards. \u003C/p>\n\u003C!-- /wp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\u003Cp>Onboarding is the first and most important part of an employee’s experience at a company. It can take around \u003Ca href=\"https://humanpanel.com/onboarding-and-new-hire-time-to-productivity/\">one to two months\u003C/a> to get a new hire up to speed. A bad onboarding experience can sour a developer on a company; 20% of developers leave within 45 days of taking a role. So a smooth onboarding experience can mean the difference between a happy software engineer and another job posting. \u003C/p>\n\u003C!-- /wp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\u003Cp>The amount of time that it takes to \u003Ca href=\"https://resources.stackoverflow.co/topic/thought-leadership/best-practices-for-knowledge-sharing\">onboard a dev\u003C/a> will depend both on the documentation and processes that you have in place and the complexity and readability of your codebase. That \u003Ca href=\"https://martinfowler.com/articles/bottlenecks-of-scaleups/01-tech-debt.html\">lack of documentation for processes is a form of debt\u003C/a> itself. You know you’ll need it at some point, but in order to get going fast, you skipped it. Any new hires are going to have to ask around and take up senior engineering time in order to onboard themselves. \u003C/p>\n\u003C!-- /wp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\u003Cp>Once the developer is onboard and ready to commit code, they may find themselves frustrated by the mountains of janky spaghetti code they face. I’ve heard of friends baffled by idiosyncratic coding methods that make code difficult to parse, like concatenating all parameters into a single variable and passing it to a function. That becomes \u003Ca href=\"https://daedtech.com/human-cost-tech-debt/\">frustrating and demoralizing\u003C/a> as you continually spend time just trying to figure out what’s going on with this code.\u003C/p>\n\u003C!-- /wp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\u003Cp>Obviously, tech debt is not just code that needs refactoring to align with best practices—outdated or inefficient tools and dependencies can drive a dev to despair. Imagine writing Java code for an older version and finding a confusing workaround. “I thought that was fixed in version Y?” “Yeah, but we’re on version X still. The upgrade hasn’t been approved.” \u003C/p>\n\u003C!-- /wp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\u003Cp>When you’re not using the best tools for the job, your skills can atrophy. In \u003Ca href=\"https://stackoverflow.blog/2022/12/15/job-insights-from-the-tech-community-the-latest-survey-results-from-stack-overflow-knows/\">our survey of why developers choose to stay at or leave a job\u003C/a>, we found that 35-40% (depending on region) of people said that they were looking for new jobs to use new tech, and another 35-40% cited growth opportunities. \u003C/p>\n\u003C!-- /wp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\u003Cp>These all add up to a resignation. If your company suffers from frequent churn or loses people within the first year, then that’s an opportunity to see if technical debt is the problem. Make sure you have exit interviews and track all that data they give you. If those debts are costing you good employees, that’s a good reason to prioritize them on the next sprint. \u003C/p>\n\u003C!-- /wp:paragraph -->\n\n\u003C!-- wp:heading -->\n\u003Ch2 class=\"wp-block-heading\" id=\"h-count-your-debts\">Count your debts\u003C/h2>\n\u003C!-- /wp:heading -->\n\n\u003C!-- wp:paragraph -->\n\u003Cp>Technical debt thrived as a metaphor because it translated engineering concerns to business language. If you’re looking to pay down those debts, then you need to make that case in the business’s language. What’s the cost? How does it hurt or benefit? With any business decision, it’s \u003Ca href=\"https://softwareengineering.stackexchange.com/questions/14596/where-do-you-draw-the-line-between-quantity-and-quality?noredirect=1&lq=1\">always a tradeoff\u003C/a>. \u003C/p>\n\u003C!-- /wp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\u003Cp>Like financial debts, unpaid technical debts can haunt you as you spend more and more of your time addressing its effects. Bad code begets bad code, and the interest accrues to the principal. You’ll need to pay your debts sometime, but the better case you can make for taking care of them now, the more breathing room you’ll have to write business logic code that you can be proud of. \u003C/p>\n\u003C!-- /wp:paragraph -->","html","2023-08-24T14:00:00.000Z",{"current":659},"if-you-want-to-address-tech-debt-quantify-it-first",[661,669,674,681],{"_createdAt":662,"_id":663,"_rev":664,"_type":665,"_updatedAt":662,"slug":666,"title":668},"2023-05-23T16:43:21Z","wp-tagcat-code-for-a-living","9HpbCsT2tq0xwozQfkc4ih","blogTag",{"current":667},"code-for-a-living","Code for a Living",{"_createdAt":662,"_id":670,"_rev":664,"_type":665,"_updatedAt":662,"slug":671,"title":673},"wp-tagcat-tech-debt",{"current":672},"tech-debt","tech debt",{"_createdAt":662,"_id":675,"_rev":676,"_type":665,"_updatedAt":677,"slug":678,"title":680},"wp-tagcat-productivity","ZP7627ZkmfDRGke9Ig9IwB","2024-01-23T15:01:58Z",{"current":679},"productivity","Productivity",{"_createdAt":682,"_id":683,"_rev":684,"_type":665,"_updatedAt":685,"description":686,"slug":695,"title":697},"2024-09-12T10:47:51Z","1dc92c86-0099-46d4-ba5b-41e5697d43c0","6PK1Gm0YEnAcvtXN32g6bL","2024-09-17T14:27:36Z",[687],{"_key":688,"_type":64,"children":689,"markDefs":694,"style":84},"1ddad854068f",[690],{"_key":691,"_type":68,"marks":692,"text":693},"312bffce4f510",[],"Articles on business, SaaS, and the software that powers organizations.",[],{"_type":10,"current":696},"business","Business Hub","If you want to address tech debt, quantify it first",[700,706,712,718],{"_id":701,"publishedAt":702,"slug":703,"sponsored":12,"title":705},"370eca08-3da8-4a13-b71e-5ab04e7d1f8b","2025-08-28T16:00:00.000Z",{"_type":10,"current":704},"moving-the-public-stack-overflow-sites-to-the-cloud-part-1","Moving the public Stack Overflow sites to the cloud: Part 1",{"_id":707,"publishedAt":708,"slug":709,"sponsored":648,"title":711},"e10457b6-a9f6-4aa9-90f2-d9e04eb77b7c","2025-08-27T04:40:00.000Z",{"_type":10,"current":710},"from-punch-cards-to-prompts-a-history-of-how-software-got-better","From punch cards to prompts: a history of how software got better",{"_id":713,"publishedAt":714,"slug":715,"sponsored":12,"title":717},"65472515-0b62-40d1-8b79-a62bdd2f508a","2025-08-25T16:00:00.000Z",{"_type":10,"current":716},"making-continuous-learning-work-at-work","Making continuous learning work at work",{"_id":719,"publishedAt":720,"slug":721,"sponsored":12,"title":723},"1b0bdf8c-5558-4631-80ca-40cb8e54b571","2025-08-21T14:00:25.054Z",{"_type":10,"current":722},"research-roadmap-update-august-2025","Research roadmap update, August 2025",{"count":725,"lastTimestamp":726},7,"2024-01-12T16:31:07Z",["Reactive",728],{"$sarticleModal":729},false,["Set"],["ShallowReactive",732],{"sanity-PoQUnuhCipGD-R77pkmLPxQaHUE4DTOCcKwttJ0vc3Y":-1,"sanity-comment-wp-post-22570-1756488019051":-1},"/2023/08/24/if-you-want-to-address-tech-debt-quantify-it-first/?cb=1"]