Addressing the Key Challenges of Technical Debt

20 Sep 2018

 

Addressing the Key Challenges of Technical Debt

When it comes to technical debt, it’s vital to understand that the debts found in your software code represent more than just lost hard costs. There’s also the “softer” costs that come when the debt affects your team’s ability to get things done. Whether these “things” are bringing new services to market or properly engaging the customer, technical debt often means dire consequences that slow or stop productive everyday work. Addressing technical debt is challenging, and requires a committed approach. Left unchecked, technical debt becomes a cycle, where poor code leads to increased time and costs, decreased agility, less revenue, and therefore less available money for better development. Thankfully, it’s possible for companies to break this cycle by proactively meeting the core technical debt challenges head on.

Managing technical debt is a big undertaking, one that requires IT and other departments to work hand-in-hand. Here are several steps for minimizing technical debt and keeping software running at an optimal pace that encourages (instead of impedes) your growth.

Identify and Quantify the Debt

This will sound cliché, but the first step is “admitting you have a problem.” Meaning, it’s crucial to be able to see and recognize the technical debt in your programs and organization. Review the current technology to find areas where it’s possible to quantify the costs that come with poor application quality. You need to be able to express these costs so that the rest of the business units can visualize the impact of the debt across the organization, especially as it relates to the end customer and revenue. The costs of the debt are amplified when the debt-laden technology causes outages or data becomes unusable or inaccessible. Quantifying costs will require a deeper look into various code quality metrics, usability figures, and data on the time required to fix problems as well as add new features.

Actively Govern the Debt

One of the challenges organizations face is when technical debt is identified, but it doesn’t receive the proper amount of attention and resources. Conquering technical debt requires getting the buy-in from forward-thinking management who sees the long-term value in transforming the company. Many managers are focused on smaller chunks of projects instead of more revolutionary ones that can change the organization. Try to get upper management onboard with a vision for the company’s software, and talk about managing debt in a more philosophical way as it relates to the company’s overall fortunes. These types of high-level discussions are part of a broader agility strategy, where IT proactively pushes for transformative changes and is constantly looking at new opportunities and solutions.

Involving management also means the technical debt should be measured properly, so you can provide baseline data and then progress. It also requires some funding for the team to carry out such measurements and to staff the company with the right people who can fix debt-related problems.

Encourage Enterprise-Level Awareness

The best agile teams will be aware of the needs of the broader organization, not just their own department or the specifics of the technology. This dynamic is needed when you’re tackling technical debt. Encourage your teams to understand the business’ goals and core strategy, so they have context into how the technical debt fits into or disrupts those goals. Agile teams with this level of awareness will be able to better use existing assets found throughout the company. They’ll also develop a list of instances of technical debt that they can prioritize based on the needs of the business, so their efforts have an optimal impact.

Building enterprise-level awareness also means understanding that fixing technical debt often requires using a chunk of a finite budget. A deeper understanding of the business allows IT to use the budget wisely in more selective investments that pay off today and will still produce results in coming years.

Automate Testing of Key Software

Performing in-depth testing through manual means is time consuming, and takes the team away from revenue-generating projects. Instead, use automation that tests the functionality of the different software tools. You have to ensure each one performs as intended, and that the given project is completely done.

Automated bug testing can be written so that you can be sure the bug fix worked, and that changes to the code at a later date won’t bring the bug back to the solution. Developers can also see testing passes/failures as they happen, which reduces inefficient feedback loops between the QA and development teams. You should also use automated tools that keep coding up to various standards of quality, so you know if a program is ready for release or if it failed the test and requires additional work. Managing all of this testing and automation can be a cumbersome process, so be sure to pick the best and latest testing tools to ensure you proactively catch any debt-producing problems.

The Sphere Approach to Technical Debt

Any firm that tells you their software product has absolutely zero technical debt isn’t telling the truth. Any system effectively becomes “legacy” upon delivery. The key is to manage the debt properly, just as you would credit card or mortgage debt. Keep it under control, or you risk ruining your project and maybe your entire brand.

Sphere embraces a “fix as you go” and “just in time” approach to technical debt, meaning we focus different amounts of attention on the various stages of a project. It’s not possible to fix all the future problems in advance, so it’s best to be as proactive as you can. What we mean by “just in time” is when we recognize problems, but know that we can’t jump in with the fix at the expense of a growth stage. So we keep a list of these potential issues, evaluate it dynamically and then fix the issues in an order that makes sense. We also don’t try to present a solution as the “final” one the company will use, as technical debt is a constant and the needs of a company and its customers are constantly changing.

Visit us at www.sphereinc.com to learn about our breadth of services, including how we can reduce your company’s technical debt as part of a broader digital transformation strategy.