Inspiré d’Agile, mais pas seulement, le Software Craftsmanship redéfinit le rôle du développeur pour répondre aux contraintes modernes des entreprises. Développer un logiciel de qualité nécessite non seulement le recours à des développeurs compétents, mais qui, de plus, aiment leur travail, y trouvent un sens et cherchent continuellement à progresser. François Lecomte, Développeur & Tech Community Energizer chez Wemanity, nous détaille sa génèse et ses principes fondamentaux.
1. Que recouvre le concept de « Software Craftsmanship » ? Quand est-il apparu ? Et pourquoi ?
F.L. : Le métier de développeur informatique a énormément évolué ces dernières années. La digitalisation des entreprises est bien sûr l’un des moteurs de cette évolution : le rythme d’apparition des nouvelles technologies ne cesse de s’accélérer, comme leur cycle d’obsolescence, et les entreprises exigent des délais de développement plus en phase avec le rythme d’évolution des marchés. Fini le temps où un projet informatique s’échelonnait sur plusieurs mois ou années, place à l’Agilité.
Si le 20e siècle fut celui de l’industrie, le 21e est celui de l’information. Aux grandes puissances industrielles – pétrole, automobile, armement, … – succèdent des entreprises dont l’activité repose sur la maîtrise de l’information, telles Google ou Facebook. Le monde industriel était caractérisé par la notion de réplication, portée aux nues par le Fordisme et le Taylorisme : un même produit était répliqué à des millions d’exemplaires et plus on produisait, plus la puissance de l’entreprise était importante. Au 21e siècle, le paradigme évolue. L’information est reine et si la réplication est synonyme de perte de valeur (du fait de l’évolution des modes de consommation), la personnalisation est le nouveau Graal. Les modes de fonctionnement évoluent vers plus d’échanges, de collaboration et d’analyse d’informations.
Le Software Craftsmanship est apparu après l’Agile, aux alentours de 2008. Il fait référence à la notion d’« artisanat » et donc de qualité des développements et s’inspire également de valeurs qu’on retrouve dans les arts martiaux, notamment humilité, respect et partage. Alors que les quatre valeurs de l’Agilité – expérimentation, collaboration, adaptation et interaction – se concentrent sur la souplesse des cycles de développement et ciblent tous les métiers, le Software Craftsmanship privilégie l’interaction et s’adresse exclusivement aux développeurs informatiques. Le Manifeste du Software Craftsmanship reprend les valeurs d’Agile, en les poussant un cran plus loin :
- 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
2. Comment appliquer ces concepts concrètement ?
F.L. : L’approche s’appuie sur 5 fondements principaux :
– Un vrai focus sur la qualité : on n’écrit plus du code juste pour répondre à un besoin, on se soucie également d’atteindre un haut niveau de qualité, correspondant à des standards ou des normes partagées, qui amélioreront considérablement la durée de vie du logiciel. Non seulement le nombre de bugs sera très réduit, mais il sera également plus simple et rapide pour les développeurs d’opérer des modifications.
– Humilité : il est essentiel de savoir se remettre en question régulièrement. Pour cela, il convient de prendre en compte le feedback des utilisateurs et de ses pairs, et de s’inscrire dans un cercle vertueux d’amélioration continue.
– Partage : chaque développeur doit admettre qu’il n’est pas expert en tout ! Le Software Craftsman aime partager ses développements pour recueillir des avis « extérieurs » et s’intéresser à ce que font les autres pour s’enrichir. Ici intervient la notion fondamentale de « collective ownership » : le code n’appartient à personne, c’est un bien commun qu’il convient de veiller à ne pas dégrader. Lorsqu’on n’est pas d’accord, on discute pour trouver des compromis.
– Pragmatisme : les projets ont des contraintes (budget, temps) qu’il convient de prendre en compte en s’efforçant de trouver des solutions simples et d’offrir de la souplesse.
– Professionnalisme : le client est un partenaire. Il a le droit de se tromper, de changer d’avis, de ne pas être disponible et bien sûr, de critiquer. Il revient au développeur de proposer des solutions alternatives. La notion d’individualité disparaît au profit de l’équipe et rien n’est jamais parfait.
Donc, les deux principales valeurs sont la qualité et l’interaction ?
F.L. : Exactement. On le voit, la démarche est entièrement centrée sur la qualité. D’où la référence à l’artisan qui crée un produit unique, à la différence de l’industriel qui réplique un même produit en grande quantité. Cette notion de qualité est au cœur de l’ouvrage « The Clean Code » de Robert C. Martin, qui présente les bonnes pratiques de développement logiciel et explique comment qualifier la qualité d’un code informatique. On remarque que les tests deviennent une composante essentielle du processus de développement. On ne teste plus à la fin du projet, mais on s’affranchit de la phase de spécifications en rédigeant les tests avant le code (approches « Test First » et « Test-driven development»), ce qui offre d’importants gains de temps et de qualité.
Parallèlement, le Software Craftsmanship met en relief la notion de communauté. Un développeur ne travaille pas seul. Il commence sa journée par un point rapide (« stand-up ») où il échange avec les autres membres de l’équipe et les partenaires, pour s’assurer que les tâches de chacun s’inscrivent toujours dans les objectifs qui ont été fixés. Au final, il ne consacre à l’écriture du code que 10 % de son temps, alors qu’il en dédie 50 % à la lecture du code et 40 % aux échanges, au partage et à la synchronisation avec l’équipe. Il est, en réalité, beaucoup plus ouvert que les codeurs d’antan : l’interaction (avec l’équipe, mais également avec l’extérieur, via les réseaux sociaux et les forums) devient un prérequis.
3. Pourquoi le Software Craftsmanship est un passage obligé aujourd’hui ?
F.L. : Le monde change. 80 % des entreprises actuelles auront certainement disparu dans les cinquante prochaines années. Les entreprises ont besoin de se transformer, et pas uniquement au niveau de leur maîtrise des nouvelles technologies, mais également et surtout en interne, au niveau de leurs processus, de leur culture et de leur organisation, en encourageant l’Agilité.
Ce qui n’induit pas que le rôle des développeurs informatiques soit négligé… bien au contraire. Et ici, le bien-être et la qualité de vie au travail prennent toute leur importance. On ne raisonne plus en termes d’heures de présence, mais de résultats. Les entreprises doivent comprendre que les développeurs qui maîtrisent les toutes dernières technologies sont conscients à la fois de leur valeur et de leur rareté. La pénurie de profils technologiques pointus augmente tous les ans (40 000 postes de développeurs ne sont pas pourvus en France et plus d’un million dans le monde) et ils le savent. Au-delà d’améliorer drastiquement la qualité des développements, le Software Craftsmanship offre aux développeurs de l’autonomie et du sens, tout en s’inscrivant dans une démarche communautaire. C’est un moyen de progresser continuellement et indirectement de les fidéliser.
Plus un état d’esprit qu’une méthodologie formelle, le Software Craftsmanship s’enracine peu à peu dans les équipes de développement, car il concilie une exigence de qualité qui permet de répondre précisément et rapidement aux besoins des clients, avec un objectif d’amélioration continue des compétences des développeurs. Satisfaction garantie à la clé, à la fois pour les clients et les développeurs !
Pour aller plus loin :
Tout ce que avez toujours voulu savoir sur le Software Crafstmanship, c’est ici.
En résumé :
Le Software Craftsmanship est apparu après l’Agile, aux alentours de 2008. Il fait référence à la notion d’« artisanat » et donc de qualité des développements et s’inspire également de valeurs qu’on retrouve dans les arts martiaux, notamment humilité, respect et partage.
Le Manifeste du Software Craftsmanship reprend les valeurs d’Agile, en les poussant un cran plus loin :
– 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
Focus sur la qualité, humilité, partage, pragmatisme et professionnalisme.