Almost every, software or product development teams have taken shortcuts to meet deadlines to upgrade systems or to introduce a new service or launch a product. However, these shortcuts create a technical debt and, if left unaddressed, this debt makes future changes harder.
The remote working practices we have all had to adopt has highlighted the need for effective technology enabled processes and systems. There has never been a better time to revisit the shortcuts taken to meet deadlines delivering IT systems. By reviewing the cost of existing technical debt, you can create new ways of working to repay the debt and achieve the long-term health of your IT systems.
Far too often technical debt is overlooked and left to compound. This compounded debt is rediscovered for the next transformation project to resolve, which it rarely is and so the cycle continues.
Tacking technical debt
Technical debt is created in two main ways; as new systems are developed and as those already in use are fixed. To tackle this debt, stakeholders must be made aware of it and its cost. Once that is established, they need to buy into a debt management plan and then participate in making and tracking key decisions.
So, how do we get stakeholders engaged?
Getting buy-in to debt management is essential for fixing the causes of technical debt.
The four approaches described below have proved to be effective in starting to repay and resolve technical debt:
Talk about it
We have all become used to holding online meetings. These are a real opportunity for discussion, sharing knowledge and experience. Unburdened by having to find an available meeting room, we can collaborate better together on a plan of action. Regular meetings between stakeholders will allow the debt to be managed.
Discuss and challenge assumptions such as requests for comprehensive design documentation. This seems reasonable but can introduce a maintenance burden that does not provide long term value.
Tasks to manage debt will need to strike a balance. This should be based on a shared view of the value that each task delivers. Effective technical debt management could include tasks from architecture and design to coding and data management.
Review your systems and prioritise a list of improvements
Not all IT systems will be under active development. There could also be an amount of technical debt that you have inherited. Taking stock of your existing systems will identify areas where technical debt exists. Identifying inherited debt will allow it to be managed. It will also help de-risk technology modernisation plans.
An independent and impartial review will provide actionable advice and help create a debt management plan. Also consider migrating fix-on-fail support contracts to improve-next contracts so that systems do not become outdated and costly to replace. But be aware that purchasing new technology is not the same as truly integrating that technology into your business.
Empower the development teams
Dealing with built-up technical debt increases the time it takes to deliver new software features or make changes quickly. Allowing development teams to manage technical debt from the outset will improve quality and reduce the maintenance burden for future changes. The cost, quality and performance of technical decisions made will be better understood.
A good team will be a mix of those who like to develop new features and those that like to fix and improve things. A team like this will allow technical debt to be addressed as a routine activity and will increase the quality of work. Empowering development teams to address technical debt creates a natural way to capture and measure it during planning activities. There is benefit in giving a mandate to the product owner or project champion to ensure that technical debt is reduced in their projects.
Address the debt through continuous improvement
Agile development and DevOps are effective ways of controlling the build-up of technical debt. Continuous integration and delivery (CI/CD) processes provide a structured way to measure and control the amount of technical debt being repaid. This results in systems that are easier to run and maintain. Debt management plans can be followed, and the reduction of debt monitored. Continuous improvement of software extends its useful life and increases end user satisfaction.
These are just a few of the approaches that will allow you to effectively manage technical debt. The take-away message is; don’t put off work that can be done today that will improve things tomorrow.
Finally, the rapid digital transformation that organisations have had to make during the COVID-19 pandemic will have added new technical debt to systems, just as the pandemic is adding financial debt. This is OK, provided the debt is managed. Unaddressed technical debt, in all its forms, has hidden costs. Reducing time fixing bugs and dealing with customer service calls will yield positive results such as better software, happier users and a lower total cost of ownership.
Dave Horton, Principal Consultant, Triad Group Plc