La parole est aux speakers : Rachid Hammaoui

Publié le

Jusqu’à l’AFUP Day 2024, retrouvez nos interviews de speakers pour mieux comprendre leur parcours et le sujet qu’ils ou elles aborderont lors de leur conférence !

La conférence

Introduire de la qualité dans un projet “legacy”

La qualité de code est désormais un sujet largement intégré par les devs dans l'écosystème PHP et les bonnes pratiques sont largement documentées. S’il est relativement simple de mettre en place ces pratiques dans une nouvelle base de code, qu’en est-il sur un projet dit “legacy” qui a été construit sans en tenir compte ?

Après un rappel de ce qu’on entend par “qualité de code” et code “legacy”, nous verrons comment introduire sereinement quelques pratiques liées à la qualité de code dans un tel projet :

  • Stratégie de tests : quels types de tests privilégier sur du code existant qui n’en comporte pas ? sur le code ajouté ?
  • Ajouter un outil d’analyse statique de code : quels outils ? Comment gérer les corrections sur le code existant tout en sécurisant le code ajouté ?
  • Revues de code : processus de review / définir des conventions de code, comment gérer l’application de ces conventions sur la modification du code existant et sur le code ajouté ?
  • Quelques techniques de refactorisation pour tendre vers un code plus SOLID ?
La Comédie
24/05/2024
10:05-10:45

Sans trop dévoiler le contenu de ta conférence, qu’est-ce que tu entends par projet « legacy » ?

Bien qu’il y ait plusieurs définitions possibles et que le sujet peut être source de débat, pour ma conférence, j’entends par projet legacy une base de code :

  • fonctionnelle et donc qui apporte de la valeur (tourne en prod)
  • maintenue et évolutive, il n’y a pas grand intérêt à sécuriser du code qu’on ne modifie plus
  • difficile à maintenir et à faire évoluer car n’a pas été écrit dans les “règles de l’art” (SOLID, tests …)

En attendant que tu nous livres tes secrets, penses-tu que understandlegacycode.com soit une bonne première source d’informations ?

Je ne connaissais pas ce site, oui cela semble excellente source d’informations (que je vais sans doute utiliser 🙂),on abordera de nombreux sujets présents sur ce site notamment la manière d’insérer des tests, de refacto du code legacy… J’essayerai également d’aborder d’autres aspects moins techniques comme par exemple la manière de “vendre” ces optimisations techniques aux décideurs qui peuvent parfois être réticent à consacrer du temps à de l’optimisation purement technique.

Aurais-tu des conseils à donner pour motiver les membres d’une équipe à travailler sur des projets legacy ?

La plupart des devs ont un a-priori très négatif sur les projets legacy et n’interviennent sur de tels projets que s’ils n’ont pas le choix. C’était aussi mon cas il y a quelques années encore. Puis j’ai compris qu’un projet legacy est avant tout un projet qui a réussi : si je suis amené à intervenir dessus, c’est qu’il apporte de la valeur. Cette prise de conscience m’a appris à respecter le code existant, à tenter de le comprendre et surtout à l’améliorer.

Il ne faut pas tomber dans un cercle vicieux consistant à mettre de côté les bonnes pratiques lorsqu’on intervient sur un projet legacy. Au contraire elles sont d’autant plus utiles sur un tel projet. Il faut simplement adapter la manière de les appliquer. Il suffit en général d’initier l’ajout d’une bonne pratique pour enclencher un cercle vertueux, le plus dur est de commencer. On finit même par y prendre goût et à tirer plus de satisfaction à mettre à niveau un projet legacy qu’à construire un projet “from scratch”.

Une conférence présentée par

Rachid HAMMAOUI
Rachid HAMMAOUI
Développeur PHP depuis plus de 15 ans, Rachid est un adepte du framework Symfony (depuis la version 1 !) qu'il utilise au quotidien et auquel il contribue. Rachid a également eu la chance d'enseigner ce framework durant 3 ans à l'université Catholique de Lille en tant qu'intervenant. Il est un convaincu du mouvement "Software craftsmanship" dont il essaie d'appliquer les principes au quotidien tout en restant pragmatique dans ses choix. Il tire beaucoup de satisfaction à explorer et améliorer du code "legacy" un peu comme on rénove une voiture ancienne : dans les règles de l'art et en respectant son histoire.

Autres intervenants