Qu’est-ce que le Software Craftsmanship ?

Le software craftsmanship, ou craft, est devenu tendance. Mais qu’est-ce qui se cache derrière ce concept ?

Atelier d'un artisan
Un artisan qui range bien ses outils

On peut définir l’artisanat logiciel, le software craftsmanship, comme un mouvement porté par des développeurs passionnés par leur métier.

On peut le décrire selon ses valeurs, son état d’esprit ou encore ses pratiques.
Difficile de parler de software craftsmanship sans parler d’agilité tellement les deux sont liés à leur origine, même si les choses ont bien évolué depuis.
On parlera aussi dans cet article de la relation des pratiquants avec les reste du monde et aussi comment s’y former.

Bien entendu, ce que j’écris là n’engage que moi et n’est jamais que le fruit de mon expérience et de mes 20 ans de pratique dans le métier de développeur.
Je ne prétends pas détenir une espèce de vérité et j’espère simplement que ça va t’aider à y voir un petit peu plus clair et à progresser là-dedans.

Les valeurs du Software Craftsmanship 

Je t’ai parlé des valeurs : et bien pour moi les valeurs sont vraiment cardinales dans le mouvement de l’artisanat logiciel. Ce ne sont pas juste des mots à coller sur les murs, mais des idées à incarner.

La fierté

La première valeur qu’on va aller chercher c’est la fierté. Alors attention soyons clairs, on ne parle pas là d’une espèce d’arrogance ou d’une espèce de fierté mal placée.

Non je parle de quelque chose de plus profond, cette espèce de fierté du travail accompli, du travail bien fait, que tu peux ressentir à la fin de la journée quand tu as le sentiment d’avoir vraiment donné le maximum de toi même.

Quelque part la fierté c’est ce qui donne de la noblesse à ton travail et je ne connais pas grand monde qui n’ait pas tellement envie d’être fier de son travail. Voire même je constate que c’est une valeur franchement puissante pour mobiliser les gens et les motiver.

L’excellence

La deuxième valeur est pour moi celle de l’excellence.  Alors attention on pourrait facilement tomber dans un piège. Pour moi l’excellence n’est pas un espèce d’idéal de perfection. L’excellence est, pour moi, une démarche permanente d’amélioration. C’est une espèce d’objectif qui ne sert jamais qu’à donner le chemin, mais ce n’est pas le chemin. 

Le chemin c’est ce travail que tu as à faire au quotidien pour progresser que ce soit dans tes pratiques ou progresser sur toi dans ton interaction avec le monde et tendre vers un espèce d’idéal qui te guide.

Le pragmatisme

Enfin, dernière valeur que je te propose : le pragmatisme.
C’est ce qui permet de rester ancrée, de garder bien les pieds sur terre, et qui vient équilibrer les deux premières valeurs. Parce que sans le pragmatisme tu peux facilement t’égarer dans une espèce de labyrinthe et perdre de vue ce qui est réellement important.

Ce qui est réellement important ce n’est pas forcément le code que tu es en train d’écrire mais à quoi il va servir.

Quand tu as un dilemme du type  : j’ai deux options A et B.
– A me fait gagner du temps, me permet d’aller vite, mais je sens que ce que je vais faire n’est pas terrible.
– B prend plus de temps, mais je sens que c’est plus propre et plus durable.

Si tu n’actionnes que l’excellence et la fierté, tu vas systématiquement choisir l’option B. Or il faut savoir parfois prendre l’option A : l’exemple typique est celui d’une opportunité client ou d’un événement dont tu ne contrôle pas la date, comme une conférence.

A l’inverse, si tu n’actionnes que le pragmatisme, et que tu choisis systématiquement l’option A, tu le paieras tôt ou tard.

La transmission

La transmission des connaissances, de l’état d’esprit et des savoir-faire est un enjeu majeur de l’artisanat logiciel.

La meilleure manière d’apprendre et de transmettre reste l’échange de pair à pair.
On parle de pratique longues à acquérir. Il est facile de faire fausse route et de se décourager. Sur le chemin, trouver un mentor sera une aide précieuse pour avancer.

L’extreme programming fait du travail en binôme une pratique centrale et il y a une bonne raison à ça : c’est un moyen redoutablement efficace de transmettre et homogénéiser les connaissance en faisant monter le niveau de chaque individu.

Personnellement, j’en ferais un critère de choix majeur si je cherchais un travail : avec qui vais-je travailler ? Qu’est-ce que je vais pouvoir apprendre ou transmettre ?

Les principes du Software Craftsmanship

L’amélioration continue

Pour aller sur le chemin de l’excellence il faut être en permanence en train de s’améliorer et ça, c’est une vraie démarche d’humilité. S’améliorer en continue, ce voir qu’on peut faire mieux la prochaine fois.

Être professionnel

Etre professionnel, pour moi, ça veut dire faire des choses qui ne sont pas naturelles, qui ne sont pas forcément faciles, dans l’intérêt du projet, parce que justement on est des professionnels.

Le but c’est d’amener le projet le plus loin possible. Quelque chose par exemple qui n’est pas naturel pour plein de monde, c’est d’aller demander un feedback ou alors de donner un feedback. Et quand je parle de donner un feedback, je parle de de donner vraiment un feedback sincère. D’ailleurs j’ai fait une vidéo sur le sujet si ça t’intéresse d’aller plus loin. 

Etre professionnel c’est être profondément responsable de son travail responsable, de ce qu’on fait. Etre responsable, ça peut vouloir dire par exemple poser des limites, savoir dire non. Finalement en tant que professionnel, si on se retrouve dans une situation qui nous paraît juste pas acceptable, pas possible, eh bien il faut savoir dire non.

J’aime bien cet exemple qui revient souvent, mais qui marque bien les gens et qui est assez explicite : imagine que tu ailles voir qu’un chirurgien et au moment où il va opérer tu lui dis : “Non, non, ne vous lavez pas les mains ça sert à rien. On va gagner du temps.”

Là si c’est toi le chirurgien, est-ce que tu acceptes de faire ça ? Est ce que ça te paraît être une bonne idée de grignoter sur quelque chose aussi essentiel pour gagner un petit peu de temps, et peut-être le payer après ?

Les pratiques

L’artisanat logiciel, c’est aussi tout un ensemble de pratiques, que ce soit des pratiques d’équipes comme le binomage par exemple, les pratiques de conception avec le Test Driven Design ou les principes SOLID, ou encore avec l’architecture hexagonale. Tu vas d’ailleurs trouver encore plein d’autres choses avec le Domain Driven Design.

En creusant, on peut trouver beaucoup d’acronymes qui caractérisent l’artisanal logiciel. D’ailleurs, j’ai essayé une fois de faire une diapo qui rassemble un maximum de mots clés et j’ai déjà rempli une bonne page d’acronymes sans avoir été exhaustif.

Je comprends que ça puisse être un petit peu intimidant pour ceux qui découvrent ça au début. Mais crois moi, ça vaut vraiment le coup d’aller voir ce qui se cache derrière.

D’ailleurs si tu as envie de faire un diagnostic de tes pratiques et comparer ton niveau à celui de centaines d’autres développeurs, je t’invite dans compagnon pour faire ton diagnostic de pratiques.

Le pair programming

Le pair programming, ou travail en binôme, est une pratique qui consiste à travailler à deux, en même temps, sur une même tâche de développement.

Cette pratique formalisée dans l’eXtreme Programming est peut-être encore une des plus controversée du mouvement. Souvent incomprise ou mal employée, c’est pourtant un outil d’une grande puissance quand on sait s’en servir.
C’est pour ça que je t’ai écris le guide ultime du pair programming.
Oui, je sais, le titre est un peu prétentieux. Mais en vrai, il y a peu de gens qui ont une expérience profonde de ce mode de travail, et encore moins qui soient capables d’en parler. Alors je me suis dit que ça valait le coup de s’y coller.

Le craft et le reste du monde

Software craftsmanship et Agilité

Quand on regarde le manifeste agile, on retrouve plusieurs signataires que l’on pourrait facilement intégrer dans le mouvement craft.

L’agilité est née dans le développement. Mais depuis quelques années, elle s’est coupée de ses racines. La chefferie de projet a pris le pas et renie même parfois ses origines technologiques.

Certains la pratiquent encore comme à ses origines, mais les développeurs ont tellement souffert de dérives et d’implémentations foireuses que certains sont devenus allergiques à l’agilité.

Pourtant, les deux démarches se combinent et se complètent à merveille. On en reparle juste après dans les ressources.

Les détracteurs du software craftsmanship

Comme tout mouvement qui naît et se développe, il finit par trouver ses détracteurs. C’est même pour moi plutôt bon signe : cela montre qu’on sort de la phase d’enthousiasme naïf pour prendre du recul sur ce qu’on fait.

Les artisans développeurs sont parfois taxés d’arrogance, de suffisance ou encore de dogmatisme.

C’est vrai.

Ce n’est pas surprenant : le niveau technique est exigeant et il faut investir beaucoup d’énergie pour acquérir des compétences pointues. Il est alors facile d’oublier le savoir le savoir être.
C’est d’autant plus simple de s’isoler si le reste de l’équipe est peu sensible à la démarche.

Comment se former au software craftsmanship

J’ai souvent cette question : comment débuter dans le craft ?
Voici quelques ressources.

Les manifestes

Le manifeste agile reste la pierre de rosette du craft. Il fait la passerelle entre différents mouvements qui se sont étoffés depuis.

Etudier le manifeste reste d’actualité. En général, les gens s’arrêtent aux 4 énoncés, vus, revus et parfois déformés avec le temps. Mais les 12 principes sous-jacents sont souvent ignorés. C’est bien dommage !

Tu trouveras aussi le manifesto for software craftsmanship. Ils reprennent la trame des 4 énoncés du manifeste agile, sans aller plus loin. Intéressant à lire au moins une fois.
Je le vois un peu comme une manière de rappeler que la tech existe dans le logiciel. Un signe avant coureur de la scission avec l’agilité ?

Avec des livres

Si je ne devais mentionner qu’un seul livre, ce serait le livre de sandro mancuso : “Software Craftsman, The: Professionalism, Pragmatism, Pride”.

En langue française, il y a le livre “Software craft: TDD, Clean Code et autres pratiques essentielles” aux éditions Dunod.

Je suis également un grand fan du livre de Kent Beck : Extreme Programming. Il explique les origines de l’eXtreme Programming et ses réflexions me semblent toujours d’actualité.

En podcast

Le podcast Artisan Développeur, c’est comme le port salut, c’est marqué dessus.

Si j’avais été anglophone, j’aurais nommé le podcast ‘Software Craftsmanship’.  Donc je pense qu’on est dans le thème.

Avec plus de 600.000 écoutes et bientôt 400 épisodes, tu as de quoi t’imprégner.

Attention : j’ai eu plusieurs témoignages indiquant que l’écoute du podcast pouvait avoir des effets radicaux dans ta vie. A consommer sans modération.

Le podcast Artisan Développeur

Tu veux m’aider ?

Si tu as apprécié ce contenu, tu peux m’aider en le partageant. 
Que ce soit par email à un ami ou à la terre entière sur twitter ou linkedin, si tu as appris quelque chose grâce à cet article, partage-le !

2 réflexions sur « Qu’est-ce que le Software Craftsmanship ? »

  1. Hello !
    J’ai apprécié la lecture, je pense être sur la même longueur d’ondes au niveau des valeurs et j’ai également beaucoup appris des livres de Kent Beck. Cependant je commente surtout pour être « that guy » 🤓 et te signaler ceci :
    « Certains la pratique encore » je pense que pratique s’accorde avec « certainS ».

    Oh et autre chose : sur mobile le bouton pour fermer la popup d’inscription à la newsletter n’est pas visible, j’ai du cliquer à l’aveugle pour retourner à l’article (safari ios).

    Bon week-end !

    1. Salut,
      Merci pour la typo. C’est corrigé.
      Pour la newsletter, je vais voir comment je peux arranger ça.
      Merci encore.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.