Go to blue arrow
back to Tech Blog
Affaires
Anjali Ariscrisnã

21 février 2024

Min Read

Qu'est-ce que la dette technique et comment pouvez-vous la gérer ?

Une femme stressée sur un portable, entourée d'argent et d'une courbe descendante : la dette technique.

Une bonne gestion de la dette technique fait la différence entre un projet logiciel réussi et un échec. Ignorer ou ne pas reconnaître la dette technique peut entraîner une hausse des coûts de développement et de faibles rendements financiers. Donc, étant donné les enjeux, comprendre et traiter la dette technique devrait être une priorité pour les ingénieurs logiciels et les décideurs.

La dette technique ou dette de code n'est pas nécessairement négative ; elle peut parfois constituer un levier stratégique pour votre projet à long terme. Ainsi, si vous choisissez de contracter une dette technique, cela repose généralement sur une stratégie, une intention et une raison d'être. Et même si c'est risqué, cela peut être très bénéfique. Presque toutes les entreprises ont un certain degré de dette technique. L'astuce consiste à savoir comment l'identifier et la gérer. Cet article de blog vous aide à y parvenir. Voyons donc ce qu'est la dette technique, quels types de dettes existent, comment elles influent sur votre processus de développement et comment vous pouvez les gérer.

blue arrow to the left
Imaginary Cloud logo
blue arrow to the left
Imaginary Cloud logo

Qu'est-ce que la dette technique ?

Dette technique, dette technologique, ou dette de code désigne le fait de retarder ou d'omettre certaines tâches pour terminer un projet ou atteindre un objectif plus rapidement, ce qui entraîne toutefois des retouches ultérieures au cours du cycle de vie du projet. On peut comparer cela à la construction d'une maison sans plans complets. La construction pourrait être terminée plus tôt, mais la maison présentera d'importants problèmes structurels qui nécessiteront plus de temps et d'argent pour être réparés plus tard.

Dans le domaine du développement logiciel, il est courant de lancer une fonctionnalité rapidement afin d'observer son évolution. Une fois qu'elle a pris de l'ampleur, nous pouvons l'adapter à sa nouvelle dimension. Restez à l'écoute, car nous aborderons tous les types de dettes techniques plus tard.

Dans l'ensemble, la dette technique peut concerner n'importe quel aspect du développement Web ou d'applications, mais elle touche généralement la programmation, en particulier la refactorisation du code. Et tout comme pour une dette financière, le code ou la dette technologique génère des intérêts : plus la dette ou l'arriéré de problèmes ignorés s'accumulent, plus il devient coûteux de les corriger.

Dans une enquête McKinsey menée en 2020, les DSI ont indiqué que 10 à 20 % du budget technologique alloué aux nouveaux logiciels est consacré à la résolution des problèmes liés à dette technique. Plus inquiétant encore, les DSI ont estimé que la dette technologique s'élevait à De 20 à 40 % de la valeur de l'ensemble de leur parc technologique avant amortissement. Cela représente des centaines de millions de dollars de dettes non réglées pour les grandes entreprises.

Types de dette technique

La dette technique est une conséquence naturelle du développement logiciel, et lorsqu'il s'agit de l'identifier, la plupart des experts s'accordent sur deux catégories principales :

  • Dette technique intentionnelle (dette délibérée ou active) – survient lorsque les équipes laissent délibérément de la place pour améliorer le code ultérieurement au cours de la phase de développement.‍
  • Dette technique non intentionnelle (dette accidentelle ou passive) – survient lorsque la qualité du code doit être améliorée en raison d'une production médiocre.

Dette technique délibérée

Dette technique délibérée ou dette active survient lorsque les équipes choisissent sciemment une mise en œuvre rapide mais imparfaite pour 1) établir une présence sur un marché en évolution rapide ou 2) pour recueillir les retours des utilisateurs. La dette technique délibérée est souvent appliquée lors du développement de produits minimum viables (MVP), qui seront développés et corrigés en continu en fonction des retours clients.

Cependant, les équipes ont rarement le temps de revenir en arrière pour repenser la conception initiale. Il est donc toujours préférable de collaborer avec une équipe qui a correctement planifié le projet pour chaque étape de son cycle de vie. Par exemple, chez Imaginary Cloud, les développeurs commencent à optimiser et à améliorer le code de l'application ou du logiciel une fois qu'il est en ligne.

Un exemple simple et concret de dette technique délibérée est la façon dont Airbnb a initialement négligé de corriger le bouton favori de son site web. À une certaine période, le bouton permettant d'ajouter des logements ou des chambres aux favoris ne fonctionnait pas. Comme Airbnb se concentrait sur une croissance rapide à l'époque, l'entreprise a choisi d'ignorer ce problème. L'équipe ne l'a résolu que lorsque la plateforme a gagné en popularité et a atteint une phase plus mature de son cycle de vie.

Dette technique involontaire

La dette technique involontaire survient par accident et se produit généralement lorsque les développeurs ne comprennent pas les exigences du marché ou comment concevoir une architecture pour répondre aux exigences du marché.

Par exemple, lors de la conception d'un système logiciel, une équipe tente de trouver un équilibre entre vision à long terme et pérennité du plan grâce à la simplicité et à la mise en œuvre. À mesure que le système évolue et que les exigences changent, ils peuvent se rendre compte que leur stratégie est défectueuse ou que l'ajout de nouvelles fonctionnalités est devenu complexe et lent.

Couches d'interface applicative isométriques sur fond sombre. Texte : améliorez votre produit en profondeur.

Quadrant de la dette technique de Martin Fowler

La dette technique comporte également des types spécifiques, chacun reflétant la nature du problème dans son intitulé :

  • Dette de code - Généralement liée à un codage médiocre ou précipité, ou à l'absence d'application de modèles de conception appropriés.‍
  • Dette de défauts - Bugs, problèmes et défauts existants dans le produit.‍
  • Dette de conception - Désigne tous les concepts ou solutions de conception pertinents qui ont été ignorés afin d'atteindre plus rapidement un objectif à court terme.‍
  • Dette d'exigences - Contractée lors de l'identification, de la formalisation et de la mise en œuvre des exigences.‍
  • Dette d'automatisation des tests - Fait référence à tous les processus, simples ou complexes, qui devraient être automatisés mais ne le sont pas.‍
  • Dette de test - Cela se produit lorsque l'équipe commence à consacrer plus de temps à la maintenance des tests qu'à la création de nouveaux tests pour garantir l'absence de bogues dans le logiciel.‍
  • Dette architecturale - Certaines décisions concernant les grandes orientations architecturales engendrent une dette technique, ce qui peut nuire à la qualité globale d'un projet logiciel.‍
  • Dette documentaire - Ce type de dette technique désigne des lacunes dans la documentation, qu'il s'agisse de documents manquants, inadaptés ou incomplets.‍
  • Dette de processus - Généralement générée par des processus médiocres ou inexistants pour la gestion des défauts, de la documentation ou même des tests.

Bien que ces types soient très spécifiques, le plus connu est le Quadrant de la dette technique de Martin Fowler qui classe les types de dettes (délibérées ou involontaires) selon le choix de s'endetter (prudent ou imprudent).

Chaque quadrant peut être identifié par une couleur reflétant sa désirabilité : le rouge et l'orange (en haut et en bas à gauche) signalent une mise en garde, tandis que le vert et le bleu (en haut et en bas à droite) indiquent une approche souhaitable.

Une matrice 2x2 expliquant la dette technique à travers les catégories imprudente vs prudente et délibérée vs involontaire.

Analysons chaque quadrant tour à tour et examinons le rôle d'une équipe de développement dans la gestion des risques.

Délibérée et imprudente

Ce type de dette survient lorsque l'équipe possède les compétences nécessaires pour réaliser la tâche mais décide consciemment d'opter pour une solution rapide et de moindre qualité, généralement pour accélérer la mise en œuvre. Voici quelques questions à se poser avant de choisir cette approche :

  • Quel est l'impact à long terme de cette décision ?
  • Suivez-vous le niveau de la dette technique au fur et à mesure qu'elle est contractée ?
  • Avez-vous un plan (et un budget dédié) pour la rembourser ?
  • Prenez-vous des mesures pour limiter les conséquences d'un échec cuisant ?

Le fait de ne pas gérer des aspects tels que ceux mentionnés ci-dessus est ce qui fait basculer la dette technique délibérée dans l'imprudence.

Cela signifie démarrer un nouveau projet à un rythme lent, pour vous assurer que vous et tous vos collaborateurs savez exactement quoi faire et quelles procédures suivre.

Délibérée et prudente

La dette technique délibérée et prudente consiste à prendre des décisions éclairées en se demandant si les avantages d'une version anticipée sont supérieurs aux coûts de remboursement. L'équipe reconnaît le problème et ses conséquences mais doit fournir la fonctionnalité à temps. Dans ce cas, l'équipe prévoit également la manière de gérer les effets, en tenant compte de tous les scénarios les plus pessimistes.

Inadvertance et imprudence

L'inadvertance et l'imprudence, le type de dette le moins souhaitable que vous puissiez avoir - on l'appelle généralement entropie logicielle que nous expliquons dans le chapitre suivant. Les équipes sont censées comprendre les principes fondamentaux des technologies qu'ils utilisent, et les ignorer entraînera une application boguée avec un comportement inattendu ou une maintenance médiocre. Une équipe bien formée disposant de connaissances sectorielles à jour et des meilleures pratiques devrait être en mesure d'éviter ce type de dette technologique.

Par inadvertance et prudence

C'est le involontaire type de dette - cela peut se produire malgré une approche prudente de l'architecture et du code du projet. Souvent, c'est uniquement après la mise en œuvre d'une fonctionnalité ou une fois le projet terminé, que l'équipe réalise qu'une conception différente des composants de l'application aurait probablement permis d'aboutir à une meilleure solution. L'objectif est donc de maximiser les opportunités d'apprentissage afin de faire passer une plus grande partie de votre dette technique du statut « involontaire » à celui de « prudente ».

blue arrow to the left
Imaginary Cloud logo

Quel type de dette technique dois-je éviter ?

La pourriture binaire ou entropie logicielle est le type de dette technique que vous souhaitez éviter, comme nous l'avons mentionné plus haut. Cela se produit au fil du temps lorsqu'un composant ou un système ralentit et devient inutilement complexe en raison de nombreux changements progressifs, souvent lorsqu'ils sont effectués par plusieurs développeurs qui ne comprennent peut-être pas parfaitement l'architecture d'origine. Ce manque de maîtrise est une forme de dette involontaire et imprudente attribuable à de mauvaises pratiques de logique et de codage.

Vous voulez éviter l'entropie logicielle pour les raisons suivantes :

  • Le plus gros problème en termes d'endettement est que les petits changements contribuent en fait au montant total de la dette, et la plupart du temps, les équipes ne le savent même pas ;
  • Ces petits changements peuvent affecter l'ensemble du logiciel.

Nous vous recommandons de rechercher des équipes dotées d'un chef de projet dédié, capable de responsabiliser ses développeurs en veillant à ce que le processus de développement ne laisse pas de place à la pourriture binaire.

À lire aussi :

Les principales causes de la dette technique

Selon une étude menée par Stepsize, 61 % des équipes d'ingénierie affirment que la majeure partie de la dette technique provient du backend, en particulier des points de terminaison des serveurs Web. Les applications, les sites Web et l'infrastructure générale des entreprises constituent également une part importante de la base de code accumulant de la dette technique. Les résultats suggèrent que les entreprises pourraient accroître considérablement leur productivité en remboursant leur dette technique dans ces zones de leur base de code.

Les autres facteurs majeurs contribuant à la dette technique sont notamment :

  • Conception technique complexe
  • Mauvaise gestion
  • Manque de compétences
  • Tests insuffisants
  • Code sous-optimal
  • Refactorisation différée
  • Concentration excessive sur les gains rapides
  • Absence d'adaptation aux normes et bonnes pratiques dès les premières étapes

Ces problèmes peuvent s'accumuler au fil du temps s'ils ne sont pas supervisés, entraînant des inefficacités techniques qui devront être corrigées ultérieurement. Il est préférable de collaborer avec une équipe compétente ou de s'appuyer sur des processus, des plans et des calendriers adaptés. Cette équipe doit rendre les problèmes visibles en les consignant dans le backlog logiciel, où ils pourront être évalués et classés par ordre de priorité pour résolution.

Prenons l'exemple de La célèbre affaire Fail Whale sur Twitter. La plateforme tombait en panne à plusieurs reprises et passait en « mode maintenance d'urgence », ce qui nuisait à l'entreprise. L'apparition de ce béluga serein et optimiste est devenue une préoccupation croissante à mesure que Twitter s'étendait à un public plus large. Twitter a donc décidé d'intégrer une équipe de développement qui a instrumenté l'ensemble du système et a commencé à reconstruire chaque partie qui était sur le point de tomber en panne en déplaçant ses processus dorsaux vers une série de langages de programmation plus compatibles avec le framework Java Virtual Machine.

Une fois ces modifications mises en œuvre, l'équipe de Twitter a pu passer moins de temps à résoudre les pannes et plus de temps à développer de nouvelles fonctionnalités, à réduire la dette technologique, à éliminer les inefficacités techniques et, enfin, à offrir une meilleure expérience utilisateur.

« Le travail acharné n'est pas très gratifiant. Il est difficile de prendre la parole devant tout le monde et de dire : « Nous allons régler les choses petit à petit avec beaucoup d'efforts ». Les grands changements spectaculaires sont plus faciles à vendre la plupart du temps. Mais ils ne fonctionnent pas aussi bien et sont sujets à des échecs complets et abjects. »

Il est important de mentionner que la dette technologique ne provient pas toujours des équipes de développement. Les entreprises ou les clients qui recrutent imposent souvent des contraintes aux développeurs de premier plan qui n'ont d'autre choix que de les accepter. Il s'agit généralement des éléments suivants :

  • Limites de calendrier ou de budget
  • Décisions stratégiques pour tester l'adéquation au marché
  • Décisions commerciales erronées
  • Sélection inadéquate de l'architecture logicielle ou des outils

À lire aussi :

blue arrow to the left
Imaginary Cloud logo

Puis-je gérer la dette technique ?

Quand elle est délibérée :

Les équipes de développement peuvent gérer la dette technique intentionnelle en : assurant un suivi dans le backlog lorsque vous reportez délibérément des travaux qui doivent être effectués. Si une équipe ne parvient pas à tenir sa promesse de réviser le code ou n'en a pas les moyens, il est peu probable que cette dette soit remboursée et elle finira par se transformer en dette de conception accidentelle au fil du temps.

Cette dette est généralement contractée à la suite de décisions commerciales ; par conséquent, les parties prenantes et les propriétaires de produits doivent être tenus responsables de son accumulation.

En cas d'accident :

Réussir à refactoriser un système est une tâche colossale, mais cela doit être effectué de temps à autre lorsque le système est dans un état stable. Dans le cas contraire, l'équipe risque de surconcevoir le système et de subir des ralentissements inutiles.

Dans ce cas, les responsables technologiques et les propriétaires de produits doivent veiller à ce que du temps soit réservé à la résolution de ce type de dette technique occasionnée par des décisions de conception et des exigences en constante évolution.

À lire aussi :

La dette technique n'est pas toujours un fardeau. Elle peut souvent constituer un levier stratégique de réussite si elle est bien gérée. Chez Imaginary Cloud, nous pouvons collaborer avec vous à toutes les étapes de développement nécessaires pour vous débarrasser de toute dette inutile, tant sur le plan technique que sur le plan de la conception. Qu'il s'agisse de donner vie à votre idée grâce au développement de logiciels Web et d'applications ou de renforcer les compétences de votre équipe grâce à l'extension d'équipe, nous veillerons à ce que votre dette technique soit maîtrisée à chaque étape.

blue arrow to the left
Imaginary Cloud logo
blue arrow to the left
Imaginary Cloud logo
blue arrow to the left
Imaginary Cloud logo
Anjali Ariscrisnã
Anjali Ariscrisnã

Un spécialiste du marketing de croissance polyvalent et axé sur les données, doté d'une connaissance approfondie des affaires et informé des derniers développements dans le paysage du marketing numérique.

Read more posts by this author

People who read this post, also found these interesting:

Dropdown caret icon