Êtes-vous prêt pour le software craftsmanship ?

Quand on entend “artisanat”, on pense spontanément aux menuisiers, boulangers ou potiers qui travaillent avec leurs mains pour fabriquer des choses belles et utiles. Mais l’artisanat ne se résume plus aux métiers manuels. Les développeurs ont donné un nouveau sens à cette notion avec le software craftsmanship. Ils sont aujourd’hui les pionniers du futur du travail.

Découvrez les principes de ce phénomène et un test, à la fin de cet article, pour savoir si vous êtres prêt.e à sauter le pas !

Il y a tout juste dix ans, en 2008, paraissait le “manifeste de l’artisanat du logiciel”. Aujourd’hui, le software craftsmanship façonne le futur du travail dans l’informatique et, au-delà, celui de tous les travailleurs de la classe créative. L’artisanat, c’est l’anti-bullshit par excellence. Alors si futur du travail rime avec plus d’artisanat, il y a de quoi se réjouir !

Le software craftsmanship, qu’est-ce que c’est ?

Le software craftsmanship, ou artisanat du logiciel, est un mouvement qui s’est érigé contre la banalisation du métier et l’industrialisation du travail de développeur. Les compétences des développeurs sont uniques. Ils ne peuvent donc pas devenir de simples “commodités”.

Suivant ce mouvement, les développeurs doivent revenir à des valeurs artisanales : il ne suffit pas qu’un logiciel fonctionne, il faut aussi qu’il soit bien conçu ! Or c’est en prônant les principes de l’artisanat—autonomie, responsabilité et créativité—que l’on garantit le mieux la fiabilité des applications.

Le “manifeste de l’artisanat du logiciel” en résume les grandes idées :

“En tant que concepteurs de logiciels, nous élevons le niveau du développement de logiciels professionnels en le pratiquant nous-mêmes et en aidant les autres à apprendre le métier. Grâce à ce travail, nous sommes arrivés à valoriser :
Non seulement le logiciel de travail, mais aussi des logiciels bien conçus,
Non seulement la réponse au changement, mais aussi la création de valeur à chaque instant,
Non seulement les individus et les interactions, mais aussi une communauté de professionnels, 
Non seulement la collaboration client, mais aussi des partenariats productifs.”

La Bible du mouvement

L’ouvrage le plus influent sur le sujet date de 1999 et s’intitule The Pragmatic Programmer: From Journeyman to Master. Ecrit par Andrew Hunt et David Thomas, ce livre est devenu incontournable pour tous les développeurs.

Loin de donner une théorie rigide et une vision systématique du métier, les auteurs y donnent des conseils précieux, qui ont fait leurs preuves au fil des années. Tout bon développeur doit :

  • Développer une grande capacité d’adaptation en cherchant toujours des nouveaux problèmes et mises en situation ;
  • Cultiver une inextinguible curiosité et un esprit critique aiguisé ;
  • Ne pas hésiter à développer des talents multiples dans des domaines différents, surtout quand on débute. (Comme l’explique Emilie Wapnick dans un mémorable TED talk, les personnes multipotentielles sont plus créatives, car c’est à l’intersection de plusieurs talents que l’on trouve les solutions les plus inventives : “la combinaison unique de vos divers talents est votre super-pouvoir”).

Le “manifeste agile” marque une première remise en question du caractère “industriel” du code informatique

Historiquement, les programmeurs ont d’abord été vus comme des praticiens de l’organisation scientifique du travail. C’est d’ailleurs ainsi que l’on a défini l’informatique : un domaine d’activité scientifique, technique et industriel concernant le traitement automatique de l’information” (Wikipedia). L’informatique a engendré de la codification, des processus, et des mécanismes de diffusion, qui l’ont rendue répétable et prédictible, c’est-à-dire “industrielle”.

En 2001, le “manifeste agile” co-signé par plusieurs développeurs dont l’Oncle Bob, Jeff Sutherland, Ward Cunningham, Martin Fowler, et d’autres, remet en question cette vision historique de l’informatique. Quatre grands principes y sont valorisés :

  • Les individus et leurs interactions priment sur les processus et les outils ;
  • Les logiciels qui marchent comptent plus que l’exhaustivité de la documentation ;
  • La collaboration avec les clients importe plus que la négociation contractuelle ;
  • L’adaptation au changement est plus importante que le suivi rigoureux d’un plan.

On lui doit les “méthodes agiles”

Les “méthodes agiles”, plus ou moins issues du manifeste, sont désormais à la mode dans les entreprises. Elles reposent toutes sur un cycle de développement itératif, incrémental et adaptatif.

Par exemple, la méthode Scrum, née au milieu des années 1990, est aujourd’hui l’une des méthodes stars. Il s’agit d’un schéma d’organisation présenté par ses créateurs comme “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 grande valeur possible”. Le framework Scrum  s’appuie sur le découpage d’un projet en boîtes de temps, aussi appelés “sprints”. Ces sprints peuvent durer quelques heures ou, le plus souvent, deux semaines. Chaque sprint commence par une estimation suivie d’une planification opérationnelle. Le sprint se termine par une démonstration de ce qui a été achevé.

Notons que certains développeurs regrettent l’adoption généralisée du Manifeste agile. Puisque tout le monde se prétend “agile”, y compris les SSII (“sociétés de service en ingénierie informatique”, aussi appelées “entreprises de services du numérique”) et les grands groupes, le concept est devenu galvaudé. Il perd de son sens. Les développeurs-artisans prônent aujourd’hui un retour aux fondamentaux. Ils s’imposent avant tout une discipline individuelle autour des grands principes de l’artisanat. Parmi ceux-là, beaucoup se tournent vers le freelancing pour mettre en action les principes de l’artisanat.

Et le futur du travail ?

A mesure que nous nous éloignons de l’économie de masse pour embrasser une économie numérique centrée sur la personnalisation et la singularité des acteurs, nous devons aussi nous éloigner des procédés de l’âge industriel. A bien des égards, les développeurs montrent la voie. L’artisanat, c’est la transformation de la matière et la mise en oeuvre de services grâce à des savoir-faire humains uniques. Il permet une vision holistique du travail, loin de l’aliénation du travail morcelé typique de l’usine. Il permet de retrouver du sens dans son travail. L’artisan maîtrise en effet tous les stades de la transformation, de la création, à la réparation, en passant par la commercialisation. Il/elle se réalise lui-même autant qu’il réalise son travail. Alors, vivement demain !


Es-tu prêt.e pour le « Software Craftsmanship » ?

1. Connais-tu au moins un de ces langages : Ocaml, Prolog, Smalltalk, Eiffel ?
Plus tu connais de langages, plus tu seras critique dans la pratique de ton langage préféré.

 

2. Es-tu sûr d’utiliser ton éditeur de code de la meilleure manière possible ?
Ton éditeur est ton ami, n’hésite pas à en apprendre les raccourcis, le debugger, les plugins, etc.

 

3. Parmi ces types de tests, lesquels automatises-tu : tests unitaires, tests d’intégration, tests de performance, tests de sécurité ?
Faire des tests, c’est bien, les automatiser, c’est encore mieux.

 

4. Si tu montres ton code à une personne non-développeuse, dans quelle mesure peut-il / elle comprendre ?
En utilisant le langage des utilisateurs du logiciel, tu réduiras les problèmes de communications.

 

5. Comment te comportes-tu quand tu fais une erreur ?
Tout mettre sur le dos des autres ou de la technique ne fera pas de toi un professionnel. Reconnais tes erreurs et propose des solutions.

 

6. Participes-tu à des communautés de développeurs pour partager et apprendre ?
Il existe tout un tas de communautés et meetups (comme le Digital Craftsmen Club) pour s’entraider, découvrir des technos ou partager ses opinions à tous les créneaux de la journée.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *