×

IT organizations that regularly repay technical debt by prioritizing code quality and revising software assets tend to spend less on application maintenance, better positioning them to invest in new business capabilities and innovation.

Ward Cunningham, the programmer who developed the first wiki, coined the term “technical debt” to describe the trade-offs associated with releasing “immature” code—code that works, but isn’t quite right. “Shipping first-time code is like going into debt,” he wrote in 1992. “A little debt speeds development so long as it is paid back promptly with a rewrite.”

In other words, accumulating some technical debt can keep software development teams on schedule. But too much technical debt can lead to serious problems downstream: business disruption from system outages, protracted software maintenance cycles, increased application maintenance costs, and decreased IT efficiency.

Technical debt often stems from making poor short-term/long-term trade-offs. It can accrue when architects pick products or approaches without fully considering the ramifications of their choices. And it can come from programmers taking shortcuts or using unsophisticated development techniques, like cutting and pasting blocks of code without thinking through the longer term consequences of reuse. Each shortcut causes technical debt to accumulate. In that sense, technical debt is comparable to high-interest, short-term borrowing: When organizations don’t pay off the debt promptly, compounding kicks in. And, like financial debt, IT organizations that don’t pay back technical debt may end up having to allocate the bulk of their budgets to interest—i.e., system maintenance—rather than to developing software that supports new business opportunities. Technical debt can further jeopardize business operations by undermining the stability and reliability of systems over time.

The concept of technical debt is gaining renewed interest among CIOs as a way to focus technical teams on software quality, increase transparency into IT costs and operations, enhance the business’s understanding of IT delivery, and help the C-suite prioritize IT projects. Organizations that regularly repay technical debt by consolidating and revising software will likely be better positioned to undertake investments in innovation.

Where to Start?

For most IT organizations, technical debt comes with the territory. It’s an unavoidable consequence of decades of technology investment. The big question for CIOs is how to manage this liability. Here are some steps for getting started:

Assess the status of debt for significant investments. To calculate technical debt, CIOs need visibility into the quality of code for legacy systems and new software development projects. Only with both sets of information can CIOs make the trade-offs necessary to manage technical debt effectively. New tools for scanning and assessing software assets can help CIOs gauge the quality of their software and determine what it would cost to eliminate the inevitable debt. A study from software company CAST suggests that an average of $3.61 of technical debt exists per line of code, or an average of more than $1 million per system. CIOs can prioritize technical debt remediation efforts by evaluating the importance of each system and understanding whether the technical debt has to be addressed, and in what timeframe.

Determine the extent to which future investments are dependent on legacy systems. Legacy systems with high rates of technical debt may hamper development and operation of new systems. With legacy systems, debt can come from outdated architectural decisions, in addition to code quality issues. Since many of the innovative new technologies that companies are deploying require access to legacy functions, CIOs need to understand the impact that flaws in legacy software have on their organizations’ ability to deliver and support new capabilities. Questions to consider include whether the legacy architecture can scale and support new initiatives, and whether launching a legacy modernization effort may help IT get ahead of imminent business demand.

Consider the talent required to remediate technical debt. You may not have the resources to cost-effectively update some aging systems. IT professionals with knowledge of legacy programming languages like Cobol, Natural, and Assembler are in increasingly short supply. Therefore, talent should be factored into your technical debt analysis. Think of talent as a multiplier on top of the raw technical debt calculation, and use it to define priorities and timelines.

Hold developers and architects accountable. Consider rating and rewarding developers and architects on the quality of their code and decisions. In some cases, fewer skilled developers may be better than volumes of mediocre ones whose work may require downstream debt reversal. Regularly run code complexity reviews and technical debt assessments, and share the results across the team. Documenting and communicating specific, identified issues can help the team improve, and negative debt trends can signal that a project is headed in the wrong direction or encountering unexpected complexity.

Spread the wealth (and the burden). Participate in existing communities dedicated to identifying and addressing technical debt. Institute peer code reviews for informal spot checks. Formal quality assessments performed by seasoned architects can unearth issues that would go undetected with standard quality assurance (QA) processes. Learn from open source communities, where quality is continuously refined by the extended pool of developers poring over each other’s code.¹

Determine your debt repayment philosophy. Companies have different tolerances for technical debt across their software assets. Debt is not inherently bad; it can fuel new investments and accelerate product launches. But left unchecked, it can be crippling. The appropriate amount of technical debt varies for each organization, but the decision to accumulate it should be conscious and transparent.

*****

Without a clear view of the real cost of technical debt, CIOs lack the information they need to make effective decisions about new initiatives and investments. While it’s important not to get obsessed with technical debt, it’s also critical to understand and plan for it. Every new project comes with at least some technical debt, so it should be incorporated into project management processes and portfolio reporting. Paying down technical debt is a long-term investment, but if left unchecked it can bankrupt a CIO’s ability to build for the future.

—by Scott Buchholz, director, Deloitte Consulting LLP and David Sisk, director, Deloitte Consulting LLP