Il y a 6 années · 7 minutes · Agile, Craft

Software Craftsmanship : en pratique

Le software Craftsmanship est un mouvement récent qui met en exergue l’expérience des pratiques de développement des programmeurs. Ce mouvement de pensée est l’une des réponses à la tendance à l’externalisation systématique des développements banalisant le métier de développeur pour le reléguer au rôle de simple producteur de ligne de code.

Le mouvement est réellement présent depuis 2008 bien qu’il réactualise des concepts développés dans le livre Pragmatic programmer: from journeyman to master (Andy Hunt & David Thomas – 1999).

Il prône, entre autre, le fait qu’il ne suffit pas que le logiciel fonctionne, il faut également qu’il soit correctement écrit. L’accent est notamment mis sur la fiabilité et la facilité de maintenance. Est-il nécessaire de rappeler que le coût d’écriture d’un logiciel pour sa version initiale n’est qu’un petit pourcentage de son coût total ? Il est néanmoins facile de prendre ce concept à la lettre et de raffiner chaque fonction à la perfection. Le danger de la sur-conception/développement est bien présent. C’est là que l’expérience entre en jeu, comment faire un logiciel qui fonctionne, bien écrit et qui n’est pas un chef d’oeuvre à la Sagrada Família (non achevée à ce jour) : en utilisant des développeurs expérimentés, capables de prendre les bonnes décisions, bien entrainés via différentes techniques et aptes à résoudre un maximum de problématiques.

Un autre concept qui revient dans les idées de ce mouvement est la « communauté de professionnels ». Idée qui cherche, d’une part à renforcer la reconnaissance de notre profession en tant que producteurs de logiciel de qualité, et d’autre part à encourager les regroupements de développeurs s’échangeant techniques et idées. Il est bon pour votre connaissance et vos talents de professionnels de venir échanger vos techniques lors de manifestations orientées mise en pratique comme par exemple les Coding Dojo (où l’on s’exerce à l’aide de Kata) ou bien des Code Retreat, décrites en détails dans le blog des Duchess France.

L’ensemble des grands concepts sont retranscrits dans un manifeste qui a le mérite de donner un contour général aux idées prônées par le mouvement, mais dont on peut reprocher les concepts très larges, un peu fourre-tout et à la forme semblable au manifeste agile. Il y a d’ailleurs débat autour de la forme et du contenu de ce manifeste, mais sachons gratter la surface pour voir ce qu’il y a dessous…

L’accent est fortement mis sur des pratiques concrètes (techniques de développement, de tests, de design, etc) qui ne sont pas des absolus, libre à chacun d’adapter et d’explorer de nouvelles voies et de transmettre leur expérience. Le mouvement Software Craftsmanship n’est surtout pas une méthode, ce n’est pas un énième Scrum ou Kanban. Il cherche justement à faire redescendre les pieds sur terre à ceux qui appliquent l’agilité en dépit du bon sens.

La rupture qu’apporte ce mouvement consiste à remettre les pratiques de développements au cœur de la production de logiciel. Pratiques techniques qui ont remisées à l’arrière plan lors de l’application des méthodes agiles aux plus grands nombres de projets. En effet Scrum, Kanban ou Lean ne disent rien sur ces pratiques techniques, car à la fin, si vous ne savez pas produire du code de qualité, quelle que soit la longueur de vos itérations de plusieurs mois à quelques jours, vous allez livrer un logiciel qui ne fonctionne qu’en apparence ou pas correctement.

Ce mouvement promeut une culture d’amélioration et de transmission du savoir, par la pratique, adossée à un ensemble de techniques et de retours d’expériences, dans le but de fournir un logiciel de qualité.

Sens commun


Vous n’avez toujours pas compris ?
Vous n’êtes pas le seul.
La blogosphère s’est enflammée la semaine dernière sur la définition du mouvement avec des acteurs majeurs de notre industrie comme Robert C. Martin, Michael Feathers ou encore Martin Fowler qui ont pris part au débat.

Certains ont commencé à dire que les « craftsmen », dont une traduction pourrait être « artisans », pourraient avoir la tentation de se comporter en diva et de ne se concentrer que sur leur « art » qui est celui du logiciel et qu’ils perdent de vue la finalité de notre métier : produire un logiciel pour un client. D’autres ont continué en faisant dire tout et son contraire à chaque métaphore utilisée dans les billets des uns et des autres. Un échange de points de vue fort intéressant à lire à tête reposée, qui se termine par le post de Robert C. Martin Bringing Balance to the force, dans lequel il affirme que le mouvement ne surjoue pas le rôle des pratiques techniques mais cherche à contre-balancer l’équilibre mis en défaut par l’avalanche de projets Scrum se concentrant uniquement sur la méthode. Un débat polémique comme il y en a tant dans notre industrie.

Du sens commun ? Ça va sans dire, ça va mieux en le disant…

Au final, en lisant ces échanges, on peut faire ressortir du mouvement les attributs suivants :

  • Qualité (conception simple, tests, TDD)
  • Humilité (je me remets en question et je m’améliore en continu)
  • Partage (je partage mes acquis avec mes pairs, je m’enrichis chemin faisant)
  • Pragmatisme (je n’applique pas bêtement, je comprends ce que je fais et je m’adapte si nécessaire)
  • Professionnalisme (je traite mon client comme un partenaire, je sais dire non quand nécessaire)
  • Concret (pas de certifications fumeuses, mais un retour aux techniques fondamentales : OO, SOLID, DDD)

Craftsmanship @ Xebia

Au-delà du débat de ce qu’est (et de ce que n’est pas) le Software Craftsmanship et de son discours difficilement contestable de la recherche de l’excellence dans l’application de notre métier, quelles sont les pratiques de ses craftsmen ? Sont-elles applicables au-delà de la théorie ?

C’est la réponse à ces questions, qui nous a amené à organiser chez Xebia un atelier, pour l’instant interne, dans lequel nous nous retrouvons toutes les deux semaines pour échanger pratiques et techniques. Le fil conducteur est le développement d’une application complète que nous n’allons pas tarder à mettre en production. Il s’agit aussi, bien sûr, d’avoir une base de code suffisante pour s’exercer. Les sujets abordés à ce jour sont :

  • Design Simple
  • Conception Objet
  • Technique de testing
  • Clean Code
  • Refactoring
  • SOLID

Lors de ces sessions, nous nous entrainons à savoir bien faire les choses, des choses fondamentales, qui sont la base de ce que nous pratiquons tous les jours dans nos métiers. Ainsi, lorsque nous rencontrons ces cas concrets dans nos projets, nous nous sommes déjà dans bien des cas forgés une expérience dessus. Certaines de ces sessions seront transmises au-delà de l’atelier via notre réunion mensuelle d’échange de connaissances XKE (Xebia Knowledge Exchange).

Robert C. Martin, alias Uncle Bob est une personnalité reconnue du mouvement Software Craftsmanship. Pour voir ce qu’il en est vraiment rien de tel que d’apprendre par les meneurs eux-mêmes. C’est pour cette raison qu’il va venir dans les locaux de Xebia lors d’une série de formation de deux jours sur les pratiques de clean code, conception et tests. Les prochaines dates sont les 20 et 21 avril à Paris.

L’idée est bien d’apprécier la substantifique moelle de ce que prône ce courant. Et c’est bien ce qui est le plus difficile, car au-delà des débats sur les problématiques de métaphores ou de définitions bien précises, ce que l’on cherche à comprendre c’est comment embrasser cette attitude tournée vers plus de professionnalisme. Afin que nous-même, mais aussi toute notre profession soit plus pertinente demain. Que cela soit sur les méthodes mais aussi et surtout dans ces techniques et pratiques.


Crédit photo RobertBasil

Jean-Laurent de Morlhon
CTO @ Xebia France. Sur twitter avec @morlhon

Laisser un commentaire

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