Vos premiers pas dans l'artisanat logiciel
[Rediffusion de l'article du 21 septembre 2022.]
La question revient fréquemment :
"Je sens que l'artisanat logiciel est important, mais par où commencer ?"
Excellente question ! Oui, excellente car elle contient déjà une partie de la réponse : "je sens que [c']est important". Il y a déjà en germes le désir d'apprendre, d'améliorer sa pratique, de faire mieux.
Et c'est bien l'essentiel. Car l'artisanat logiciel (ou "Craft") ne se définit pas par ses pratiques mais par ses valeurs : l'amour du travail bien fait, l'humilité, le désir d'apprendre et de transmettre son savoir. L'amélioration continue chevillée au corps (soyons lyriques 🎵).
Bon, mais concrètement ?
J'y viens 🙂
Voici un menu qui me semble avoir du sens :
-
En entrée, un peu de Clean Code, pour ouvrir l'appétit. Le sujet est vaste, mais comprendre l'importance d'un bon nommage, du SRP (Single Responsibility Principle) et des niveaux d'abstraction, c'est déjà très bien.
-
En plat de résistance : il faut quelque chose qui tienne au corps. Partons sur du Test-driven development, et en accompagnement quelques principes de base de la programmation fonctionnelle. Pas besoin d'employer les gros mots (functors, monades…), mais déjà comprendre ce qu'est une fonction pure et pourquoi c'est utile, et puis l'immutabilité. Ah, ça oui : l'immutabilité est au code ce que la saucisse est aux lentilles (*).
-
En dessert, oui là on peut aller vers du Domain-driven design. C'est assez riche, donc on peut laisser passer un peu de temps avant de s'y attaquer, ou faire un trou normand, c'est selon. Le Behavior-driven development, quant à lui, tiendra lieu de café.
Et le refactoring ?
Le refactoring, c'est un repas à part entière. Si l'on n'a pas bien digéré le précédent, mieux vaut ne pas s'y risquer tout de suite. Car avant d'apprendre comment amener un code existant à la cible, il faut déjà être au clair sur la cible. Et pour vous donner un avant-goût du sujet, le "comment" implique de parler de Golden Master, Méthode Mikado et Strangler Fig pattern.
Il n'y a pas d'urgence à apprendre le refactoring. Progresser sur les 3 piliers de l'artisanat logiciel (lisibilité, testabilité, modularité), c'est déjà créer moins de dette technique 👍.
Mais bon, on le sait, il n'y a pas qu'un seul chemin. Le Craft, ce sont d'abord des rencontres. Des gens qui m’ont tendu la main, peut-être à un moment où je ne pouvais pas, où j’étais seul chez moi… pardon, je m'égare.
Il y a du vrai : certaines personnes vous feront progresser plus que d'autres grâce à leur compétence, leur faculté pédagogique et leur enthousiasme communicatif. C'est ce que j'ai vécu et continue de vivre.
Mais, avant cela, il n'y a même pas une seule destination. On peut vouloir creuser un sujet plus qu'un autre, par curiosité, par plaisir, par besoin, et c'est très bien comme ça. Le champ de savoir est infini.
Bon été et à bientôt ! 🏝️🍹🌞
(*) Moins de métaphores culinaires S.V.P.