Every growing company has it. The login system that works but that no one wants to touch. The spreadsheet that became a critical business process. The integration written by a contractor in 2019 that's now the only way customer data gets into the CRM. The codebase where adding a new feature takes three times longer than it should because of decisions made two years ago under a deadline.

This is technical debt — and most companies carry far more of it than they realize. The term comes from software development, where Ward Cunningham coined it in 1992 to describe the implied cost of shortcuts taken in code. But the concept applies just as cleanly to infrastructure, integrations, vendor contracts, and process automation. Any place where a "good enough for now" decision created ongoing maintenance overhead is technical debt.

The problem isn't that technical debt exists. Every company that's moved fast has it. The problem is when leaders can't quantify it — and therefore can't make rational decisions about when to pay it down versus when to keep building on top of it. This article is about making that quantification real.

42%
The share of engineering capacity consumed by technical debt and related rework at the average software company, according to McKinsey research. For companies that haven't done a deliberate remediation effort, the figure often runs higher. Every point of that capacity is engineering time that isn't shipping new product. (Source: McKinsey Digital, 2023)
Pattern 01

The "it still works" trap

The most insidious form of technical debt is the kind that isn't visibly broken. A legacy authentication system processes logins reliably — it's just not compatible with modern SSO standards, so onboarding enterprise customers requires a manual workaround. A database schema from 2020 still stores everything — it just takes three joins and a data transformation to answer any question about customer revenue. These systems "work" in the narrow sense that they don't throw errors. But they extract a cost in every team interaction that touches them: slower development, more fragile deployments, and engineers who have to hold institutional knowledge in their heads because the system can't be reasoned about from its structure alone. The cost is real; it just doesn't appear on any invoice.

Pattern 02

Dependency accumulation and version lag

Software libraries, frameworks, and platforms release updates constantly. Staying current is maintenance work — it takes time and sometimes breaks things that were working. So most companies fall behind, then further behind, until upgrading a major dependency becomes a multi-week project instead of a routine task. A company running Node.js 14 (end of life since April 2023) on a production application isn't just carrying technical debt — they're carrying active security risk. A SaaS product built on a version of its primary framework that's two major versions behind will face an increasingly expensive upgrade path the longer the migration is deferred. Version lag compounds: each update you skip makes the eventual jump larger and more risky. The companies that stay current with minor friction never face the six-month framework migration crisis. The ones that don't, eventually do.

Pattern 03

Integration sprawl without a data layer

Growing companies accumulate integrations: CRM to billing, billing to support, support to analytics, analytics to marketing automation. Each integration is built point-to-point — a direct connection between two systems, usually by whoever needed it at the time, documented nowhere, owned by no one. After three years of this pattern, a mid-size company typically has 15–30 active integrations, at least a third of which are undocumented, several of which are held together by a script that runs on someone's laptop, and none of which have a clear owner who would be alerted if they broke. The cost shows up when a vendor updates their API, or when an employee who built an integration leaves, or when the company needs to migrate one of the connected systems and discovers that everything is entangled. The cleanup is expensive precisely because no one invested in the architecture that would have made it manageable.

Pattern 04

Workarounds that became permanent processes

A limitation in the billing system meant invoices had to be manually adjusted in a spreadsheet before sending. "Just for this quarter" became a standing weekly process. The person who built the spreadsheet left; the person who replaced them added more columns. Now two finance employees spend four hours per week on a process that exists entirely to compensate for a system limitation that could be resolved — but no one has connected the labor cost of the workaround to the cost of fixing the underlying problem. This pattern repeats across sales, operations, and customer success at nearly every company in the 30–200 employee range. The individual workarounds are small. In aggregate, they're significant labor costs and compounding sources of error risk.

Pattern 05

The "we'll refactor it later" codebase

Under deadline pressure, engineers make pragmatic choices: skip the abstraction, hardcode the value, duplicate the function rather than generalize it. Each of these decisions is individually defensible. Collectively, after 18 months, they produce a codebase where adding a new feature requires reading and understanding 2,000 lines of code to find the three places it needs to change — and testing it requires manually verifying a dozen downstream behaviors because there are no automated tests. This is the most direct form of technical debt, and its cost is purely velocity: how long does it take to ship something that should take a week? The answer, in a heavily indebted codebase, is often three to four times longer than in a clean one. That gap widens as the team grows, as the product matures, and as the debt compounds.

$85B
Estimated annual cost of technical debt to US companies, according to a Stripe developer survey. That figure captures only the direct productivity loss — not the downstream costs of delayed product launches, security incidents from unpatched systems, or engineering attrition from working in poor codebases. (Source: Stripe Developer Coefficient Report)

How to Actually Quantify Your Technical Debt

Most conversations about technical debt stay abstract: "we have a lot of it," "it's slowing us down," "we need to address it." That framing makes it impossible to prioritize. To make real decisions, you need to quantify it in three dimensions:

Velocity cost. What would a given feature take to build in a clean system versus your current one? If your engineers consistently estimate 2–3x longer than the work theoretically warrants, technical debt is the tax rate. Measure this by comparing estimated time to actual delivery across your last ten projects. The ratio is your debt multiplier.

Incident and maintenance cost. How much engineering time per week goes to maintaining existing systems versus building new ones? Break down your last quarter by category: feature work, bug fixes, infrastructure maintenance, incident response. If maintenance and incident response exceed 30% of total capacity, that's an operating cost that can be directly attributed to accumulated debt.

Opportunity cost. What features or capabilities did you not build because your team was occupied with debt-related work? This is harder to quantify but often the most significant figure. A company that could have shipped a self-serve onboarding flow six months earlier — and would have captured 20 additional enterprise trials in that window — has a technical debt cost that dwarfs any infrastructure line item.

The Three Triggers for Paying Down Technical Debt

Not all debt needs to be paid down immediately. The decision about when to invest in remediation versus continuing to build is a resource allocation question, not a moral one. Three conditions reliably signal that the debt balance is large enough to demand active attention:

Trigger 1: Hiring friction from engineering quality. Engineers talk to each other. When candidates ask to see your codebase and your engineers hesitate — or when you're losing engineers faster than you'd expect at your stage and exit interviews mention "code quality" or "technical environment" — the debt is costing you recruiting and retention. Junior-to-mid engineers are often the most sensitive to this: they're trying to develop skills, and a debt-heavy codebase makes it harder to do good work and easier to pick up bad habits.

Trigger 2: Feature velocity has visibly degraded. If your product team can describe a clear inflection point — "we used to ship a major feature every three weeks; now it's every eight" — and the team hasn't shrunk, that velocity loss is attributable to debt accumulation. When the slowdown has become visible to non-technical stakeholders, the debt balance is high enough to affect business outcomes directly.

Trigger 3: A growth event is coming. Enterprise sales requirements (SOC 2, SSO, audit logging), a significant fundraise, a team doubling, or a major new integration are all events that stress-test existing architecture. Trying to achieve SOC 2 compliance on a codebase with no access controls or audit logging is an order of magnitude harder than building those controls into a clean system. The best time to address technical debt is before the event that would make its absence critical — not during.

Find out how much technical debt is slowing your team down

The free StackScope Technology Health Assessment scores your engineering health alongside infrastructure, security, and cost efficiency — in 3 minutes.

Take the Free Assessment

What a Technical Debt Audit Actually Looks At

When StackScope conducts a technical debt assessment for a growing company, these are the areas that consistently surface the largest accumulated costs:

How to Prioritize Remediation When You Can't Do Everything

The correct prioritization framework for technical debt is return on investment, the same as any other capital allocation decision. For each debt item, estimate:

  1. Cost to remediate: Engineering weeks required to address the debt, at fully-loaded cost per week.
  2. Ongoing cost if not addressed: Weekly velocity tax + incident risk + opportunity cost, annualized.
  3. Payback period: Cost to remediate divided by annualized ongoing cost.

Debt items with payback periods under six months should move to the top of the roadmap regardless of how unglamorous the work is. Debt items with payback periods over three years probably stay on the list but don't compete with product work for near-term priority.

The items that most often have short payback periods: eliminating manual data-processing workarounds, upgrading end-of-life dependencies with known security issues, and consolidating redundant systems that require parallel maintenance. The items that most often have long payback periods: complete rewrites of functioning systems, architectural restructuring of low-traffic components, and documentation of stable code that rarely changes.

One practical rule: every quarter, dedicate 15–20% of engineering capacity to debt remediation. Not ad hoc cleanup that competes with features — scheduled, planned remediation that appears on the roadmap. Companies that do this consistently never accumulate the kind of structural debt that requires a multi-quarter remediation effort. Companies that don't eventually face one.

Where to Start If You're Not Sure Where You Stand

If your honest answer to "how much technical debt do we have?" is "I'm not sure" — that's the first thing to fix. You can't prioritize what you haven't mapped.

The fastest way to get a read is a structured technology audit that specifically covers engineering health alongside infrastructure, security, and cost efficiency. The picture it produces — which areas are accumulating debt fastest, what the velocity impact is, and where the highest-ROI remediation starts — gives you something to bring to the board and to use as a planning input for the next two to three quarters.

Our Technology Health Assessment covers engineering health and technical debt as one of its six scored categories — it takes 3 minutes and gives you a baseline. If you want a full picture, a StackScope consultation includes a detailed technical debt audit with a prioritized remediation roadmap and ROI estimates for each item.