How much does it cost to maintain code your company has created? Does it matter? For some companies, these maintenance costs, known as technical debt, can eventually overtake innovation costs and can harm the enterprise, according to analysts.
Jim Highsmith, executive consultant for ThoughtWorks, defines quality of code in two ways: First, that the program does what it’s been created to do; and second, that the adaptability of the product can change over time. Adaptability, he said, is what “reduces tech debt in the long term.”
Highsmith said that code becomes unmaintainable as companies try to continually deliver new features without going back and adjusting existing lines of code. Gradually, then more rapidly, this causes the lines of code to degrade over time, he said.
Bill Curtis, senior vice president and chief scientist at CAST Software (a provider of software that breaks down code line by line and measures technical debt per line of code), said that the adjustments are natural in the development process, particularly in an iterative one.
“In fairly short cycles [like in the agile world, developers] don’t have time to go back and change elements of the code, or fix things they wish they had done differently. It’s not a matter of the code working properly; it’s more a matter of easier maintenance,” Curtis said.
Maintenance is a regular part of owning code, but Highsmith said some companies “spend 50–75% of their resources” on it—most of which is caused by high technical debt.
High tech debt impacts time to market and market capitalization. This causes an inability to predict how long a new release will take, and this ultimately causes an inability to predict earnings, he said.
Israel Gat, practice director for agile project and product management at the Cutter Consortium IT advisory firm, said in his report, entitled “Revolution in Software: Using Technical Debt Techniques to Govern the Software Development Process,” that enterprise companies “borrow a little time through a design or coding shortcut with the intent of paying it back as soon as possible.” This, he said, does not always happen, though.
Gartner’s August 2010 “Measure and Manage Your IT Debt,” by analyst Andy Kyte, attributes the issue to budget cuts.
“When budgets are tight, maintenance gets cut,” he wrote in the report. “After a decade of tight budgets, the scale of the maintenance backlog has created systemic risk, particularly for large organizations.”
Highsmith said agile development processes have helped manage this problem due to their focus on “quality code,” and that it helps point out issues with the code, something Beth Yates, requirements manager at KSS Fuels, agreed with.
She said that the ALM solution used by KSS, TechExcel’s DevSuite, doesn’t make the code itself cleaner, but it does streamline the processes. KSS provides pricing software, analytics and consulting services to fuel retailers and wholesalers in the oil and gas, convenience store, and retail industries.
“Our tools define processes and explain where and why code has been changed,” Yates said. “They also allow us to find and trace problems to prevent surprises after deployment.”
She added that the ALM tool cannot be held responsible for maintenance issues—and ultimately technical debt—but that it allows the company to perform maintenance tasks more quickly.
“Our older products were presumably written in a longer lead time, but the tools we have now make maintenance easier, new developers can take an element of code and pick it up quickly,” Yates said.
Highsmith said management “needs to determine how to allocate funds” to maintain the code, because “once tech debt gets bad enough, it will get worse really quickly, and then options are limited.”
Tools for determining how much debt a company has (in lines of code) are in their infancy, according to Highsmith. He said the fact that these tools exist is a positive step and signifies a real change in the industry, one that is growing more sensitive to the problems posed by technical debt.