Logiciel • 09.10.2026

Le software craftsmanship rend le code durable, pas seulement fonctionnel

Serge
Software craftsmanship : code durable et tests artisanaux
INDEX +
Le software craftsmanship rend le code durable, pas seulement fonctionnel

Le software craftsmanship, ou artisanat logiciel, défend une idée simple : un logiciel ne vaut pas seulement parce qu’il fonctionne aujourd’hui, mais aussi parce qu’une équipe peut le comprendre, le corriger et le faire évoluer demain. Cette approche place la qualité du code, la responsabilité professionnelle et l’apprentissage continu au centre du développement.

Le software craftsmanship, une culture de la qualité logicielle

Le software craftsmanship n’est ni un langage, ni une méthode de gestion de projet, ni une certification. C’est une culture de métier appliquée au développement logiciel. Le développeur ne se limite pas à produire une fonctionnalité conforme à une demande : il cherche à concevoir un code lisible, testé, robuste et adapté au problème réel.

Le terme craftsmanship renvoie au savoir-faire de l’artisan. Dans le logiciel, cette analogie ne signifie pas travailler seul ni rejeter l’industrialisation. Elle rappelle plutôt qu’un produit numérique durable dépend de décisions techniques prises avec soin : choix d’une architecture proportionnée, clarté des noms, séparation des responsabilités, automatisation des vérifications et capacité à corriger le code sans créer de régressions.

Un logiciel opérationnel peut rester difficile à faire vivre

Une application peut respecter son cahier des charges tout en étant coûteuse à maintenir. Du code dupliqué, des règles métier dispersées, des tests absents ou une architecture surchargée ralentissent chaque évolution. Les bugs récurrents et les délais de maintenance corrective deviennent alors un problème produit, pas seulement une question technique.

Le craft vise à réduire cette non-qualité en traitant le code comme un actif durable. Il ne promet ni l’absence de défauts ni une conception parfaite dès le départ. Il encourage plutôt des choix réversibles, des retours fréquents et l’amélioration progressive du système existant. Une équipe peut ainsi livrer une première version sans renoncer à la possibilité de la faire évoluer proprement.

Du manifeste Agile au manifeste de l’artisanat du logiciel

Les racines intellectuelles du mouvement s’inscrivent dans les débats sur la professionnalisation du développement. Jack W. Reeves, Andy Hunt, David Thomas et Pete McBreen comptent parmi les auteurs et praticiens souvent associés à cette réflexion. Les repères de 1992, 1999 et 2001 illustrent une maturation progressive des discussions sur le métier, avant l’essor plus visible du mouvement à la fin des années 2000.

Le Manifeste Agile, publié en 2001, a marqué cette évolution avec ses 4 valeurs fondamentales et ses 12 principes. Il a remis l’accent sur la collaboration, l’adaptation au changement et la livraison fréquente de valeur. Le software craftsmanship prolonge cette dynamique avec une exigence technique : la vitesse de livraison ne doit pas se payer par un code impossible à maintenir.

Le manifeste de 2009 : aller au-delà du logiciel qui marche

Le manifeste pour l’artisanat du logiciel, associé à 2009, met notamment en avant des logiciels bien conçus, l’amélioration constante des compétences, une communauté professionnelle et des partenariats productifs avec les clients. Son propos n’est pas d’opposer technique et métier. Il affirme que la qualité de fabrication rend la valeur métier plus durable.

Cette position répond aussi à certaines dérives : externalisation réduite à un simple coût, équipes séparées de leurs décisions ou livraison de fonctionnalités sans responsabilité sur leurs effets à long terme. Le craft redonne au développeur une place de professionnel capable d’expliquer ses arbitrages, d’alerter sur les risques et de proposer une solution pragmatique.

Les pratiques qui rendent le code plus sûr à modifier

Le software craftsmanship se reconnaît moins à un rituel unique qu’à un ensemble de pratiques cohérentes. Leur objectif commun est de raccourcir la boucle entre une décision, sa vérification et son amélioration. L’équipe choisit celles qui répondent à ses contraintes, sans transformer le processus en dogme.

  • Clean Code : écrire un code compréhensible, avec des responsabilités explicites et une complexité maîtrisée.
  • TDD (Test Driven Development) et BDD (Behavior Driven Development) : expliciter le comportement attendu et sécuriser les évolutions par des tests automatisés.
  • Refactoring : améliorer la structure interne du code sans modifier son comportement observable.
  • Pair Programming et Mob Programming : produire et relire collectivement, tout en diffusant les connaissances.
  • SOLID, Domain Driven Design et architecture hexagonale : structurer le système lorsque ces outils apportent réellement de la clarté et de l’évolutivité.

La boussole technique : chercher le prochain changement

Pour décider si une pratique est utile, une bonne boussole consiste à ne pas regarder uniquement la fonctionnalité en cours, mais le prochain changement probable. Une règle métier va-t-elle varier selon un pays, un contrat ou un canal de vente ? Une dépendance externe risque-t-elle d’être remplacée ? En imaginant cette modification, l’équipe repère les zones à isoler, les scénarios à tester et les abstractions inutiles.

Cette projection évite deux écueils opposés : coder trop vite pour aujourd’hui et surconcevoir un système pour un futur imaginaire. Le pragmatisme consiste à préparer les évolutions plausibles sans construire une architecture disproportionnée. Une abstraction n’a de valeur que si elle clarifie réellement le changement à venir.

La qualité se construit dans le flux de travail

Une revue de code ponctuelle ne compense pas un développement mené dans l’urgence, sans tests ni échanges. La qualité devient réelle lorsqu’elle est intégrée au quotidien : intégration continue, petites modifications, feedback rapide, revues utiles et temps assumé pour résorber la dette technique.

DevOps complète cette logique en rapprochant la conception, le déploiement et l’observation du logiciel en production. L’équipe peut ainsi vérifier plus rapidement les effets de ses décisions et corriger les problèmes avant qu’ils ne s’installent. La dette technique n’est pas supprimée par une pratique isolée : elle se maîtrise par des choix réguliers et visibles.

Agile, software engineering et craft : des rôles différents

Ces notions se recouvrent parfois, mais elles ne répondent pas exactement à la même question. Agile organise surtout la capacité d’une équipe à apprendre avec le client et à s’adapter. Le software engineering fournit un cadre large pour concevoir, construire et exploiter des systèmes. Le craftsmanship porte une attention particulière au geste technique et à la qualité interne du produit.

Approche Question centrale Apport principal
Agile Comment livrer de la valeur et s’adapter ? Collaboration, itérations courtes, retours du client.
Software engineering Comment construire un système de façon maîtrisée ? Méthodes, architecture, processus, fiabilité et exploitation.
Software craftsmanship Comment produire un code dont on peut être responsable dans la durée ? Excellence technique, pratique délibérée, transmission et maintenabilité.

Opposer Agile et craft serait donc trompeur. Une équipe peut être agile dans sa relation au produit tout en accumulant une dette technique qui freine ses prochaines itérations. À l’inverse, une excellence technique isolée des besoins utilisateurs manque sa cible. La complémentarité se joue dans l’équilibre : écouter le marché, livrer régulièrement et préserver la capacité de changer.

Faire progresser une équipe sans transformer le craft en élitisme

Le software craftsmanship n’est pas réservé aux développeurs expérimentés. Il demande surtout de la curiosité, de l’humilité et une pratique régulière. Un débutant peut apprendre à écrire un test simple, à demander une revue de code ou à nommer clairement une fonction. Un profil senior peut approfondir la transmission, les compromis d’architecture et l’accompagnement des décisions collectives.

  1. Choisir un irritant concret : une zone fragile, des bugs fréquents ou une fonctionnalité coûteuse à modifier.
  2. Définir un petit progrès observable, par exemple ajouter des tests autour d’une règle métier avant de la changer.
  3. Travailler à deux sur une partie sensible pour rendre les raisonnements explicites.
  4. Planifier un refactoring limité, puis vérifier que le comportement reste stable.
  5. Partager le retour d’expérience pour que l’amélioration bénéficie à toute l’équipe.

La transmission distingue particulièrement cette démarche. Lire du code ensemble, organiser des katas, pratiquer le mentorat ou analyser une décision qui a échoué construit une mémoire collective. Ces activités rendent les choix techniques discutables et compréhensibles, au lieu de les laisser dépendre d’une seule personne.

L’objectif n’est pas de juger les personnes selon une pureté technique, mais d’élever progressivement le niveau de fiabilité, de lisibilité et d’autonomie de l’équipe. Le software craftsmanship devient alors une démarche concrète : apprendre, tester, corriger, transmettre et conserver la capacité de faire évoluer le logiciel.

⚠️ Information : Vous recherchiez l'association La Bulle Technologique ? Le site labulletech.com n'est plus le site officiel de l'association. Vous pouvez retrouver leurs activités ici : Site officiel de l'association ou sur leur page Facebook.