Many organizations spend significant parts of their development budgets in parts of the code that are more expensive to extend and maintain than they have to be.
That’s why a behavioral code analysis tool like CodeScene identifies and prioritizes technical debt based on how you, as an organization, works with the code. This is a powerful first step, but like all code analysis tools, a crucial component is missing: your context.
Context matters. What features do you plan to implement next and what parts of the system will they affect? How much can you spend on re-work and improvements? And when is a piece of code good enough? That’s why CodeScene introduces the concept of augmented code analysis that lets you specify contextual information, which is then processed as part of the analysis. This means that the analyses are aware of your goals and can measure the progress towards them. Let’s see how this technique lets us manage technical debt.
Managing Technical Debt Is About Trade-Offs
There’s always a trade-off between improving existing code versus adding new features. Improvements cost time and money, and when we refactor or even re-design a piece of code we are placing a bet that our investment will pay-off in the future. As such, larger and more significant improvements have to be balanced against the short-term goals of the product. Maybe it’s just more important to get that critical feature out than to clean-up those nested
if-statements that are so hard to understand?
Over the years I’ve seen several products canceled. Not due to lack of code quality, but due to lack of delivery. Fascinatingly enough, there’s a lot of horrendous code out there that keeps making money that funds entire organizations, sometimes for decades. That doesn’t mean we should accept code with severe quality issues. It just means that we need to prioritize what and when we invest in larger improvements, and we need to do it based on data that can assess the likely return on investment.
CodeScene provides those priorities through its hotspot analysis. A hotspot is code that the developers have to work with frequently. If that code is hard to understand and extend, your development is likely to be more expensive than it has to. Let’s look at an example from the Linux Kernel: