burger menu icon Web^ID
💬 Contact 💬 Contact
23 05 2025
retour à la liste des articles

Le code legacy, la grande aventure palpitante

logo web^id

• écrit par [Elise LIéGEOIS] Développeuse

marqueur jaune Default image alt

Pour comprendre ce qu’est le code legacy, faisons une analogie: Imaginez-vous en train de fouiller dans le grenier de vos grands-parents. Vous tombez alors sur une vieille boîte à musique un peu poussiéreuse, mais qui fonctionne encore. Elle joue toujours sa mélodie douce et nostalgique, mais elle a besoin d'un peu d'huile pour continuer à tourner sans accroc. Le code legacy, c'est un peu comme cette boîte à musique : il a une histoire et il a déjà servi, mais il a besoin d'un peu d'attention pour continuer à fonctionner correctement.

Plusieurs facteurs contribuent à l'augmentation des projets avec du code legacy : l'évolution technologique rapide, le manque de temps et de maintenance, les changements dans les besoins métier, la dépendance aux systèmes existants, un manque de documentation et de compétences, les coûts de modernisation, la résistance au changement et la complexité des systèmes.

Le terme "code legacy" (ou code hérité) désigne un code source ancien qui est toujours en utilisation, mais qui peut présenter plusieurs défis en raison de son âge et de son évolution. C'est comme un vieux vin : il a du caractère, mais il peut aussi avoir des arômes étranges et un drôle de dépôt au fond de la bouteille. Ce code a été écrit il y a des années, voire des décennies, et il utilise souvent des technologies et des pratiques qui sont aujourd'hui obsolètes.

Les Aventures du Développeur dans le Monde du Code Legacy

Chapitre 1 : La Chasse au Trésor

Imaginez que vous êtes un développeur et que vous venez de recevoir une mission : comprendre et moderniser un système écrit dans une vieille version de Laravel avec quelques dépendances abandonnées, aucun test, une documentation qui ne correspond pas au code présent. C'est comme partir à la chasse au trésor, on ne sait pas encore tout à fait où on va, mais on y va. Avant tout, il faut dresser l’état des lieux.

Chapitre 2 : Les Pièges du Labyrinthe

En explorant le code legacy, vous tombez sur des pièges et des énigmes. Les variables ont des noms mystérieux comme $p et $osef (oui oui, déjà vu dans un projet legacy) et les fonctions semblent écrites dans une nouvelle langue avec un mélange de français, anglais, espagnol ? ​​Vous trouvez aussi des trésors cachés, comme des algorithmes ingénieux et des solutions créatives à des problèmes complexes et même pour des problèmes assez simples. Vous devez utiliser votre esprit de déduction pour comprendre l’utilité de chaque partie du code et comment tout cela s'emboîte.

Chapitre 3 : Les Gardiens du Code

Le code legacy est souvent sous la surveillance de "gardiens" : des développeurs ayant travaillé sur le projet il y a des années et qui sont les seuls à comprendre vraiment comment tout fonctionne (parfois, même eux ne le savent pas vraiment). Ces gardiens peuvent être des alliés précieux, mais ils peuvent aussi être difficiles à trouver et réticents à partager leurs connaissances. Surtout s' il y a un litige entre le client et le gardien.

Chapitre 4 : La Modernisation

Une fois que vous avez compris le code legacy, il est temps de le moderniser. C'est comme rénover une vieille maison : il faut préserver son caractère tout en intégrant des éléments actuels. Les performances, la sécurité et les possibles évolutions dépendent de cette rénovation. Vous réécrivez les parties obsolètes du code, vous mettez à jour les dépendances, et vous ajoutez des tests unitaires. Vous découvrez des problèmes inattendus, comme des bugs cachés et des incompatibilités avec les nouvelles technologies. Cependant, avec persévérance, le code se transforme progressivement, gagnant en robustesse et en facilité de maintenance, et peu à peu, le code commence à prendre une nouvelle vie.

Les grands défis du code Legacy

Travailler sur du code legacy, notamment sur d'anciennes versions de Laravel, peut poser des problèmes majeurs, surtout quand des fonctionnalités reposent sur des packages obsolètes. Ce n’est pas le seul, reprendre un projet présente des défis spécifiques en termes de maintenance, de sécurité et de performance.

Les différents défis sur lesquels on peut tomber sont nombreux et variés, voici des exemples :

Défis 1 : Le manque de documentation

Imaginez essayer de monter un meuble sans notice. C'est un peu ce à quoi ressemble le travail avec du code legacy. La documentation est souvent incomplète, obsolète ou tout simplement inexistante. Vous devez donc jouer aux devinettes et utiliser votre intuition pour comprendre comment tout cela fonctionne.

image_alt

Défis 2 : La dette technique

Imaginez que vous devez peindre une pièce de votre maison rapidement. Au lieu de bien préparer les murs en les nettoyant et en appliquant une sous-couche, vous décidez de peindre directement pour gagner du temps. Au début, cela semble bien, mais avec le temps, la peinture commence à s'écailler et vous devez tout refaire, ce qui prend encore plus de temps et d'efforts que si vous aviez bien préparé les murs dès le début. Plus vous attendez pour moderniser le code legacy, plus la dette technique augmente, et plus il devient difficile et coûteux de faire les mises à jour nécessaires.

image_alt

Défis 3 : Les technologies obsolètes

Le code legacy utilise souvent des technologies aujourd'hui obsolètes. C'est comme essayer de faire fonctionner un vieux magnétoscope dans un monde de streaming. Vous devez trouver des moyens de faire coexister les anciennes et les nouvelles technologies, ce qui peut être un vrai casse-tête.

image_alt

Défis 4 : Les bugs cachés

Le code legacy est souvent truffé de bugs cachés, comme des pièges dans un donjon. Ces bugs peuvent être difficiles à trouver et à corriger, car ils sont généralement le résultat de pratiques de codage anciennes et de dépendances complexes ou même de méconnaissance du framework utilisé.

image_alt

Défis 5 : Un plongeon dans l’inconnu

On ne sait jamais vraiment sur quoi on va tomber, on peut suivre un fil et arriver sur du code mort, repartir sur un autre fil pour voir où celui-ci nous mène. C'est en quelque sorte de la spéléologie, ou chaque recoin renferme un "petit trésor".

image_alt

Au bout du chemin la récompense

Malgré les défis, moderniser le code legacy peut être extrêmement gratifiant. Pour reprendre l’analogie de la rénovation de maison : vous redonnez vie à quelque chose d'ancien et vous le rendez fonctionnel et beau pour les générations futures.

Personnellement, je commence à préférer travailler sur du code legacy plutôt que sur un nouveau projet. Je trouve que la complexité et le défi de moderniser un projet tout en le comprenant pour le rendre fonctionnel et pertinent avec les technologies modernes rendant le résultat plus gratifiant.

En résumé, le code legacy est un code ancien qui présente des défis spécifiques en termes de maintenance, de sécurité et de performance. Cependant, avec les bonnes stratégies et ressources, il est possible de le moderniser et de le maintenir efficacement.

Je vous conseille de lire notre article sur le sujet : “10 conseils pour réussir la reprise et le maintien en sécurité de ma plateforme web.”

Rédigé par :

filaire image filaire image
Vous souhaitez démarrer rapidement ?
Besoin d'accompagnement ?

Vous voulez en savoir plus ou vous souhaitez nous parler de votre projet ?
Nous sommes à votre disposition !