L’artisanat n’est pas l’apanage de quelques artistes créateurs… Depuis quelques années, il sort du monde des objets pour se répandre au milieu informatique afin d’aider les développeurs à produire des logiciels de meilleure qualité. Rendez-vous en terre informatique avec Bayrem Jrad, consultant chez Wemanity qui lève le voile sur les mystères de “l’artisanat logiciel”.
1. L’artisanat logiciel pour les nuls
2. Un code plus souple et ouvert à l’amélioration continue
3. Comment devenir un artisan logiciel ?
4. Le manifeste du software craftsmanship
5. Différence entre software engineering et software craftsmanship
1. L’artisanat logiciel pour les nuls
Si l’agilité s’est installée au cœur des entreprises depuis ces dernières années, elle s’incarnait jusqu’alors plutôt par la mise en place de frameworks comme Scrum, ou la création de nouveaux métiers business tels que le Scrum Master ou le Product Owner. Dans les deux cas, apporter un maximum de valeur ajoutée au client restait au centre des préoccupations. Mais là où l’agilité se concentre surtout sur les processus et les méthodes pour accéder à cette qualité, le software craftsmanship redonne à l’humain et aux développeurs une place majeure au sein de cet écosystème.
C’est en 2008 que la notion de software craftsmanship apparaît pour la première fois, sous l’impulsion de Robert C. Martin, ingénieur logiciel américain et co-auteur du manifeste agile (2001). Ce mouvement, issu du monde logiciel, s’inspire alors des concepts développés dans un livre publié en 1999 par de Andy Hunt et David Thomas intitulé « The pragmatic programmer: from journeyman to master »; véritable bible à destination de tous les programmeurs informatiques. Ce dernier mentionne qu’un bon logiciel ne se doit pas uniquement d’être fonctionnel mais doit surtout être bien conçu, ce qui nécessite de revenir à des méthodes artisanales dans le développement informatique, notamment en mettant l’accent sur la création d’une communauté de professionnels et collaborative qui puisse créer collectivement de la valeur ajoutée.
2. Un code plus souple et ouvert à l’amélioration continue
Concrètement, cette orfèvrerie du logiciel se traduit lors de l’écriture du code, afin de pouvoir le rendre assez souple pour évoluer rapidement selon les besoins du client avec le temps. Un code suffisamment simple et intelligible qui permette d’accueillir facilement des modifications ultérieures, voire d’ajouter des fonctionnalités nouvelles, comme l’explique Bayrem Jrad, consultant chez Wemanity “Pour vous donner un exemple, si on veut créer une voie pour aller d’une ville A à B, on peut soit décider de construire une simple autoroute dès le début, ou au contraire anticiper des futures bifurcations vers d’autres villes en amont du projet, et donc laisser la route principale assez flexible pour ne pas rendre la tâche plus complexe dans le plus long terme.”
Et la métaphore routière tombe à pic pour expliquer le long chemin qui mène au software craftsmanship. Car ce dernier représente la continuité logicielle de l’agilité en proposant un code plus flexible dès sa conception, pour gagner ainsi du temps de développement et éviter le “code legacy”, qui comporte la dette technique d’un code trop rigide que l’on ne peut plus vraiment changer. À l’arrivée, le produit délivré au client possède une meilleure durée de vie et reste ouvert aux changements à moindre coût, ce que confirme Bayrem : “Aujourd’hui dans l’industrie logicielle, quand on remet en place une nouvelle équipe pour modifier un code et développer de nouveaux besoins, cela peut coûter plus cher à l’entreprise. Car ce qui a déjà été conçu auparavant n’est pas toujours ouvert à la modification ou à l’extension. Avec le software craftsmanship, on met en place des pratiques qui s’inscrivent dans une démarche d’amélioration continue”.
Comment mettre en pratique le software craftsmanship ?
3. Comment devenir “artisan du logiciel” ?
L’artisanat du logiciel, ou software craftsman, est un état d’esprit qui doit être favorisé par une certaine culture d’entreprise et un ensemble de pratiques. Le software craftsman travaille tel un funambule qui oscille constamment entre la satisfaction des besoins de l’utilisateur et la création d’un code de qualité. Pour encourager le déploiement de ce type de postures au sein de votre organisation, il est essentiel de cultiver un environnement dans lequel les développeurs vont pouvoir bénéficier d’une culture d’apprentissage et de partage continue, à l’instar de Bayrem chez Wemanity “Avant, je cherchais à suivre des bonnes pratiques mais sans le savoir. J’ai découvert l’artisanat du logiciel chez Wemanity où j’ai pu accéder à certaines formations, ainsi qu’à un réseau d’experts qui m’a permis de devenir software craftsman.
Un écosystème favorable à l’essor de l’intelligence collective qui repose également sur certaines pratiques, comme le découpage de projets en modules afin de pouvoir en corriger des parties sans en revoir l’intégralité, mais aussi le recours fréquent à des tests dans l’intégration des différents modules. “Pour implémenter les valeurs du software craftsmanship dans le développement d’un logiciel, on utilise certaines méthodologies comme le TDD (développement piloté par les tests), qui consiste à écrire le code en suivant des tests. Dans le cadre de la mise en place d’une application de gestion des ressources humaines, on peut définir plusieurs critères qui vont déterminer que pour valider un congé, il faut avoir un solde et l’approbation de son supérieur hiérarchique. Dans le code, on va faire en sorte que la fonctionnalité souhaitée soit guidée par des tests..” ajoute Bayrem.
Et si le TDD ne lui conviendrait pas, l’artisan du logiciel bénéficie d’une boîte à outils bien garnie pour réaliser son œuvre tels que:
- La BDD (Behavior Development Driven ou Programmation orientée par le comportement), qui encourage la collaboration et la communication entre les développeurs, les ingénieurs et les intervenants non techniques durant le développement d’une application, afin de formaliser une compréhension commune de la manière dont l’application doit se comporter.
- Le DDD (Domain Driven Design), qui encourage à découper l’architecture de l’application en plusieurs Domain afin d’organiser plus le code source, lui donner une expressivité métier et créer un terrain de communication plus souple entre les développeurs et les experts métiers
- La KISS (Keep It Simple, Stupid ou Garde ça simple et stupide), qui préconise de créer un code suffisamment simple pour qu’il puisse être maintenu le plus longtemps possible et être réexaminé de manière efficace dans le futur.
- Le YAGNI (You Ain’t Gonna Need It ou Tu ne vas pas en avoir besoin), qui consiste à ne pas développer des fonctionnalités inutiles, afin de pouvoir avancer plus efficacement dans les projets.
- Le DRY (Don’t Repeat Yourself ou Ne te Répète Pas), qui cherche à automatiser et à optimiser ce qui a déjà été fait au sein du code, en évitant de répéter deux fois le même code dans un même système.
4. Le manifeste du software craftsmanship
Plus qu’une énième méthode de programmation logicielle, le software craftsmanship doit aussi correspondre à un engagement de la part de vos collaborateurs à s’inspirer des valeurs du “manifeste de l’artisan de logiciel” :
- Pas seulement des logiciels, mais des logiciels bien conçus
- Pas seulement l’adaptation au changement mais aussi l’ajout constant de la valeur
- Pas seulement des individus et leurs interactions, mais aussi une communauté de professionnels qui soient ouverts à la critique
- Pas seulement des collaborations clients mais des partenariats productifs
Une philosophie qui privilégie la collaboration entre les développeurs et un partenariat sur le long terme avec le client, mais aussi la création d’une valeur ajoutée constante, comme l’affirme Bayrem. “D’un point de vue organisationnel, le software craftsmanship est un investissement de départ nécessaire qui nous permettra d’éviter d’autres investissements inutiles par la suite. Cela permet d’avoir des produits de meilleure qualité avec une meilleure satisfaction du client final.”
5. Quelle différence entre software engineering et software craftsmanship ?
Finalement, on peut se demander ce qui distingue vraiment le software craftsmanship du simple software engineering. Et la frontière est fine… Alors que l’ingénierie logicielle se concentre sur l’objectif final de la programmation d’un logiciel qui se doit d’être fiable et efficace, dans le software craftsmanship, on s’attachera davantage à la partie artisanale (et donc qualitative) de sa conception, mais également aux compétences du crafstman. En ce sens, le software craftsman conçoit alors son programme comme un art qui émerge et va évoluer avec le temps, ce qui lui laisse une plus grande souplesse dans son développement.
Cependant, bien que les deux disciplines cherchent à satisfaire le client et délivrer un produit de qualité avec un minimum de risques, l’artisan logiciel va rechercher à établir des bonnes pratiques basées sur son expérience qu’il sait mouvante et évolutive, comme le rappelle Bayrem : “La seule chose constante dans le développement d’applications est le changement.” Une différence majeure avec l’ingénierie logicielle, qui s’acquiert au prix d’un petit effort organisationnel et humain au sein de vos équipes, “Se lancer dans l’artisanat de logiciel nécessite beaucoup de collaboration et de communication parmi les collaborateurs, mais surtout une grande ouverture d’esprit aux critiques et aux feedbacks”.
Dans un monde qui doit constamment faire face à de nouveaux défis numériques, il est crucial de développer des applications qui soient à la fois performantes et évolutives dans le temps. Une mission qui n’est possible que si l’on repense la place du développeur dans l’écosystème projet. En valorisant la partie artisanale du métier, le software craftsmanship en redéfinit non seulement les contours, mais permet surtout de l’inscrire au cœur d’une démarche de qualité qui répond aux contraintes modernes de l’entreprise.