Le software craftsmanship, ou l’artisanat du logiciel vous connaissez ? Oui, vous avez bien lu ! L’artisanat n’est pas exclusivement réservé aux métiers manuels, qui créent des objets. Les développeurs informatique se sont aussi emparés du terme afin de façonner le futur du travail dans l’informatique.
En cette journée mondiale des programmeurs et développeurs (le 13 septembre), rendons hommage à la profession en voyant ensemble en quoi consiste cette méthode artisanale de développement appelée le software craftsmanship.
Le software craftsmanship définition
Le software craftsmanship est un mouvement qui a pris forme en 2008 avec la cinquième édition du Manifeste agile, « Craftsmanship over Execution », autrement dit, « l’artisanat plus que l’exécution ».
Le mouvement du software s’est inspiré des concepts développés dans le livre « The pragmatic programmer: from journey man to master » de Andy Hunt et Davis Thomas en 1999 ; un grand classique pour tous les développeurs et programmeurs du monde entier. Si vous ne l’avez pas lu, c’est le moment de passer votre commande.
Le mouvement du software craftsmanship met en exergue le concept puissant qu’« il ne suffit pas qu’un logiciel soit fonctionnel, il faut qu’il soit bien conçu ». Le software craftshiping consiste donc à remettre en question certaines pratiques de développement. L’accent est mis sur la fiabilité et la facilité de maintenance, grâce au travail de développeurs performants. C’est donc un cri de guerre contre la banalisation du métier de développeur informatique qui est fait grâce au software.
En effet, le travail d’un développeur web est unique. C’est pourquoi on parle d’artisanat dans le concept. Selon le mouvement du software craftsmanship, il faut revenir à des méthodes artisanales dans le développement informatique, avec pour slogan : « il ne suffit pas qu’un logiciel fonctionne, il faut qu’il soit bien conçu ».
Voici une autre idée induite dans le software craftsmanship : la création d’une communauté de professionnels, pour renforcer la reconnaissance envers la profession, ce qui permet de produire des logiciels de qualité. Tous les concepts du mouvement software craftsmanship ont été repris dans le manifeste du logiciel.
Le manifeste des Artisans du Logiciel
Le manifeste agile n’étant pas assez précis sur les particularités mises en avant par le mouvement du software, c’est en 2009 que les partisans du concept se sont rencontrés afin de faire naître le « Manifeste pour l’artisanat du logiciel ». Le manifeste des artisans du logiciel résume les grandes lignes du mouvement du software craftsmanship :
- En tant que concepteurs de logiciels, nous élevons le niveau du développement de logiciels professionnels en les pratiquant nous-mêmes et en aidant les autres à apprendre le métier. Grâce à ce travail, nous avons appris à valoriser :
- Des logiciels opérationnels, mais aussi bien conçus
- L’adaptation au changement avec l’ajout perpétuel de valeur
- Des individus et des interactions ainsi qu’une communauté de professionnels
- Une collaboration avec les clients avec des partenariats productifs
C’est un remaniement de ce qu’on peut trouver dans le manifeste agile, qui marquait déjà un tournant dans l’histoire du code informatique. C’est la définition même de l’informatique « un domaine d’activité scientifique, technique et industriel concernant le traitement automatique de l’information ».
De l’informatique est né le codage, des systèmes et processus techniques avec des mécanismes de diffusion. C’est tout cet ensemble qui a créé le processus industriel de l’informatique.
Dans le manifeste agile, dont s’inspire largement le manifeste de l’artisanat du logiciel, quatre grands principes ont été valorisés en réponse et protestation à ce processus industriel de l’informatique :
- L’humain ainsi que leurs interactions doivent primer sur les outils qu’il utilise et les process
- Des logiciels performants plutôt que de la documentation
- La négociation contractuelle doit passer après la collaboration avec le client
- Savoir s’adapter au changement
De ce manifeste est né les méthodes agiles, largement utilisées dans les entreprises, comme la méthode Scrum qui est « un cadre de travail holistique itératif qui se concentre sur les buts communs en livrant de manière productive et créative des produits de la plus haute valeur possible ».
Mais, le manifeste agile est largement contesté par les développeurs d’aujourd’hui. La faute à une trop grande popularité ? Ces méthodes sont utilisées même dans les sociétés de service en ingénierie informatique, soit les très grands groupes. C’est pourquoi une grosse partie des développeurs veulent revenir à ce jour, aux essentiels, en utilisant des méthodes artisanales, du software craftsmanship.
Software craftsmanship: clean code ?
Dans cette méthode est visé un haut niveau de qualité dans le développement de logiciels, dans une société où le logiciel est partout.
C’est pourquoi il ne faut pas confondre le craftsmanship avec une catégorisation du métier de développeur. Beaucoup d’entre eux n’ont pas la chance ni l’occasion de pouvoir se pencher sur une réalisation de logiciels avec une autre méthode. L’objet du software craftsmanship est de porter des valeurs, une culture du digital.
Ce qui ne veut pas dire que ceux qui ne l’adoptent pas sont des mauvais développeurs. Ces méthodes ne s’apprennent pas à l’école, mais grâce à l’acquisition d’une certaine culture. En tant que développeur on ne cherche pas absolument la perfection, mais la conception de produits de qualité qui répondent au mieux à un besoin donné, le bon aboutissement des projets et un maintien de ces produits dans la durée. Il faut donc faire au mieux tout en tenant compte du contexte.
Pour cela, certaines pratiques sont utilisées, afin d’atteindre ce niveau de qualité ; comme l’application de standards de code propre, le clean code, ou encore le développement dirigé par les tests tels que BDD, TDD, etc.
La base même de cette culture, c’est d’évoluer, d’apprendre sans cesse et compter sur la communauté de développeurs et programmeurs. Quelques exemples à appliquer afin d’utiliser les bases du software craftsmanship :
- S’appuyer sur des outils de l’intégration continue afin de réduire le feedback
- Avoir une propriété collective du code, c’est-à-dire éviter le plus possible l’isolement des développeurs
- Travailler ensemble par binôme ou avec l’organisation de dojos
- Établissement de standards de développement collectif
Vous êtes développeur dans une entreprise et vous souhaitez développer ce mindset, cette méthode du software craftsmanship dans votre société ? Voici quelques méthodes à mettre en place :
- Revoir l’organisation des bureaux dans l’espace afin de faciliter le travail collectif et ainsi mettre fin à l’isolement des développeurs
- Vous rencontrez une difficulté sur votre code ? Demandez de l’aide à vos collègues en proposant un rassemblement de binômage ou la mise en place d’une revue de code collective
- Echanger sur vos méthodes de travail en parlant avec d’autres équipes utilisant des technologies et process proches des vôtres
- Créer des espaces de rencontre pour les équipes, pour valoriser les retours d’expérience.
- Soutenir les démarches d’amélioration continue telles que les revues de code
- Prévoir un budget pour l’apprentissage afin que les équipes puissent se former à d’autres méthodes, pratiques, sans devoir prendre ce temps sur leur temps personnel
La vision du software craftsmanship est une culture digitale qui propose une vision du métier de développeur de qualité et d’apprentissage permanent. Avoir des valeurs autour de ce métier crucial pour les entreprises, permet de réaliser des logiciels de qualité, opérationnels, bien conçus et économiques.
Pratiquez-vous la méthode software craftsmanship en tant que développeur freelance ? Que pensez-vous de ce concept ? Dites-nous tout en commentaire.