Le bonheur de travailler avec des « craftsmen »

0

Lors de ma dernière mission au sein d’un grand groupe bancaire, j’ai eu la chance de travailler avec des développeurs qui suivaient le mouvement Software Craftsmanship.

A l’époque, je ne connaissais pas ce mouvement et j’ai donc cherché à en savoir plus auprès de cette équipe.
Ce mouvement, familier dans quelques ESN, reste encore méconnu dans le monde de l’entreprise. Tout comme l’agilité, il n’est pas une méthode, mais plus un état d’esprit, une culture. Et il mérite d’être davantage connu (d’où l’objet de cet article :).

Je vous expose ici mon point de vue en tant que Product Owner. Comme je l’ai dit, j’ai travaillé lors de ma précédente mission avec des crafts et j’ai intégré récemment Zenika Labs qui suit ce mouvement… Un vrai bonheur 🙂

Vous allez vite comprendre pourquoi !

Alors c’est quoi le Software Craftsmanship (“Artisanat du logiciel”) ?

Un manifeste, diffusé en 2009, pose les grands principes et valeurs du mouvement :

“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 la valeur.

Pas seulement les individus et leurs interactions,
mais aussi une communauté de professionnels.

Pas seulement la collaboration avec les clients,
mais aussi des partenariats productifs.”

Ce manifeste s’inspire beaucoup de celui de l’agilité :  collaboration, amélioration continue, apporter de la valeur par itération courte… On y retrouve les préceptes de l’agilité avec certaines particularités propres au développement logiciel.

Déchiffrons-les plus en détail !

Qualité du code et focus sur la valeur

Le développeur “craftsman” est un “artisan du code”. Il va façonner son code, de la même manière qu’un artisan va façonner son produit, afin de livrer un code lisible, de qualité, testable et  reflétant les règles fonctionnelles métier. Les développeurs s’approprient le langage du métier et le retranscrivent dans le code. Il ne s’agit pas simplement de poser des lignes de code et de maîtriser un langage informatique, il s’agit de rendre son code vivant et de le faire évoluer avec le métier.

Il y a donc un parfait alignement entre le fonctionnel et le code. Cette approche s’inspire du Domain Driven Design (DDD) d’Eric Evans où l’un des objectifs majeurs est de bien comprendre le besoin métier, de définir une vision et un langage partagé avec toutes les parties prenantes du projet (développeurs, experts métier, product owners, UX/UI designer…).

Un code de qualité et bien structuré permettra aussi d’éviter des coûts de maintenance et une dette technique.

Le focus sur la valeur apportée par le développement de telle ou telle fonctionnalité reste fondamental dans toutes réflexions sur le projet. “Pourquoi ?” est une question qui revient très souvent et qui remet en cause certaines règles métier trop complexes. Le côté pragmatique et le fait d’apporter de la simplicité dans des systèmes trop complexes sont des éléments qui devraient attirer les entreprises à s’intéresser davantage à ce mouvement.

 

Étroite collaboration avec toutes les parties prenantes du projet

Les développeurs sont malheureusement souvent séparés des autres départements de l’entreprise alors qu’ils doivent bien au contraire faire partie intégrante des projets.

De nombreux projets échouent par manque de communication, de vision, d’alignement entre les équipes de développements et les équipes orientées métier. Le Craftsmanship veut rapprocher les profils techniques et experts métier et permettre ainsi une meilleure collaboration pour concevoir des logiciels de qualité.

La complémentarité des différents profils permet de mieux appréhender la complexité, d’être plus efficace et pragmatique tout au long du projet.

 

Partage et transmission du savoir-faire

Le partage, l’entraide et la transmission des savoirs entre les développeurs sont des notions essentielles dans le Craftsmanship.

Le travail en binôme, le pair programming sont de bonnes pratiques qui découlent de ce mouvement.

Une forte communauté de “crafters” s’est développée pour échanger, discuter de la pratique du métier de développeur.

Des meetups sont régulièrement organisés sur Paris.

 

Amélioration continue

Un “craftsman” continue d’apprendre, découvre de nouveaux outils et de nouvelles pratiques en permanence ! Chaque développeur échange, partage son expérience fait grandir ses comparses.

En résumé, le craftsmanship s’accorde parfaitement avec la vision et les valeurs de l’agilité : comprendre le métier, apporter de la valeur, partager une vision commune, co-construire avec toute l’équipe y compris les développeurs un produit de qualité, rester avant tout pragmatique et éviter le travail inutile.

Alors vous l’avez compris, travailler avec des crafters au quotidien est un plaisir. Je vous assure que ce n’est pas uniquement théorique, en pratique, l’équipe technique est bien impliquée et engagée dans la réflexion produit.

En résumé, en tant que Product Owner, voici en 3 points ce que m’a apporté cette culture « craft » (oui même si je ne code pas, je me sens aussi l’âme d’une « craftswoman » 🙂 )

  • Les développeurs challengent vos besoins

C’est parfois déstabilisant, mais les développeurs remettent en cause vos besoins et vos priorités et ça vous oblige à vous demander pourquoi (vraiment) vous voulez développer telle ou telle fonctionnalité et quelle est la valeur attendue (le fameux “Pourquoi” 🙂 )

  • La méthodo agile orientée TDD (Test Driven Development) est un grand plus

Cela demande beaucoup d’exigence, de rigueur, de disponibilité de la part du Product Owner d’intégrer des tests fonctionnels tout au long du projet et surtout de les maintenir et faire évoluer en fonction des règles métier. Là aussi, cela vous pousse à vous pencher sur les différents cas métier possible avec votre équipe. On soulève très souvent des cas que je n’avais pas prévus et qui nécessitent une réflexion plus approfondie.

Pour moi, c’est un gage pour l’avenir, cela peut paraître coûteux au départ, mais vous serez gagnant sur le long-terme, car votre produit sera stable et vous n’aurez pas (ou très peu) de régression. Ça vaut le coup, vous préparez l’avenir ! Notamment s’il y a des changements au sein de votre équipe, le passage de connaissances est d’autant plus facilité avec l’écriture de ces tests fonctionnels.

  • Des développeurs passionnés et curieux

Comme je l’ai évoqué au-dessus, les crafters n’ont pas peur de se lancer dans de nouveaux challenges. Ils sont force de proposition et s’assurent de toujours livrer un code de qualité.

Le fait de travailler en pair programming, de voir son équipe partager ses connaissances dans une bonne ambiance, de voir tout simplement des développeurs s’éclater dans leur job…et bien ça me fait un bien fou ! (Oui là, j’en profite pour faire une petite dédicace à mon équipe) 😉


Et chez vous, comment travaillez-vous avec votre équipe de développeurs et quelle est leur place dans vos projets ?

Partagez cet article.

A propos de l'auteur

Ajouter un commentaire

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