11 Mai 2023
Ceux qui suivent ce blog savent que je n’en suis plus à faire mes premières armes en matière de développement logiciel ; sur plus d’une vingtaine d’années d’expérience, j’ai vu passer quelques mutations dans notre métier, et pas seulement du point de vue technologique. Notre secteur est encore jeune et cherche encore à se structurer, à s’outiller, à se professionnaliser. Le mouvement de l’artisanat logiciel (ou Software Craftsmanship), né il y a quinze ans, commence à se faire entendre et ses principes sont de plus en plus largement adoptés au sein des entreprises. Deux présentations du dernier Devoxx France (« Le Craft : des concepts au déploiement à l'échelle » par Matthieu VINCENT et Guillaume LE DAIN de Sopra Steria) ; et « Du bonheur dans le Craft » par Cédric MAGNE et Hippolyte DURIX de Ippon Technologies) abordent le sujet du « craft » avec des points de vue différents mais également de nombreux points communs. L’un de ces points communs est la mise en avant de la qualité. L’évocation régulière de la qualité logicielle dans les médias qui abordent la question du craft serait-il le signe que l’artisanat logiciel est le fer de lance du renouveau de la qualité ?
Le fait que je mentionne un « renouveau » suggère que la qualité serait tombé en désuétude après une période faste. En effet, au début des années 2000, au moment où je débutais ma carrière, la qualité logicielle était au cœur des préoccupations des sociétés de services informatiques et de leurs clients. Aux efforts que ces sociétés consacraient à l’obtention ou au renouvellement des certifications ISO s’ajoutaient ceux qui permettaient d’afficher la maturité la plus élevée possible sur des échelles telles que le Capability Maturity Model Integration (CMMI). Cet âge d’or de la qualité s’inscrivait alors dans une quête d’industrialisation des métiers de l’informatique. Les recette fordiennes qui avaient assuré le succès des industries classiques devaient pouvoir s’appliquer à l’informatique : il fallait fixer des objectifs parfaitement spécifiés, et définir des processus et les outils associés pour supporter et mesurer l’avancement des projets. L’assurance qualité s’occupait de la définition des processus pendant que le contrôle qualité s’assurait de leur bonne mise en œuvre. Pourtant au tournant du nouveau millénaire, le constat est décevant : trop de projets échouent encore, soit parce qu’ils ne délivrent pas le bon produit, soit parce qu’ils ne respectent pas les budgets.
Le premier tournant qui me semble mettre à mal la qualité logicielle est celui de l’essor du mouvement agile, ou plus exactement de certaines de ses dérives. En 2001, le manifeste agile est rédigé et propose quatre piliers qui viennent remettre en cause les orientations suivies jusque là pour mener les développements logiciels. L’assurance et le contrôle qualité, au cœur de ces approches, sont indirectement mis en cause par trois des quatre principes :
Non seulement ces principes de l’agilité ont bousculé les piliers de la qualité logicielle, mais leur application déséquilibrée en a renforcé l’impact. En effet, la diffusion du manifeste agile, souvent orale, s’est accompagnée d’une déformation des principes. Et plutôt que de lire « Un logiciel fonctionnel plutôt qu’une documentation exhaustive », certains ont entendu « Pas de documentation » ; cette remarque s’applique aux autres principes qui ont ainsi été compris « Pas de processus » et « Pas de plan ». Plutôt qu’une adaptation des principes de la qualité logicielle aux méthodes agiles, ces excès ont conduit à éliminer purement et simplement la qualité de nombreux projets.
Le second tournant qui a fragilisé la qualité logicielle telle qu’elle existait au tournant des années 2000 est celle de l’émergence de ce qu’on regroupe aujourd’hui sous le nom de DevOps et qui ne portait alors que le nom d’Intégration Continue. L’émergence progressive de l’outillage associé au DevOps a en effet consisté à automatiser les activités qui permettent de projeter l’application de son code source vers un logiciel exécutable dans son environnement de production. Pour mitiger le risque de remplacer accidentellement une version opérationnelle du système par une version inopérante, les chaînes d’intégration, de livraison et de déploiement continu ont progressivement intégré des mécanismes de contrôle, eux aussi automatiques. Or, une partie de ces contrôles correspond à l’activité de contrôle qualité qui était portée par des ingénieurs qualité et leur outillage. Autrement dit les activités de contrôle et les outils des ingénieurs qualité ont été intégrés dans des chaînes automatiques, donnant le sentiment que les ingénieurs qualité n’étaient plus utiles qu’à contrôler des artefacts documentaires (pour les projets qui ne pensaient pas par ailleurs que l’agilité leur dictait « Pas de documentation »).
Après ces deux tournants, le rôle des qualiticiens sur les projets a de moins en moins été apprécié. Le gardien du temple en a été chassé et de mauvaises choses sont arrivées. De plus en plus nombreux furent les projets à partir sur une démarche d’improvisation permanente avec le faux sentiment de sécurité de contrôles automatiques qui avaient exclu tout jugement humain. Et la question s’est alors posée : pourquoi, alors que nous appliquons des méthodes agiles et que nous outillons nos développements, nos projets ne sont-ils pas plus souvent des succès ? Certains signataires du manifeste agile n’ont pas tardé à mettre le doigt sur le problème : on avait progressivement négligé les fondamentaux techniques de notre métier du développement logiciel. Le manifeste du Software Craftsmanship propose un rééquilibrage des valeurs de l’agilité pour renforcer la valeur technique. Et certains de ces rééquilibrages ressemble à ce que la qualité proposait d’apporter aux projets :
En notant cette convergence entre les principes de l’artisanat logiciel et la qualité des années 2000, on serait tenté de conclure à un renouveau qui se contente d’appeler « artisan logiciel » ce qu’on appelait anciennement « ingénieur qualité ». Ce raccourci n’aurait pourtant pas de sens :
Si l’artisanat logiciel ne peut pas simplement être qualifié de « qualité 2.0 », ce mouvement culturel porte en lui un facteur décisif : alors que l’ingénieur logiciel en 2000 pouvait s’astreindre à respecter un certain niveau de qualité par contrainte, l’artisan logiciel d’aujourd’hui fait le choix de la qualité par professionnalisme et par souci du « travail bien fait ». Comme tout courant culturel, l’artisanat logiciel est menacé de dérives dogmatiques et l’avenir nous dira si un nouveau rééquilibrage doit s’opérer. Mais ce mouvement est aujourd’hui celui qui nous rappelle, qu’en tant que professionnels du développement, nous ne pouvons pas travailler sans prêter attention à la qualité logicielle.