Battling Technical Debt
Find out about how reducing technical debt leads to more functional teams with better-skilled developers, better products, and greater customer satisfaction.
Join the DZone community and get the full member experience.Join For Free
This is an article from DZone's 2023 Development at Scale Trend Report.
Read the Report
When we talk about technical debt, we're talking about an accumulation of legacy systems, applications, and data that have suffered from a lack of code reviews, bug testing, and comprehensive documentation. Not all technical debt is inherently bad compared to the commercial and end-user benefits of meeting application deadlines and shipping faster than your competitors; however, there does come a time when unaddressed technical debt can leave a company in a world of pain.
Applications are challenging to maintain. A product may be difficult to scale. The stability and security of critical operations become issues. Products are patched rather than repaired. Eventually, something has to give.
The Four Biggest Commercial Impacts of Technical Debt
Without keeping technical debt in check, it can have a profound impact across different areas of an organization.
Technical debt costs you money and takes a sizable chunk of your budget. For example, a 2022 Q4 survey by Protiviti found that, on average, an organization invests more than 30% of its IT budget and more than 20% of its overall resources in managing and addressing technical debt. This money is being taken away from building new and impactful products and projects, and it means the cash might not be there for your best ideas.
Migrations are harder and take longer. The failure to refactor legacy software can come back to bite you at the worst possible time. A recent post by developers at Meta revealed the company's pain caused by technical debt. It details the logistics of modernizing Meta's exabyte-scale data platform by migrating to the new Tulip format. It notes that "systems have been built over years and have various levels of dependencies and deep integrations with other systems."
Even behemoths like Meta are not immune to the frustrations caused by technical debt when modernizing software, and if it's bad at Meta, imagine what it might be like in your company, which probably has far fewer resources. There's going to be a lot of impatient people.
Technical debt impacts your reputation. The impact can be huge and result in unwanted media attention and customers moving to your competitors. In an article about technical debt, Denny Cherry attributes performance woes by US airline Southwest Airlines to poor investment in updating legacy equipment, which caused difficulties with flight scheduling as a result of "outdated processes and outdated IT." If you can't schedule a flight, you're going to move elsewhere. Furthermore, in many industries like aviation, downtime results in crippling fines. These could be enough to tip a company over the edge.
Your need for speed holds you back. The COVID-19 pandemic has only exacerbated the problem of technical debt. A SoftwareOne survey of 600 IT leaders found that many teams rushed projects, such as cloud migrations and applications, into production during the pandemic. As a result, 72% of IT leaders said their organization is behind on its digital transformation due to technical debt.
Simply put, delays and problems caused by technical debt can inhibit company growth, offerings, and profitability — all critical issues since many workplaces today are looking to reduce costs and cut inefficiency. This is why, besides having access to tools that tackle technical debt, the most important thing is intention and commitment.
Embed Technical Debt-Busting Strategies Into Your Workplace Practices
Simply put, your company must want to do something about preventing and reducing technical debt as part of a strategy to create better products. Tools don't help if there's no commitment to change and devs are still expected to ship "not-quite-good-enough" code at speed without allocating time to code quality.
Really tackling technical debt requires commitment from leadership and stakeholders to good coding practices, allocated time for refactoring, updates over patching, and (ultimately) tracking, prioritizing, and valuing time spent working on technical debt as an important business practice.
Dev leads need to make addressing technical debt part of the team culture, which includes upskilling employees as needed and making code reviews and refactoring regular tasks. Include these efforts in employee onboarding and talk about it regularly within and outside the team — heck, even gamify it if it helps.
Who Decides What Good Code Is?
Code quality matters, so make it a matter of pride. How often are you reviewing code? How much do you promote knowledge boosting by pair programming? Incentivize devs to write good code and leave code better than they found it. And if you start with this mindset, you'll be investing in a whole lot of great work practices that can strengthen your team. Let's take a look.
Often described as a love letter to your future self, good, consistent code documentation written in a common language is critical for yourself and the people who inherit your code. It's about the "why" behind code and is especially helpful to asynchronous collaboration. Good documentation helps make code easier to understand and maintain.
Things like consistent naming conventions and standardization help reduce new technical debt as well as help identify potential areas of technical debt that may have been introduced during the maintenance process.
And you don't need to do everything manually. Use linters like Vale for easy corrections and style guide consistency. Deploy extensions that embed comments and to-do items into the editor. Tools to explore include Visual Studio Code, Sublime Text, docsify, and DocsGPT. Find what integrates best with your existing software.
You can only solve a problem if you understand it, and tracking is the first step to understanding a problem and changing it. By tracking, you can determine the most significant causes and problems, and then decide where to start and what to prioritize in terms of quick wins and bigger tasks. There's Git, of course, as well as options like Trac. A suite of different software plug-ins track debt from pull requests, Slack, and code editors, giving you the insights needed to begin creating an action plan.
Use All the Tools
Invest in tools that help you reduce technical debt. For example, code analysis tools give you actionable insights into code quality and maintainability. If CI/CD is your jam, you can automatically build, test, and deploy software changes while reducing manual errors.
Here's a great list of open-source code analysis tools from OWASP. Use task management and scheduling tools such as ProjectLibre, Redmine, and FullCalendar to make time for technical debt management and refactoring. Try out different tools, track their efficacy, and decide what works as a team.
Refactoring Is Your Friend
Don't underestimate time well spent refactoring — editing out repetition and tidying up messy code makes it easier to read and maintain and uses less memory at greater speed, improving performance. It also comes into its own during code or cloud migration. Nicely refactored code is a huge boost when adding new features, removing the need to start again.
While it can be tempting to opt for refactoring sprints as the number one best solution, without enough incentives, there'll always be something else more urgent. So find a way to make refactoring happen regularly by investing in tools that reduce the most boring and laborious parts of refactoring.
Paving the Way for Modernization With Compatibility
Companies like Meta and Southwest Airlines highlight the challenges of migrating software that is patched rather than updated, or that is riddled with technical debt. Test your software for compatibility. You can improve compatibility by automatically updating with the latest versions of compilers, libraries, and frameworks. This keeps you updated in terms of bug fixes, new features, and new security changes.
Ultimately, many tools are available to manage and reduce technical debt, ranging from identifying and tracking it to preventing its continuation.
However, what's critical is how much a company values reducing technical debt and invests in cultivating workplace practices that facilitate its elimination. This leads to more functional teams with better-skilled developers, better products, and greater customer satisfaction.
This is an article from DZone's 2023 Development at Scale Trend Report.
Read the Report
Opinions expressed by DZone contributors are their own.