What the heck is technical debt? Technical debt creates overhead and friction on an organization and stifles innovation. This article provides some simple ways to identify, measure and reduce technical debt.
What Is Technical Debt?
Technical debt is not a direct cost in financial terms, but rather a concept. Simply, technical debt creates overhead as a result of choosing the easier option in response to technology choices.
Let’s use the budget to invest in the shiny, new project this year and upgrade the database platform to the supported version, in the future, when we have time, later.
CEO, Delays Inc.
Technical debt is like credit card debt. It has a similar stifling affect on growth, much like the effect financial interest has on the prosperity of an individual or family. Without a plan for prevention, over time, technical debt will accumulate and grow, and prosperity will decline.
Identifying Technical Debt
Does your organization have technical debt? Unless you haven’t started to operate yet, the answer is likely yes.
User feedback is a great way to confirm if you have technical debt. Technical debt will take the form of frustration in the voice of your customers & business partners. If you hear things like “why do these feature requests take so too long?” or “even with significant investment, our product isn’t on par with the competition”, you likely are suffering from technical debt.
Measuring Technical Debt
What is your application or organization’s tech debt score? Let’s reconsider the metaphor comparing technical debt to personal financial credit card debt. Through the credit bureaus Experian, Equifax and Transunion, individuals are scored for credit worthiness based on accumulated debt and behaviors around that debt. Credit scores range from 400 to 800, with the higher number signaling better debt management behaviors. Lending organizations see this number as a key performance indicator and predictor of future behaviors, and subsequently use the credit score to make lending decisions. Individuals with higher scores get better rates, and can subsequently barrow money at a lower cost.
Tech Debt Score, by Smart Brains, is a simple scoring model to measure technical debt management behaviors. By way of introduction, Smart Brains is an open source company that runs a pretty tight ship when it comes to managing their technical debt (see their also fictitious 713 score below as definitive proof). Tech Debt Score provides a very simple and subjective way to measure your organization’s tech debt management worthiness across an ensemble of dimensions.
The Tech Debt Score model considers 8 dimensions to produce a value between 0-800. A higher score and the larger radar plot indicates maturity in the area of technical debt management. A lower score and smaller radar plot indicates lower maturity. The model considers the following dimensions:
- Coding practices, style & formatting
- Modularity & coupling
- Test coverage & automated testing
- Continuous integration & delivery
- Lifecycle
- Documentation
- Homogeneity of tech stack
- Complexity
Tech Debt Score can help you to measure your organization’s technical debt and create focus for areas to improve.
Reducing Technical Debt
In order to decrease the overhead and friction that technical debt imposes upon an organization, the debt itself must be reduced. To do this, your strategy should include two key aspects.
The best way to get out of a hole is to stop digging.
A Smart Man, Once
Technical Debt Prevention
Policies, standards and procedures can help to prevent the accumulation of technical debt. However, before you construct a single policy or standard, ensure you have clearly defined and described your strategy. Strategies are simple. Conversely, policies, standards and procedures are complex. This does not suggest that strategies aren’t thoughtful – they are. Your technical debt prevention strategy should be comprehensive, simple and easy to understand, and to do this requires thought. Here is an example of a key aspect of a technical debt prevention strategy:
All code changes to any development, test or production system will be made via certified automated code delivery services, or a formal exception will be required.
Simple. For the lawyers in the audience, the terms certified and formal exception may jump out at you. You might be asking, what defines these terms? Your organization’s policies, standards and procedures will define those specifics. Not your strategy. Again, your strategy should be simple and well understood. Tactics are complex. Start with your strategy, and build from there.
Technical Debt Reduction
There isn’t a single answer or solution for how to reduce technical debt. However, similar to personal financial management and credit card debt, there are best practices that you can follow. These best practices are based on consistency, maturity and austerity.
What is the quickest to solve? Start with your Tech Debt Score and pick a single dimension that you think you can improve upon within your organization most easily. This recommendation is based on an idea that is similar to that of compounding interest. Reinvest the time savings created in further debt reduction activities.
What are the organization’s priorities? If you don’t already have a clear understanding of your organization’s priorities, you should work to create one. A clear and consistent understanding of your organizations priorities, and how they align with or are impacted by technical debt can create visibility, initiatives and win-win opportunities.
Are you aligned with your tech update roadmap? Do you know what “great looks like” and what aspects of your roadmap can you align to technical debt reduction? One way to do this is to include modernization investment into your lifecycle & asset management strategy. Align your ideal future state with technical debt reduction and measure improvement as you go.
What can be refactored? Create the prototype you want the rest of the organization to emulate. There are many frameworks for modernization, like the 5R framework from Pivotal as an example. In this specific tactic, this is a reference to refactoring. Pick a high value service or application and refactor it, and then market it across the entire organization as the gold standard. Engineers love to follow best practices – tell them what is best.