Feature Focus: Enhanced Technical Debt Estimates
An Updated Technical Debt Calculation
Initially introduced in 1992 by Ward Cunningham, Technical Debt is a concept in software development that reflects the implied cost of additional rework caused by choosing an easy (limited) solution now instead of using a better approach that would take longer. In the domain of static code analysis tools, Technical Debt is often defined as the total amount of effort to remediate all occurrences in a code base which do not comply with coding best practices. In other words, Technical Debt could correspond to the inadvertent debt (as opposed to deliberate debt), as defined in Martin Fowler’s Technical Debt quadrants.
Historically in CAST Highlight, this indicator was calculated based on the Software Health scores of a given application, its rank in the benchmark, and the technical debt statistics derived from the CAST Appmarq database at the technology level. While this approach was a good start to understand the density of issues in the code and the possible cost to fix them, this approach has some limitations:
– The indicator was relying on metrics external to CAST Highlight
– It was expressed in dollars, preventing users to better value the required effort to reduce the debt
– It was not easily actionable as no detail was provided on health factors or application files contributing the most to technical debt
– The calculation was not customizable
– It was overly complex
As Technical Debt is a concept that is popular in many use cases that Software Intelligence supports (Application Portfolio Rationalization, Software Health Assessment, Tech Due Diligence, etc.), we wanted to enhance this indicator by changing the way it is designed and calculated to provide users with more accurate, actionable, and understandable insights.
How Technical Debt estimates are now calculated
The product team has re-designed the calculation method to address the limitations listed above. Technical Debt estimates now exclusively rely on CAST Highlight’s code insights and their respective number of occurrences found during the code scan:
– Each code insight for each technology (where Software Health is supported) has its own effort estimate expressed in minutes, hours, or person-days. This effort is the estimated time required to fix one occurrence of the corresponding code insight.
– When an application is onboarded, CAST Highlight multiplies occurrences found for each code insight by the effort estimate.
– The total Technical Debt estimate equals the sum of all code insight effort estimates. The Technical Debt raw value you can get from the API is expressed in minutes, the dashboards eventually aggregate in hours or person days (8 hours per day).
It’s that simple…
We’ve further enhanced the new Technical Debt feature with an out-of-the-box effort template that has been calibrated by the product team who implemented CAST Highlight’s code insights. However, since you may have different views on how long it takes to remediate specific code insights, effort estimates are entirely customizable:
– As a Portfolio Manager, from the MANAGE PORTFOLIO menu, go to Manage Technical Debt Effort.
– The 700+ code insights are listed, grouped by technology.
– From here, you can edit the Effort value (necessary time to fix a code insight) and Effort unit (minute, hour, person-day).
– As soon as a code insight effort has been customized, a blue “CUSTOMIZED” pill appears.
– Once your edits are done, you can save them by clicking on the “Save Definition” button at the bottom-right of the screen.
– To reflect these changes across your application portfolio, click on the “Recompute” button at the top-right of the screen.
– Depending on the number of applications in your portfolio, it can take some time. A progress bar will indicate where CAST Highlight is in the recalculation process.
Building for the future
This new foundation design for Technical Debt will enable exciting new features to be developed in the future as CAST Highlight now has a fine-grained estimation model based on code insights. Below are a few examples that we have in mind:
– Technical debt visualization by health factor: Is Technical Debt of my application primarily coming from Software Agility or Software Resiliency?
– File-level Technical Debt visualization: As CAST Highlight health analysis happens at the file level, it will be possible to analyze the top files contributing to an app’s Technical Debt.
– Monetization: as the Technical Debt foundation measure is expressed in a universal unit (time), it enables monetization features that could fit more use cases: Hourly labor cost can be different across geographies and technology profiles. Currency is an extra layer that could help you make even more informed decisions on possible Technical Debt remediation strategies.
We hope you enjoy the enhanced accuracy, flexibility, and insights provided by the new Technical Debt calculation in CAST Highlight and know that we always welcome feedback. Also note that there is no specific action needed by users to enable this enhanced Technical Debt indicator for portfolios. CAST Highlight will automatically calculate Technical Debt estimates, even on previous scan results.