Couverture de l'article Comprendre la dette technique d'un projet
Retour aux articles

L'agence

WanadevStudio

Comprendre la dette technique d'un projet

Tout nouveau projet est obsolète ! Même infime et difficile à percevoir au départ, une dette technique se crée inévitablement au fil du temps. C'est un poids qui s’alourdit peu à peu et freine progressivement les possibilités d'évolution d'un projet.

^ cet article est une grosse mise à jour d'une version publiée initialement en 2020.

C'est quoi la dette technique ?

Le terme "dette technique" est une métaphore inventée par Ward Cunningham en 1992. Que cela soit d'une manière intentionnelle ou non, la conception d'un logiciel reporte automatiquement des coûts de développement supplémentaire futur. Évidement des erreurs de conception et un développement de mauvaise qualité vont accroitre ce phénomène, mais dans tous les cas, il n'est pas possible de l'éviter. Même la plus brillante et compétente des équipes de développement créé de la dette. Pourquoi ? Car les projets évoluent constamment, ils répondent aujourd'hui à des problématiques auxquelles ils ne devront plus faire face plus tard. Les projets changeront car l’écosystème, la technologie des serveurs, des devices et les utilisateurs changent. En tant que créateurs de solutions informatiques, nous devons assumer cette conséquence, vivre avec et faire le nécessaire pour la maîtriser.

La dette technique ? Non, LES dettes techniques !

Si on prend du recule, on constate que la dette existe à tous les niveaux ! Dans les interfaces, dans les outils de déploiement, dans les solutions de tests, dans l'infrastructure serveur... et même dans la façon de gérer un projet !

On retrouve plusieurs notions différentes :

  • L'obsolescence : utiliser de vieilles technologies, de vieilles architectures techniques ou d’anciennes méthodes de développement qui rendent le projet déjà en retard sur son temps.
  • La mauvaise qualité : développer sans contraintes, sans bonnes pratiques, ne pas avoir d’homogénéité entre les projets et les autres développeurs, c'est le risque d'un projet difficile à maintenir.
  • L'over-engineering : faire un code très structuré, très robuste, mais aussi un peu machine à gaz peut rendre le développement futur complexe et lent.
  • La nouveauté à tout prix ! : partir sur des technologies très jeunes et non fiabilisées, c'est ne pas avoir le recul suffisant et prendre un risque dans le maintien du projet.

Vu et entendu !

Ce projet est notre nouvelle référence technique ! - Mai 2020
Comment j'ai pu écrire ça ?! - Septembre 2021

Le magnifique code qui est produit aujourd'hui sera le monstre de demain. Les technologies évoluent et les développeurs progressent ! C'est aussi pour ça que l'amélioration continue est utile : méthode SCRUM, méthode Kaizen.

Franchement, ce langage est parfait pour faire ça ! - octobre 2020
On aurait du prendre l'autre, il vient tout juste de sortir ! - décembre 2020

Et oui, chacun son avis sur le choix d'une techno, seulement, à un moment, il faut décider ! Un peu de pragmatisme peut être utile (stabilité, maturité, recul sur le langage et durée de vie du projet).

J'ai besoin de ça rapidement, vous le ferez au propre plus tard - mars 2020
On peut savoir pourquoi il vous faut 3 jours pour rajouter cette petite fonctionnalité ? - mars 2022

Évidemment, produire du code rapidement est parfois un impondérable pour un client, mais cela ne doit pas devenir la règle. Au fil du temps, les fonctionnalités créées rapidement sans recul et sans structure seront aussi les plus instables et difficiles à améliorer.

Les pistes pour limiter la dette

Côté dev

On en parlait plus haut, mais il est très important de bien comprendre ceci : on ne gagne pas un Tour de France avec un VTT, aussi performant soit-il ! Un choix technique ne doit pas être arbitraire, mais doit être discuté et argumenté au sein de l'équipe.

  • La standardisation du code, du code review, des ateliers techniques et une architecture de projet validée à plusieurs**. Prenez aussi le temps de mettre en place des phases de refactoring. Prévoyez même la montée de version de vos librairies qui sera plus facile à faire au fil du projet qu'après avoir cumulé des années de retard.
  • Plus il y a de technos, plus la maintenance sera difficile. C'est évident, mais c'est bon de le rappeler. Ajouter une nouvelle techno à un projet doit se discuter en vérifiant les compétences dans l'équipe et la pérennité d'un tel choix.
  • Code compréhensible = maintenance facile.
  • Pas de développeur unique par fonctionnalité/projet. En passant par du code review ou du développement en pair programming, on partage les compétences et les expériences. On favorise ainsi la reprise d'un projet par d'autres développeurs.
  • Apprendre de ses erreurs par des débriefs réguliers et des ateliers techniques
  • Normaliser les pratiques de développement automatiquement. Des outils existent pour standardiser et vérifier la qualité du code. Il faut trouver un bon équilibre pour ne pas bloquer la dynamique de développement.
  • Utiliser des technologies communes et supportées par une grosse communauté.
  • Tester et expérimenter. Si vous souhaitez tester une nouveauté, prenez quelques jours pour le prototyper avant de l'intégrer sur le projet de votre client.
  • S'adapter au projet : Le niveau de qualité d'un projet est très dépendant du contexte (projet temporaire, taille, type de client...)

@ Je ne code pas (que) pour moi, je code pour les autres. Souvent la clarté et l’utilité doit primer sur la qualité dans une moindre mesure.

Côté client

Vous devez toujours envisager un projet sur le long terme pour vous permettre de maintenir et de faire évoluer votre projet tout en limitant la dette technique. Un projet à l’arrêt est un projet qui créé de la dette chaque jour.

  • Entourez-vous de personnes compétentes, un directeur technique ou un lead développeur qui sera garant d'un développement cohérent tout en gardant une vision client. Préférer un profil d’expérience est primordial ! (ne faites pas l'erreur d'avoir des stagiaires sans supervision par exemple)
  • Même si les coups de rushs sont parfois nécessaires, laissez du temps aux équipes de développement. Prévoyez aussi régulièrement de la place dans votre planing pour de la maintenance en profondeur du projet. (refactoring).
  • Il est aussi parfois nécessaire de faire le point, de regarder dans le rétroviseur. Vous pouvez donc demander la réalisation d'un audit (en externe, mais aussi par l'équipe elle-même) afin de cibler les forces et les faiblesses du projet pour mieux planifier les challenges techniques à venir.
  • Participez aux réunions techniques, posez des questions même si vous ne vous sentez pas à la hauteur techniquement. Elles peuvent être un éclairage pour l'équipe.

Les 5 règles d'or pour maîtriser sa dette technique

  • Je prends en compte le contexte du projet dans mon choix technique,
  • J'utilise d'abord des technos testées / maitrisées,
  • Chaque choix technique doit être débattu dans l'équipe,
  • Je commente efficace,
  • Je pense à la vie "d'après" de mon projet.

Cet article est valable aujourd'hui, mais qui sait ? Peut-être que demain il ne sera plus, puisqu'il comporte lui-même sa dose de dette technique potentielle. Et vous, quel avis ? Ce sujet est à débattre, et bien sûr, à améliorer ;-) !

Commentaires

Il n'y a actuellement aucun commentaire. Soyez le premier !

  • Couverture de l'article Retour sur le Meet-up Python du 30 juin 2025
    Retour sur le Meet-up Python du 30 juin 2025

    Il y a 2 semaines

    Ce lundi 30 juin 2025 nous accueillions la branche lyonnaise de l'AFPy dans nos locaux pour un meetup autour du langage Python. Malgré les fortes températures, une trentaine de personnes ont répondu présentes pour ce moment de convivialité et d'échange.

  • Couverture de l'article Figma Make : enfin une passerelle prometteuse entre design et code grâce à l'IA
    Figma Make : enfin une passerelle prometteuse entre design et code grâce à l'IA

    Il y a 4 semaines

    Depuis quelques années, les outils d'IA pour générer des intégrations d'interfaces à partir de maquettes fleurissent. On en a testé plusieurs chez WanadevDigital : de Locofy à Uizard, en passant par Framer AI. Tous ont leurs qualités, mais jusqu’ici, il manquait un vrai pont stable entre les intentions du designer et la réalité du code front.

    L’arrivée de Figma Make change la donne. Et si je devais résumer son impact en une phrase : ça fonctionne, et ça fonctionne pour tout le monde, designers, développeurs et intégrateurs !

  • Couverture de l'article Maîtriser la traduction (i18n) dans un projet web - Partie 2 : Conseils pour une localisation gérable et évolutive
    Maîtriser la traduction (i18n) dans un projet web - Partie 2 : Conseils pour une localisation gérable et évolutive

    Il y a 4 mois

    Dans la partie 1, nous nous sommes concentrés sur la mise en place d'une base solide pour la gestion des traductions dans un projet Vue. Maintenant que votre système de traduction est opérationnel, il est temps d'examiner de plus près comment structurer, gérer et faire évoluer vos fichiers de traduction de manière efficace.

    Cette partie couvrira les bonnes pratiques que nous utilisons chez Wanadev pour créer des clés de traduction maintenables, éviter les pièges courants et garantir que vos fichiers de traduction restent propres et évolutifs au fur et à mesure que votre projet grandit.

  • Couverture de l'article Maîtriser la traduction (i18n) dans un projet web - Partie 1 : Configurer proprement
    Maîtriser la traduction (i18n) dans un projet web - Partie 1 : Configurer proprement

    Il y a 4 mois

    Mettre en place l'internationalisation (i18n) dans un projet web peut sembler simple. Cependant, de nombreux projets se retrouvent avec des configurations de traduction mal gérées, difficiles à maintenir ou à faire évoluer à mesure que l'application grandit. Une stratégie i18n robuste est essentielle pour offrir une expérience utilisateur fluide dans plusieurs langues.

    Je vous décris ici, les pratiques que nous avons établies chez Wanadev au fil des années d'expérience pour mettre en œuvre et gérer les traductions dans les projets Vue. Bien que les exemples soient spécifiques à Vue, la plupart de ces pratiques peuvent être appliquées à n'importe quel framework.

  • Couverture de l'article Bien choisir sa typographie : quelques bases pour un message clair
    Bien choisir sa typographie : quelques bases pour un message clair
    Méthodologie

    Il y a 9 mois

    On n'écrit pas "Je t'aime" comme "Je te hais" ! Cette petite phrase résume bien ma problématique : quand on doit délivrer un message, la compréhension de ce dernier ne se fait pas uniquement par la lecture simple du texte, mais aussi par sa mise en forme. Et de cette mise en forme dépend la bonne compréhension du message. Dans cet article, nous allons nous pencher sur l’histoire et les familles de typographies dans le but de sensibiliser sur l’importance des choix de typographies dans la communication. Nous verrons ensuite quelques astuces pour bien sélectionner sa typographie et mettre en forme son message.

  • Couverture de l'article Les solutions CPQ sont-elles accessibles à toutes les entreprises ?
    Les solutions CPQ sont-elles accessibles à toutes les entreprises ?
    Méthodologie

    Il y a 10 mois

    Le CPQ (Configure, Price, Quote) est un outil essentiel pour les entreprises cherchant à optimiser leurs processus de vente. Il permet aux équipes commerciales de configurer rapidement et facilement des produits ou services complexes en fonction des besoins spécifiques des clients, tout en garantissant la cohérence des prix. Grâce au CPQ, les vendeurs peuvent établir des devis précis et personnalisés en temps réel, tout en tenant compte des remises, des promotions ou des ajustements spécifiques. Aujourd'hui les CPQ tirent majoritairement parti de la 3D pour proposer une visualisation de produit plus réaliste et complète.