Articles

Overcoming Technical Debt to Enable Agility

  • By Dante Healy
  • Published: 2/28/2023
Server Room

Early in my career with finance transformation, one of the biggest challenges I faced was attempting to deliver a backlog of automations for a pan-European finance organization in the core legacy system. We had a highly skilled and motivated cross-functional team, but we continually missed delivery timings as deployments failed testing. The executive sponsors were losing patience and team members were losing morale due to the lack of results. This project nearly ruined my finance transformation career before it took off!

The team identified multiple causes of the failures, and a key one was the agile concept called “technical debt.” Technical debt refers to the cost of maintaining and enhancing an existing software system due to “band-aid” or inefficient development approaches, leading to inflexible systems, buggy code or outdated technologies. It also represents a trade-off between taking deliberate shortcuts for the short-term benefits in software delivery versus the long-term accumulating costs of maintaining and upgrading the system over its useful life.

Just like financial debt, technical debt can build up over time, with the costs of repayment compounding the longer time passes. As technical debt grows it becomes a huge obstacle to achieving agility within finance: The cost to maintain the old legacy systems and workarounds grow, yet automation and transformation become increasingly difficult, risky and expensive to implement.

A proactive approach is required to manage technical debt. Here are five steps to regularly assess technical debt and implement a plan to address it.

One: Recognize technical debt when you see it

When a system is suffering from technical debt, it will leave clues, such as being slow, hard to change or error-ridden. Other signs which may indicate the existence of technical debt in your finance systems include:

  1. In budgeting and forecasting, a lack of real-time data makes it difficult for finance teams to make accurate forecasts and respond to changes in the business. It also causes difficulty in identifying areas of inefficiency and potential cost savings.
  2. In financial reporting, high error rates could create financial misstatements leading to loss of investor confidence and reputational damage, plus tax and legal penalties.
  3. In accounts payable, poor data increases costs in processing invoices, tracking payments and reconciling accounts.
  4. In accounts receivable, outdated systems or manual processes can lead to delays in processing customer payments, resulting in increased costs and potential revenue loss.
  5. In treasury and cash management systems, manual processes increase costs in managing cash flow, tracking financial transactions and reconciling accounts.

Two: Quantify the problem

After identifying the technical debt, you can measure it in various ways:

  1. A ratio of the costs to keep the system running to how much money the system makes. A high ratio is unfavorable.
  2. A ratio of the costs to keep the system running to how much it cost to build the system in the first place. A high ratio is unfavorable.
  3. A ratio of the number of mistakes in the system per every thousand lines of code. A high number is unfavorable.
  4. A measurement of code complexity, such as how many lines of code or how many different code blocks there are. A high number is unfavorable.
  5. A measurement of how much of the code is covered by various quality tests. A low percentage means there is a lot of technical debt.
  6. A measurement of the time it takes to build new features or update the system. A long time is unfavorable.

It is important to remember that these measurements alone might not be enough to know how much technical debt a system has. Ideally, it's better if you have experts who can take a look at the system to run analysis on the codebase for code quality, such as duplicate lines, poor syntax, inefficient logic, to give an estimate of the technical debt and the cost to the system.

Three: Prioritize the most critical areas

The Black Swan Farming case study outlines a concept where organizations should prioritize the areas of their digital ecosystem which are most critical to the business and have the highest potential impact, rather than simply focusing on the lowest direct cost solution. The case study then suggests that organizations work through their list to the other areas of their systems landscape.

To apply this approach in your finance systems, you should:

  1. Identify the most critical areas of your digital landscape by analyzing which parts of the system are used most frequently or generate the most revenue.
  2. Ensure you have metrics and measurements to identify the areas of technical debt and quantify the cost of this debt in terms of time, money and resources.
  3. Prioritize technical debt in these critical areas by focusing on fixing or refactoring the code in these areas first.
  4. Continuously monitor and measure the impact of the changes made in these critical areas to ensure that they are having the desired effect.
  5. Continuously reassess and adjust the prioritization of technical debt as the organization's needs and priorities change.

Four: Create a plan to get organizational support

Establish a tangible plan to reduce technical debt. Getting buy-in from the key people in the organization is crucial for the success of the plan. Involve your stakeholders in the process, through the following steps:

  1. Create a plan that outlines how the technical debt will be reduced, including the scope of the work, the resources required and the timeline.
  2. Present the plan and the cost-benefit analysis that shows how reducing the technical debt will benefit the organization in the long run.
  3. Clearly communicate to all key stakeholders the financial impact of the technical debt on the organization. This can cover decreased performance, increased maintenance costs and difficulty in making changes to the system.
  4. Obtain funding approval and buy-in from key stakeholders, including IT and other departments, to ensure that the plan has the necessary support to move forward.
  5. Continuously monitor and report on the progress of the plan to reduce technical debt and make adjustments as needed so that the plan stays on track.

Five: Prevent new technical debt from building up

Preventing technical debt requires a combination of different approaches; it is an ongoing process, not a one-time action. Take preventative measures to minimize the amount of unintended technical debt in your finance processes and systems:

  1. Address the skills and training needs of your finance team members. As technology systems are upgraded and new tools are implemented, finance team members will need training and support to effectively use the new systems.
  2. Adopt best practices and guidelines for system design and delivery, e.g., commenting your codebase to ensure that your systems are consistently documented and easy to understand.
  3. Regularly review the systems to catch and fix issues early on. This can include both automated code review tools as well as manual code reviews by experienced systems experts, e.g., software developers.
  4. Use regular and even automated testing to catch issues before they make it into production. This can include input/output checks, unit tests, integration tests and end-to-end tests.
  5. Implement a continuous integration and continuous delivery (CI/CD) pipeline. Systemizing the software delivery process can help to catch issues early on. Plus it allows for flexibility to correct poor design choices as needed.
  6. Maintain your technical debt management process to track and prioritize technical debt, so that it can be addressed proactively rather than reactively.
  7. Allow resources for regularly refactoring to improve the maintainability, readability and performance of your systems.

The long-term benefit of addressing technical debt

Technical debt can prevent a corporate finance function from effectively undergoing transformation to realize agility. Whilst technical debt is not completely avoidable, the most important thing is to recognize it and avoid the build-up of too many “quick and dirty” solutions, such as low-quality systems, outdated financial software and manual processes that create problems which inhibit the organization’s ability to affect change the longer they persist.

By understanding technical debt and taking proactive steps to address these issues, finance leaders can ensure that their teams are agile and well-equipped to meet the competitive demands of the modern business environment.

FP&A professionals are responsible for navigating shifting economic trends in a quickly changing world. Learn what sets agile leaders apart in the 2022 AFP FP&A Survey: Measuring Agility in FP&A.

Copyright © 2024 Association for Financial Professionals, Inc.
All rights reserved.