
Le Paradoxe Du Code Legacy
Durée: 5m21s
Date de sortie: 10/12/2018
Refactoring: Improving the Design of Existing Code : https://www.amazon.fr/Refactoring-Improving-Design-Existing-Code/dp/0134757599/ref=sr_1_2?ie=UTF8&tag=benoitgantaum-21
Working Effectively with Legacy Code : https://www.amazon.fr/FEATHERS-WORK-EFFECT-LEG-CODE/dp/0131177052/ref=sr_1_2?s=english-books&ie=UTF8&tag=benoitgantaum-21
Artisan Développeur - Niveau 3 : https://maison.artisandeveloppeur.fr/dompter-les-dependances?coupon=LANCEMENT
Hébergé par Ausha. Visitez ausha.co/politique-de-confidentialite pour plus d'informations.
Bienvenue sur le podcast Artisan Developer,
l'émission qui combine technique et agilité pour partager la passion du code.
Le code legacy, c'est comme une grosse pelote de laine.
Quand tu commences à tirer sur un fil, tu as vite fait d'embarquer toute la pelote.
Tu t'en rends compte quand tu commences à utiliser du code quelque part et que l'air de rien,
tu t'as importé une classe, et puis deux.
Et puis tu te rends compte qu'il en manque encore.
Bref, en quelques minutes, c'est la moitié de l'app que tu as embarqué avec toi
et tu te retrouves avec tout ça dans ta brouette.
Finalement, tu te sens plus en plus à l'étroit dans ton code jusqu'au moment où tu n'as même plus le touché.
C'est à partir de là que tu te transformes en ninja
et tu développes cet art subtil de modifier le code sans modifier le code.
Tu repères ta cible pendant des heures à la recherche de l'endroit propice.
Puis quand tu es sûr de toi, tu frappes et tu ajoutes les quelques lignes de code avec une précision chirurgicale.
Et puis tu t'échappes aussitôt avant que la police du code ne t'attrape.
Quel est le problème après tout ? Ça marche ?
Ben d'abord, je m'interroge sur l'efficacité de la démarche.
Si tu remarques qu'ajouter du fonctionnel est de plus en plus long et difficile, c'est qu'il y a un souci.
Mais bon, la rigueur, pourquoi pas ? De l'extérieur, c'est encore peu visible.
Ça commence à devenir vraiment visible et problématique
quand l'application bug dans tous les sens et que l'équipe n'arrive pas à garantir la stabilité de l'app.
Là, c'est visible par les clients, le manager, le patron.
Tu sais, ce moment où tu as un bug et quand tu fixes un bug, ben t'en crée 200 en t'en rendent compte.
Puis enfin, je me questionne sur la satisfaction personnelle qu'il y a à passer ces journées
à régler des bugs, à pas savoir si on n'a pas cassé quelque chose.
Finalement, je trouve que c'est hyper stressant, usant et...
Où est la fierté dans tout ça ?
Mais il y a pire dans l'histoire.
Ça serait de finir par se dire que tout ça est normal, de baisser les bras,
de dire ok, ben puisque c'est comme ça, faisons comme ça.
Alors heureusement, il y en a qui refusent de baisser les bras.
Ils prennent leur courage à demain, ils font un serment solonelle, décrire des tests
et se jettent à l'assaut du monstre Spaghetti.
Et c'est là que le paradoxe du code Spaghetti, du code legacy, les frappent de plein fouet,
les fauchant dans leur pleine vigueur.
Le paradoxe du code legacy est le suivant.
Pour remodeler du code en toute sécurité, il faut des tests automatiques.
Pour écrire des tests automatiques, il faut du code testable.
Le souci, c'est que le code legacy n'est pas testable.
J'ai envie de dire presque par définition, si on prend la définition de Michael Faeser,
le code legacy est du code qui n'a pas de test.
Bon, là tu remarques que je fais juste une toute petite extrapolation
en considérant que du code non testé n'est pas testable.
Bon ok, c'est pas très scientifique, c'est juste un constat empirique depuis 20 ans que je code
si le code n'a pas été écrit avec des tests, il est rarement testable.
Puis d'ailleurs des fois il vaut mieux pas écrire des tests sur du code comme ça
parce que ça va donner des tests hyper couplés, c'est pas forcément intéressant.
Donc il faut commencer par casser le code, le fragmenter, la souplir
pour pouvoir écrire les premiers tests qui me donneront un filet de sécurité
qui me permettra d'aller de l'avant et de modifier, de remodeler mon code de plus en plus.
Sauf que cette partie surtout dans l'efface initiale, elle est stressante, elle est hyper flippante
parce que tu as appris à avoir peur du monstre Spagetti.
C'est stressant car tu travailles sans filet, tu ne sais jamais si tu n'as pas cassé quelque chose quelque part.
Alors heureusement, il existe des techniques de remodelage et des principes de conception
qui te permettent de faire ça en limitant fortement les dégâts.
Pour ça, tu as deux grandes approches.
Soit tu vas te documenter dans des boucards, j'en ai deux à te conseiller qui sont super.
C'est ceux sur lesquels je m'appuie moi dans mon travail et dans mes formations.
Tu as le livre de Martin Foller sur le refactoring, je te mettrai le lien.
Tu as le livre sur de Michael Feasors travailler efficacement avec du code legacy,
là aussi je te mets le lien dans l'épisode.
Si tu n'as pas envie de passer du temps à lire ces centaines de pages,
sache que le module 3 du Cursus Artisan Developer vient de sortir, c'est dans les bacs.
Là aussi je te mets le lien.
Je t'invite vraiment à t'intéresser à ce Cursus.
L'idée qui est derrière, c'est de t'apporter les outils qui sont vraiment utiles en un minimum de temps.
En plus de ça, comme c'est la semaine de lancement, il a un prix canon jusqu'à dimanche.
Donc si tu es intéressé, bien bien dans le lien, je te donne rendez-vous dans la maison des compagnons.
En tout cas, si toi aussi tu es aux prises avec du code legacy, ça m'intéresse.
Si toi aussi tu te bats contre le monstre au spaghetti, ton retour d'expérience m'intéresse,
sur quoi tu galères, qu'est-ce que tu as envie de faire, qu'est-ce qui t'empêche de le faire.
Tu peux m'envoyer un email à Benoit Arobase Artisan Developer et je te dis à demain.
Episode suivant:
Les infos glanées
ArtisanDéveloppeur
Artisan Développeur est un podcast destiné aux développeurs qui veulent bâtir une carrière épanouissante. Hébergé par Ausha. Visitez ausha.co/fr/politique-de-confidentialite pour plus d'informations.
Tags
Card title
[{'term': 'Technology', 'label': None, 'scheme': None}, {'term': 'Technology', 'label': None, 'scheme': 'http://www.itunes.com/'}]
Go somewhere
Monter En Compétence