David Weinling history

Technical debt: how to manage it?

10–16 minutes

de lecture

Publié le

Sommaire

Like debt at national or organizational level, reducing technical debt is a major preoccupation for many CIOs, especially those who take up their role and arrive at the helm of a legacy information system. What are the ins and outs of this notion? How can we measure its impact and steer it over the long term? Here are some answers.

What is technical debt?

  • lines of code developed quickly, temporarily, but never rewritten;
  • a component that has become obsolete, unsupported and a source of security vulnerabilities;
  • an unexecuted version upgrade, rendering an entire section of the system obsolete;
  • an architecture progressively degraded by successive compromises.

Why are technical debt and legacy often confused?

“I have often observed that legacy systems create a form of dependency on experts who, over time, master obsolete technologies with little or no documentation. This situation serves the collective interest and slows down the evolution of the IT system as a whole.”
Claude Carvalho, Director of Information Systems and Transformation at Galian-SMABTP.

  • A direct financial cost, in corrective and upgrade maintenance, measurable in particular in Third-Party Application Maintenance (TMA) budgets;
  • An operational cost, linked to service interruptions, recurring bugs and performance degradations that can slow down, penalize or even halt the smooth running of a service;
  • A cost in terms of image for the CIO, in the eyes of all the company’s stakeholders: users, business departments, senior management, etc;
  • Lastly, there is a human cost in terms of Teams’ morale and commitment, particularly when it comes to keeping obsolete systems afloat. The feeling of “putting patches on a leaky ship” can be deleterious to the collective dynamic.

Is talking about good and bad technical debt a false debate?

Involuntary technical debt

  • repeated compromises on code quality ;
  • lack of peer review ;
  • inadequate documentation;
  • lack of non-regression tests;
  • neglect of architecture and overall vision ;
  • inappropriate technological choices or obsolescence allowed to set in.

Intentional technical debt

  • after Go-live, leave Projects open for a few more weeks to finalize, document and consolidate ;
  • instill a genuine culture of quality and give architects the latitude they need to structure IS over the long term;
  • integrate, into project portfolios, initiatives explicitly dedicated to internal IS optimization, by allocating an identified bandwidth to them.
  • Automated code and system analysis: some tools use machine learning to identify risky areas in the code, redundant functionalities or critical technological dependencies. These analyses enable problems to be detected quickly, before they become costly, and Teams to focus on priority actions.
  • Intelligent prioritization of projects and sprints: combined with project scoring criteria, AI can help estimate the impact of each project on technical debt and overall IS performance, facilitating resource allocation and the choice of tests and interventions to be repaid as a priority.
  • Automation of maintenance and testing: AI can generate automated scripts to correct code, limit bugs in existing software and improve the integration of functionalities. Teams can then concentrate on developing new functionalities and improving overall IS quality.
  • Predictive tracking of data and systems: by analyzing historical data and performance KPIs, AI can anticipate areas of the IS likely to generate debt, enabling proactive interventions to be planned in the development and maintenance process.
  • AI can accelerate the development of complex or poorly documented solutions, creating new layers of debt if practices, testing, documentation and integration don’t keep up.
  • Over-reliance on Automation tools can mask structural problems in the IS, giving the impression of control while code, software or infrastructure continue to deteriorate.
  • Resources and Teams can be diverted to Tracking AI or correcting its recommendations, instead of addressing the root causes of the debt.
  • Integrate AI into a rigorous process: every recommendation or automated action must be validated by experienced architects or developers.
  • Prioritize value-added interventions: AI should be a diagnostic and scoring tool for Projects, not an automatic generator of functionality or uncontrolled code.
  • Qualitative and quantitative tracking: each project must be evaluated to measure its impact on technical debt, even when it incorporates recommendations or automated scripts derived from AI.

How can you steer your technical debt wisely?

1. Making technical debt everyone’s business

  • It’s not limited to software and applications: infrastructure, data, urbanization and software interfaces are also concerned.
  • It’s not just a matter of the run: it’s during development that decisions are made about whether or not to create debt. Decisions taken during a sprint, the choice of priority features or compromises on code quality have long-term consequences.
  • It impacts budgets, deadlines and available resources: poorly managed debt can tie up Teams in corrective maintenance and testing, to the detriment of innovative Projects.

2. The key role of the CIO/GM duo

  • Technical debt is a strategic asset: as mentioned above, some debts can be assumed if they accelerate the time-to-market of a critical software or functionality, but they must be documented and integrated into the planning of future Projects.
  • Technical debt enables a balance to be struck between speed and quality: the CIO / GM team can decide to give priority to certain Projects that can be delivered quickly, while planning tests, maintenance and the gradual reduction of debt.

3. Make technical debt visible, particularly in the Budgets