Ready to Solve the Drag of Technical Debt? Kickstart Your Stability.
Kick that spending habit!
Join the DZone community and get the full member experience.Join For Free
Everyone has technical debt. Developers understand this fact of software life better than most and are acutely aware of how their daily efforts contribute to the issue. For example, any time a product team rushes new features to market or wants an incremental code change to make a customer happy, technical debt increases. The same holds when software frameworks and languages aren’t upgraded in a timely fashion because executives don’t want to slow down development.
You may also like: What Technical Debt Is and How to Calculate It
While the impact of technical debt may appear negligible at first, the long-term view is much more dismal. Technical debt builds up over time and slows down the creation and maintenance of new product work within a codebase; however, it’s the emotional “drag” on most disturbing developers. Unless addressed properly, technical debt is a one-way road to lost productivity, increasing levels of frustration, and disengagement.
Why does technical debt take such a toll? Because developers often feel ill-equipped to explain its criticality and therefore garner organizational support to address it.
As a result, technical debt is viewed as an “engineering problem” that blocks money-making activities like building new features and pleasing customers. Developers rarely succeed at winning over advocates because they lack the right tools to demonstrate the problems that technical debt causes.
Thankfully, there’s a way to raise awareness and change the dialogue if stability is brought into the conversation.
Measure, Align, and Stabilize
Organizations should aim for a balance between delivering a robust product roadmap and maintaining a healthy and evolving codebase. That equilibrium will never be discovered if engineering, application, and product teams don’t have a method to openly and regularly discuss and agree upon the impact of technical debt.
Here’s the good news: Technical debt is the measurable drag in your codebase. How do you measure it? By understanding how stable your software is.
Consider the “five nines” that infrastructure and operations teams use to track availability, measure uptime, and conform to SLAs. The same concept applies to software stability. It can be calculated using real-time error rates and session data to determine the percentage of successful user interactions per release. This percentage acts as a stability score that demonstrates how stable each software release is.
Simply put, when customers enjoy error-free interactions with an application, stability scores are high. If bugs cause disruptions or crashes, stability scores are low.
Since customers are fickle and known to switch apps when they crash (80% will only retry an app once or twice), this translation of technical debt into business value is game-changing. Stability scores provide direct insight into the actual impact of technical debt. As such, the burden of technical debt is no longer placed squarely on the engineering team’s shoulders but instead becomes a metric that the entire organization cares about and discusses regularly.
When you measure and communicate in the same language about technical debt, you can determine when and how to address it. Here are the types of questions that cross-functional teams can contemplate together when stability scores are used:
- What is our target stability? How many bugs are too many bugs?
- Are our stability scores for each release above our target?
- If any stability scores are below our target, which bugs make the most sense to fix first?
- Do we fix bugs that impact a key customer first, or do we focus on bugs that are impacting many customers?
- What is our ideal stability target? What target stability scores can we realistically set for future releases?
All of these questions become discussion points rather than frustration points when stability scores are used. By reframing the conversation, teams move away from conversations about annoyed customers (downside protection) to a joint focus on developing features faster and removing the drag of technical debt (upside generation). Better yet, teams that adopt stability as a KPI enable technical debt to be rolled into the engineering team’s goals through stability scores, which creates accountability from top to bottom.
To benefit from stability scores, organizations need stability management and error monitoring solution that metricizes and analyzes stability. When hard numbers and a common understanding are brought together, it’s easy for teams to agree upon an answer to the oldest software development question around: Should we fix bugs or build new features?
Stability Scores Bring Technical Debt Into Focus
Bugs are the consequence of innovation. To move forward, you need to create bugs (and lots of them), but you also need methodologies in place that address their existence in a timely fashion. After all, the question is never “if” but “when” with the impact of technical debt, and stability scores provide a quick and easy answer.
Everyone in an organization has a hand in building technical debt with business requests, product requirements, and customer needs. With stability scores, everyone can now share the responsibility of deciding when to address technical debt as well.
Opinions expressed by DZone contributors are their own.