Software Craftsmanship
Le Software craftsmanship (ou l'"artisanat du logiciel") est une approche de développement de logiciels qui met l'accent sur les compétences de codage des développeurs. Il se propose comme une réponse aux maux récurrents de l'industrie du logiciel et à la tendance à l'externalisation. Il inclut la priorisation des préoccupations financières vis-à-vis de la responsabilité du développeur.
Ce mouvement prône le côté artisanal du développement logiciel, autrement dit, d'après le manifeste de l'artisanat du logiciel, il ne suffit pas qu'un logiciel soit fonctionnel, mais il faut qu'il soit bien conçu. L'idée principale est de garantir la fiabilité et la maintenabilité des applications d'où l'importance de professionnels aptes à concevoir des logiciels dans le respect d'indicateurs de qualité logicielle. Le software craftsmanship et l'agilité sont alors complémentaires, car là où l'agilité se limite à la souplesse des cycles de développement, le software craftsmanship s'étend sur la façon même dont est conçu et écrit le code.
Le manifeste des « Artisans du logiciel »
En tant qu’aspirants « Artisans du Logiciel », nous relevons le niveau du développement professionnel de logiciels par la pratique et en aidant les autres à acquérir le savoir-faire. Grâce à ce travail, nous avons appris à apprécier :
- Pas seulement des logiciels opérationnels, mais aussi des logiciels bien conçus.
- Pas seulement l'adaptation aux changements, mais aussi l'ajout constant de valeur.
- Pas seulement les individus et leurs interactions, mais aussi une communauté professionnelle.
- Pas seulement la collaboration avec les clients, mais aussi des partenariats productifs.
Fondamentalement : un retour non référencé à XP
Finalement, il ressort de l’analyse de cette déclaration la constatation d’une reformulation des autres méthodes agiles et particulièrement d'XP :
- Qualité : conception simple (DDD, OO), clean code et refactoring, tests dont TDD (XP)
- Humilité : je me remets en question et je m’améliore en continu (rétrospectives de Scrum)
- Partage : binomage, pair programming et propriété collective du code (XP)
- Pragmatisme : je comprends les contraintes et m’adapte si nécessaire (rétrospectives de Scrum)
- Professionnalisme : je traite mon client comme un partenaire (principe du « courage » d’XP)
Un juste équilibre pour la qualité
- Construire un logiciel de qualité ne veut pas dire rechercher la perfection absolument et bâtir une cathédrale pour chaque produit.
- Il ne s’agit pas non plus de construire au plus vite l’application qui répond au besoin mais risque de s’effondrer à tout instant.
Construire un logiciel de qualité, c’est chercher cet équilibre, créer un système qui réponde à des besoins tout en reposant sur des bases saines.
La non qualité a un coût stratégique, mais aussi financier : une application truffée de défauts sera toujours plus coûteuse à faire évoluer, et les clients qui n’ont plus confiance risquent de ne plus vouloir payer.
Enfin, et on l’oublie souvent, la non qualité a un coût humain : travailler dans ce cadre devient vite démotivant, notamment pour les développeurs, au risque de voir les meilleurs partir dans une autre entreprise. Nous sommes convaincus que la majorité des gens ont la satisfaction du travail bien fait, et qu’il en va de même pour les développeurs, qui voudraient être fiers de leurs réalisations.
Atteindre un haut niveau de qualité, ce n’est pas simplement une question de produire des applications, du code de qualité : c’est une culture, une culture de la qualité logicielle.
Sources
Manifesto for Software Craftsmanship
http://manifesto.softwarecraftsmanship.org/
Blog Octo - Software Craftsmanship : une culture à transmettre
http://blog.octo.com/software-craftsmanship-une-culture-a-transmettre/
Être Craftsman, c’est un état d’esprit
https://www.novencia.com/craftsman-presentation/
Wikipédia - Software craftsmanship