When a corporation acquires a company, it naturally looks to its balance sheet to get a sense of its value. Financial debt, appearing as loans or liabilities that must be eventually serviced, is a comparatively straightforward component to analyze in an acquisition.
But there is another type of debt that’s increasingly important in software engineering that is not formally accounted for. Technical debt manifests as brittle code, outdated architectures and systems that aren’t able to adapt to emerging technologies and trends.
In both cases, acquirers have choices to make, often involving significant trade-offs. They could pay down the “principal” by repaying loans, or in the example of technical debt, refactoring systems. They could restructure through renegotiating financial terms or incremental tech stack modernization. Or they can simply accept the burden of debt and deal with the consequences of reduced financial or technical agility.
Just like financial debt, technical debt has a way of compounding. Each shortcut taken today makes future work slower, riskier and more expensive, creating pressure for even more shortcuts, leading to more messiness, more delays—a vicious circle.
As codebases become harder to work with, it takes longer to add new features, and engineers avoid making updates for fear of breaking something. New code is layered on top of old code, with unpredictable side effects. Complexity compounds. Bugs proliferate, leading to potential security vulnerabilities. Developers begin to feel like they’re spending all their time putting out fires and building workarounds, when they would much rather build something new and exciting rather than babysitting old systems.
Developers churn. Employees who are more familiar with the older systems leave, resulting in a loss of institutional knowledge. Onboarding times expand. Documentation suffers, leading to duplicated work and quick fixes that paper over bigger problems.
IBM Institute for Business Value research shows that enterprises that fully account for the cost of addressing technical debt in their AI business cases project 29% higher ROI than those that don’t. And the logic flows in the other direction: ignoring technical debt results in an ROI decline of 18% to 29%. It’s an interesting time for IT, because AI coding tools have taken the field by storm, for better and for worse. The same technology that can exacerbate technical debt is a powerful tool for resolving it.
Get curated insights on the most important—and intriguing—AI news. Subscribe to our weekly Think newsletter. See the IBM Privacy Statement.
AI can amplify how quickly the impact of technical debt accumulates because AI sits on top of the tech stack. For example, while large language models (LLMs) make it easy to generate large volumes of code quickly and scaffold features without deep understanding, coding standards and code review can fall behind.
Prompt templates, AI orchestration frameworks, retrieval pipelines and agent loops are layered on top of existing systems but can obscure what a system is actually doing, making debugging harder. So when something breaks, it’s not always obvious what broke and why. Failures can be subtle and lead to unanticipated behaviors downstream.
AI introduces new categories of debt as well, like brittle prompts that only work in specific contexts, low-quality retrieval data, and model drift. And because models are changing all the time, this churn can result in breakdowns across the AI lifecycle due to “compatibility debt.” Even nimble startups can begin accumulating new technical debt from day one, due to how quickly the technology is moving.
AI code generation and the “vibe coding” movement are often associated with a “the model will handle it” mentality, deferring complexity to the LLM. A lack of explicit logic, compared to traditional coding, can lead to under-designed systems and unpredictable behaviors.
Technical debt reduction is predicated on the ability to measure debt. But measuring technical debt can be tricky, although one can measure its effects, like slower development cycles, frustrated development teams and delayed deliveries.
Delivery metrics capture how efficiently a team can ship and maintain software. Lead times and change failure rates suggest problems with tech debt.
There are also code-level indicators which offer a closer view of the underlying debt, such as code quality metrics. Cyclomatic complexity, code duplication and the presence of “code smells” help quantify how hard it is to make changes to a codebase, directly impacting its maintainability.
But scrutinizing code is not enough, as it often fails to capture how technical debt results in unwanted outcomes and extensive rework. Quantifying bug volumes, product defects, onboarding times and other developer pain points can help point to a deeper root cause in IT. How much time do software developers spend firefighting as opposed to shipping?
Historically, managing technical debt has been considered an IT chore, something done in the background out of necessity, often overlooked by key stakeholders. But in the era of AI, tech debt management becomes an existential concern, significant enough to attract the attention of the entire C-suite. According to IBV research, 81% of executives say technical debt is already constraining AI success. 69% believe it will render some initiatives financially untenable.
Although AI automation can make tech debt worse, AI-powered code assistance promises a powerful solution. Tech debt compounds in IT, and focusing investments where this compounding occurs most is a smart approach.
Code refactoring alters the internal structure of software code without modifying its external behavior or impacting its functions. Instead of performing manual cleanup of old code to enforce consistent patterns and simplify overly complex functions, practitioners can run targeted refactors across entire repos and modernize patterns incrementally, turning a big project into a continuous debt management process, making routine maintenance more scalable.
One of the biggest sources of debt is lack of context. AI code documentation tools can generate documentation for legacy systems and explain what functions actually do. They can de-duplicate redundant code and suggest consolidation opportunities. This reduces onboarding time and streamlines the development process, resolving the fear of breaking something when touching old code.
Automated testing can help developers quickly find and eliminate hidden bugs and safely modify legacy code. This can accelerate progress within each sprint and reduce the bug backlog through efficient bug fixes, preventing costly regressions. Often the real blocker isn’t bad code, but a lack of a safe environment to change it. AI can read and understand code semantics, infer the intended behavior of the code or a specific module, and generate meaningful test cases based on that understanding. Team members can ask AI to generate tests that cover edge cases and reflect current behavior, run these tests to establish a baseline, then refactor the code and re-test.
AI can analyze systems at a high level, identifying coupled components and dependencies, and suggesting upgrade paths that inform a strategic roadmap that takes into account how linked components operate. This is especially useful in large-scale migrations, which can be otherwise risky. AI helps by translating code between frameworks and languages, updating APIs across many files and maintaining consistency during transitions.
According to the IBV study, AI’s share of IT spending is projected to rise from roughly 11% to over 18%. That growth will require prioritizing debt reduction, otherwise AI investment risks being undermined by costs that don’t appear on the balance sheet.
Technical debt management is often framed as an engineering problem, but it’s a cultural one too. It’s just as much about structuring teams and aligning incentives as it is about cleaning up old code.
In many organizations, engineering teams are implicitly rewarded for shipping new features quickly, and long-term maintainability is deprioritized. Roadmaps emphasize visible outcomes for end users, and efforts to reduce future debt often fail to compete with this incentive. Over time, this creates an imbalance that rewards developers for expanding technical debt rather than paying it down.
Siloed teams and fragmented workflows can exacerbate the problem. When ownership of a system is distributed across many stakeholders, no single team feels responsible for its overall health, and decisions made to benefit one team may actually harm another team. Short-term decisions made by one team can have unforeseen and lasting effects. With no clear owner, no individual team is accountable to maintain and optimize a system over time. Fresh code quickly becomes “legacy code.”
Beyond organizational change to address ownership and cooperation between teams, turning the project of technical debt reduction into a continuous process is a necessary approach. Tight project management is key for identifying technical debt and addressing it with regular code reviews.
AI can help systematize code analysis by lowering the cost of routine maintenance tasks, allowing teams to address technical debt incrementally rather than deferring improvements to a future that never seems to arrive, ultimately leading to high-quality code. Over time, these gains compound, resulting in higher software quality and better business outcomes.
Accelerate software delivery with Bob, your AI partner for secure, intent-aware development.
Optimize software development efforts with trusted AI-driven tools that minimize time spent on writing code, debugging, code refactoring or code completion and make more room for innovation.
Reinvent critical workflows and operations by adding AI to maximize experiences, real-time decision-making and business value.