Le craftsmanship, la vie S.O.L.I.D.

Pour les sociétés IT, il est devenu vital de produire de plus en plus vite et cela bien souvent au dépend de la qualité. Au travers un parallèle entre artisanat et software craftsmanship, comment répondre aux impératifs de vitesse de notre société sans que ce soit au détriment de la qualité ?

Le craftsmanship, la vie S.O.L.I.D.
Ce titre et cet article font référence et rendent hommage à l'excellent livre d'Arthur Lochmann, La vie solide, la charpente comme éthique du faire, qui m'a inspiré la réflexion décrite ici. De plus, l’homonymie entre “solide” et “S.O.L.I.D.” sert à merveille son dessein : expliquer comment le software craftsmanship, par ses pratiques et ses valeurs, permet de conjuguer, sans les galvauder, la qualité logicielle et l’évolutivité avec le besoin de vitesse propre au mode de consommation actuel.

La société liquide

“Une société liquide est celle dans laquelle les contextes d’action de ses membres changent en moins de temps qu’il n’en faut aux modes d’actions pour se figer en habitudes et en routines” - Zygmut Bauhman. 

Par cette définition, Bauhman met en exergue l’évolution incessante et toujours plus rapide de notre société sous l’influence de marchés naissants et mourants, ainsi que de l’évolution d’attentes de consommateurs toujours plus complexes à satisfaire. Notre société est en perpétuelle mutation et ses usages, produits, ou façons de faire ne cessent de changer.

Ce rythme effréné est d’autant plus intense dans le monde de l'informatique qui, par nature, permet la création rapide de contenus, consommables instantanément et partout dans le monde. De fait, la recherche de l’efficience maximale y est primordiale. Il faut être efficient dans la manières de capter formaliser ou de faire naître les besoins de nos clients. Il faut être efficient dans la manières de gérer les projets. Il faut être efficient dans la création et la mise à disposition des applications et, bien sûr,  dans la prise en compte des réactions des utilisateurs finaux.
Il est vital pour toute entreprise informatique de prendre en compte cette caractéristique : l’adaptation à ce monde liquide est essentielle à sa survie !

“It is not the most intellectual or the strongest of the species that survives; but the species that survives is the one that is able to adapt to and adjust best to the changing environment in which it finds itself.” - Leon C. Megginson. 


Il ne faut cependant pas se précipiter, mais le faire avec clairvoyance et en prenant en compte les faiblesses qui pourraient être une entrave à cette évolution. Et malheureusement, le monde actuel des entreprises informatique est plein de faiblesses :
  • Le développement logiciel est une discipline majoritairement exercée par une population peu expérimentée. Si on considère que l’informatique moderne fut créée par Alan Turing, celle-ci aurait un peu plus de 80 ans. Les premiers “développeurs logiciels” ne sont, quant à eux, apparus que dans les années 1970. En prenant en compte le nombre actuel de développeurs, cela signifie que depuis 1970, la population de développeurs a doublé tous les 5 ans. Ainsi, tous les 5 ans, nous avons plus de débutants que de personnes expérimentées. Et sans garde-fous, sans référentiel “solide” dans la manière de créer du logiciel, c’est tout naturellement que cette nouvelle génération va refaire les erreurs déjà commises par les générations précédentes : réinventer la roue, mal appliquer des technologies, ne pas anticiper des risques et problèmes. Sans enseignement ou ligne de conduite, c’est avec l’expérience qu’ils n’ont pas qu’ils devront compenser ces travers.
  • Les technologies évoluent à des vitesses folles. De nouveaux frameworks et plateformes apparaissent tous les jours et nous brûlons de les essayer quels que soient leur niveau de maturité et le niveau d’expérience  que l’on peut avoir sur le domaine, pourtant nécessaire à leur bonne compréhension, leur bonne utilisation et leur bonne intégration. Il est évidemment nécessaire de faire l’expérimentation de nouvelles technologies, mais il faut cependant le faire en ne cédant pas à la pression du mimétisme technologique. Ne confondons pas la veille, nécessaire à nos métiers,  et l’usage intensif en production de technologies non éprouvées. Veillons à prendre un peu de hauteur et à ne pas se précipiter : 20 ans de courbes de la hype du Gartner nous ayant appris une chose, nous sommes mauvais à déterminer les technologies qui perceront ou pas.
  • Les pratiques, les rôles et les responsabilités changent aussi : du commercial à l’architecte, en passant par le chef de projet et le développeur, tout évolue. Souvent ces changements sont initiés par une volonté de faire comme les autres, ceux qui ont réussi leur transformation, sans se poser la question du “pourquoi” de cette réussite. On en vient alors à utiliser, telle une formule magique, des noms de rôles et des cérémonies sans avoir fait l’effort d’en comprendre ni le sens ni les valeurs, mais en les adaptant, voire en les tordant, pour correspondre à notre organisation et notre culture, restées elles inchangées. Maslow disait “quand on n’a qu’un marteau, tout ressemble à un clou”; l'agilité a certainement pris quelques coups sur le crâne...

L’artisanat

Le propos de cet article n’est certainement pas de faire l’éloge de l’immobilisme mais simplement d’apporter un éclairage différent sur la manière de se transformer en tirant parti des valeurs du software craftsmanship. Le craftsmanship est une philosophie qui encourage ses adeptes à parfaire leur travail. Elle tire son nom, ses pratiques et ses valeurs de l’artisanat et du compagnonnage. Le compagnonnage a pour double but de former des Hommes en même temps que des professionnels qualifiés. Il permet à chaque individu l’accomplissement de ses possibilités culturelles et professionnelles, grâce à l’exercice de son métier et à la transmission des savoirs. L’artisanat promeut l’artisan comme responsable de son travail. Il est à la fois responsable du respect des règles de son métier et garant de la qualité de son travail. Il va faire l’effort de se donner les moyens de bien faire et va en tirer de la fierté. Et pour conserver ce sentiment de fierté, il va continuer à produire un travail de qualité et perpétuer la transmission des règles qu’il applique.

“On se sent d’autant plus responsable d’un projet qu’on a la main sur la qualité de ce dernier” - Arthur Lochmann. 

Ce travail n’est pas fait au travers de gestes tous séculaires et figés, mais au contraire grâce à des pratiques vivantes, l’artisan choisissant parmi les anciens et nouveaux matériaux et les anciennes et nouvelles méthodes de travail ceux qui lui permettront de remplir au mieux son office. C’est un choix lent, minutieux, réfléchi qui lui permet de mélanger le meilleur des pratiques éprouvées et des nouvelles technologies. L’artisan ne cherche pas à travailler vite, il cherche à travailler bien. Il apprend à le faire au travers de la pratique de son métier, de la répétition des gestes et par la transmission des savoirs amplifiée par le compagnonnage. Ce faisant, l’artisanat et son mode d’apprentissage ne suivent pas les comportements dictés par la société liquide. Cependant, loin d’être immobiles ou à contre-courant, ils se focalisent, comme le demande la société liquide, sur la production de valeur mais en investissant leur temps, leur énergie et  leurs moyens à la création d’un produit de qualité qui répond au besoin immédiat et le dépasse. C’est cette manière de faire, cette philosophie de travail qui anime le software craftsmanship. 

Le Software Craftsmanship

“I will do a good job. I will not rush. I will write tests. I will go fast by going well. I will not write crap. And I will practice, practice, practice so that I can be a professional.” - Robert Martin

Le software craftsmanship est une pratique née en 2001 mais qui s’est réellement développée à partir de 2008 en réaction à l’implémentation de l’agilité faite par la majorité des entreprises. L’application des  valeurs du Manifeste Agile comme règles de conduite exclusives a bien souvent amené à oublier la qualité du logiciel, “Working software over comprehensive documentation” étant bien souvent compris comme “Si le logiciel fait ce qu’on attend de lui, cela suffit”. Sous couvert d’une fausse agilité, la qualité logicielle a été sacrifiée sur l’autel de la productivité : "nous troquons un monde dans lequel le gros mange le petit pour celui où le plus rapide mange le plus lent". 

Mais ne confondons pas. Le software craftsmanship ne s’oppose pas à l’agilité, bien au contraire, il reprend ses valeurs et ses codes pour proposer une ligne de conduite qui prend en compte à la fois la qualité et la manière de l’atteindre: le “manifesto for software craftsmanship”.

Le manifeste donne un nouveau nom à son acteur principal, loin des métaphores actuelles du monde du développement logiciel, pour souligner les changements de la manière de travailler : un Programmeur ou un Développeur se concentre sur la production, un Craftsman, artisan du logiciel, se concentre sur la création de qualité et sur le partage de ses pratiques.Il propose aussi, comme valeurs essentielles du software craftsmanship, la production en continu, l’exigence de qualité, le partage de connaissances au travers des communautés d’experts et la nécessité de travailler en partenariat avec les utilisateurs.  Ces valeurs sont clé dans le fonctionnement du software craftsmanship et participent à son essor. En les acceptant et en les appliquant, les Craftsmen sont entraînés dans une boucle vertueuse. Tous les critères nécessaires à l’augmentation de leur motivation sont respectés : la maîtrise des pratiques de développement, le sens donné au travail en collaborant avec les clients et l’autonomie offerte par le mode de travail agile. Comme ils sont motivés et fiers de ce qu’ils font, ils vont continuer à appliquer les valeurs du manifeste et, en même temps, ils vont inspirer de nouvelles personnes et les convaincre, par l’exemple, du bien fondé du software craftsmanship.

La philosophie du software craftsmanship ne se limite pas au seul domaine de l’écriture de code. Le craftsmanship nous apprend à choisir nos projets, outils, frameworks et méthodologies avec sagacité, à les évaluer, comprendre le champ de leurs utilisations pour ne pas altérer la qualité des produits que nous fabriquons. Il nous enseigne aussi la manière de s’auto-former et de former les autres. C’est donc tout naturellement que nous devons appliquer cet enseignement à toutes les disciplines et à toutes les étapes de la création d’un produit :  le craftsmanship offre une réponse aux problèmes, explicités dans le présent article, auxquels les entreprises informatiques font face.Pour l’entreprise enfin, promouvoir le software craftsmanship c’est créer de la valeur grâce à ses employés qui vivent l’artisanat, au sens noble : “je vis de ce que je fais bien, ça fait du bien à ma boîte, et ça me fait du bien”. Travailler mieux tous ensemble, en respectant l’éthique de l'artisanat logiciel et les contraintes de vitesse de la société liquide.