“Software craftsmanship”… encore un buzzword étrange comme les informaticiens savent si bien les inventer ?
Il est vrai qu’en IT, chaque décennie apporte son lot d’innovations faisant éclore un vocabulaire nouveau, en général réservé à une population restreinte “d’initiés”, et leur permettant de distinguer aisément qui fait partie du groupe, et qui n’est pas encore “up-to-date” …
Pourtant, considérer le craftsmanship comme n’étant rien de plus qu’un phénomène de mode éphémère relèverait selon moi d’une erreur de jugement.
1. “Software craftsmanship” : ce que vous devez savoir
A l’ère du tout numérique, les compétences nécessaires au développement des applications informatiques pourraient sembler aisées à acquérir, au vu du grand nombre d’apps” ou de nouveaux sites web 2.0 qui fleurissent chaque mois. Les langages informatiques actuels sont beaucoup plus simples à apprendre que ceux d’il y a 50 ans. Néanmoins, tout comme connaître une langue ne fait pas de vous un écrivain à succès, connaître un langage informatique ne fait pas automatiquement de vous un bon développeur. Pour qu’il soit maintenable, performant et évolutif, le logiciel devra être correctement structuré.
J’en viens donc au fondement même du craftsmanship : sachant que le développement logiciel s’apparente à une forme de création originale, non réplicable du fait des évolutions technologiques et des besoins fonctionnels, comment progresser en tant que développeur ? Le mouvement du craftsmanship apporte une réponse pragmatique, en proposant des repères, des outils, des méthodes, et mieux, une communauté, qui permet à tout développeur de s’améliorer, devenir un artisan au sens propre du terme, ce que l’on nomme donc un “software craftsman”.
2. Les origines du Software Craftsmanship
Dans les entreprises, les innovations informatiques représentent une part non négligeable de leur développement. Ces dernières années, la méthode agile est devenue la référence dans une entreprise. Elle prône de nouvelles valeurs en privilégiant les interactions entre chaque partie prenante. Une organisation impliquant les professionnels comme les clients est née. Elle mise sur une meilleure gestion des projets et la création de produits de qualité répondant aux exigences des utilisateurs.
Les informaticiens dans les entreprises se sont basés sur la méthode agile pour améliorer leur travail. En 2008, le mouvement du Software Craftsmanship fait ses premiers pas. C’est l’apparition d’une nouvelle culture dans la création de logiciels en laissant de côté le budget et le délai de livraison des produits.
3. Le « Craft » ou l’artisanat du logiciel
Le mouvement du Software Craftsmanship a pris de l’ampleur en 2009. Un « Manifeste pour l’artisanat du logiciel » a été propagé pour présenter au monde cette nouvelle culture dans le domaine de la programmation. Inspiré de la méthode agile, le code de l’artisanat (Craft) du logiciel explique les diverses pratiques lors des projets de développement initiés. Il indique également les valeurs nécessaires pour fournir un travail de qualité.
L’émergence du Software Craftmanship a modifié les notions de code informatique. Le métier de développeur doit donc s’adapter à une nouvelle technique visant à créer un produit privilégiant la qualité et l’efficacité.
Dans les entreprises, les pratiques relatives aux softwares comprennent une amélioration de la technique de développement de logiciel. Cela implique un apprentissage poussé du métier de développeur et des procédés divers y afférent. Ainsi, lors de la réalisation d’un projet demandé à une entreprise, les professionnels travaillent avec une meilleure interaction. Ils pourront même former un groupe pour s’aider mutuellement. Ce rassemblement permettra la création d’un logiciel fonctionnel et bien conçu. Il facilitera également la communication avec les clients ainsi que les autres parties prenantes du projet. Grâce au Craftsmanship, les développeurs pourront ainsi s’adapter aux changements constants dans le domaine de l’informatique et être plus performants. Ils réaliseront divers tests pour assurer la livraison d’un produit fiable comme indiqué dans les attentes des méthodologies tournées vers l’agilité.
4. De Geek à Craftsman, itinéraire d’un développeur qui évolue
L’image que la plupart des gens ont des développeurs, n’en ayons pas honte, c’est le Geek.
Le Geek, c’est avant tout quelqu’un de passionné par l’informatique, mais peut-être de façon excessive, au point de se couper de relations humaines, et ainsi être considéré comme marginal et introverti. Mais en ce début de 21e siècle, ces fameux Geeks – souvent des développeurs en informatique – ont pris une importance particulière, en s’illustrant dans des startups aux succès parfois foudroyants, jusqu’à remettre progressivement en question ce stéréotype. Ces même Geeks aujourd’hui améliorent notre quotidien et réinventent notre futur. Ils sont les créateurs des dernières innovations que nous utilisons sur nos mobiles et ordinateurs. Ces réussites se sont accompagnées d’un réelle évolution du métier de développeur, qui de “Geek” est devenu “Craftsman”.
5. La communauté du craftsmanship
Être un craftsman signifie notamment faire partie d’une communauté, favorisant l’apprentissage et la découverte de nouvelles pratiques et outils, tandis que chacun apporte sa propre expérience et ses propres avancées. C’est aussi une source de fierté et de reconnaissance, car le Craftsmanship incarne clairement une volonté d’améliorer la qualité et l’“élégance” du code : plutôt de que créer un “plat de spaghettis”, autrement connu sous le nom “d’usine à gaz”, le Craftsman cherche à simplifier et rendre accessible, lisible et compréhensible ce qu’il produit ; que ce code soit interprétable par une machine est une nécessité, mais que la communauté des Craftsmen lui attribue la reconnaissance de ses pairds devient son principal objectif !
6. Vers l’amélioration continue
La pérennité de ce que le Craftsman produit est également un enjeu : pour que ce produit survive au vieillissement accéléré si endémique de l’IT, il faut donc lui adjoindre des tests (automatisés) ! Plus important que tout : le Craftsman met ses compétences d’artisan au service d’un client. Il cherche à comprendre ses besoins, et a lui proposer rapidement des solutions élégantes pour lui apporter une réelle valeur ajoutée.
Et comme la perfection n’existe pas, le crafstman procède par itérations courtes, et développe la collaboration avec son client. Vous avez dit Agilité ?
7. Agilité, collaboration, mindset… et tooling ?
Oui, le Software Craftsmanship a une partie de ses origines dans les méthodologies agiles. Ce n’est pas pour rien que les manifestes Agile et Software Craftsmanship présentent quelques similitudes… On pourrait presque dire que si l’Agilité est une spécification de bonnes pratiques, le Software Craftsmanship est son implémentation au développement logiciel.
Soyons clair, dans un cas comme dans l’autre, le mindset est un élément prépondérant, tout comme l’aspect collaboratif et la recherche de valeur ajoutée. Le Craftsmanship met également en avant un fort axe communautaire.. Le Software Craftsmanship est donc plutôt considéré comme une culture qu’une méthode à proprement parler.
Quelle place pour les outils dans tout ça ? Ce sont ni plus ni moins les moyens d’arriver à nos fins, et il serait bien difficile d’en dresser une liste exhaustive. Mais comment ne pas mentionner Github, l’incarnation parfaite du partage de code entre développeurs du monde entier ? Ou encore le CodingGame, qui transforme l’apprentissage du développement en jeu ?
8. Les bénéfices de l’expérience collective
On évoque surtout le Software Craftsmanship Manifesto, qui édicte les principes de base, et les ouvrages Clean Code ou Refactoring Legacy Code, les videos de démonstration de techniques de développement qu’on peut facilement trouver sur Internet.
Le Craftsman utilise, crée et développe de nouveaux outils tous les jours, et améliore sans cesse la qualité, l’efficacité, la productivité, et la valeur produite, en s’inspirant des travaux communautaires définissant l’état de l’art.
Les expériences démontrent que l’un des moyens les plus efficaces pour conduire une démarche de transformation vers le Craftsmanship consiste à faire intervenir un coach expérimenté, dont le rôle d’animateur, sans dimension hiérarchique, et les compétences techniques permettent à l’équipe de progresser en toute confiance.
Il est peut-être trop tôt pour parler de révolution, mais de l’avis même des utilisateurs, le Software Craftsmanship constitue sans nul doute une évolution du métier de développeur attendue ! Que ce soit pour leurs compétences propres, leurs facilités à s’améliorer et faire progresser rapidement, ou leur capacité à travailler de façon collective et constructive, on observe un très fort accroissement de la demande de Software Craftsmen pour intervenir dans les équipes IT, tous secteurs d’activités confondus.
Pour aller plus loin, consultez cet article.
En résumé :
Les informaticiens ont commencés à se baser sur la méthode agile pour améliorer leur travail. En 2008, le mouvement du Software Craftsmanship fait ses premiers pas. C’est l’apparition d’une nouvelle culture dans la création de logiciels en laissant de côté le budget et le délai de livraison des produits.
Le Craftsman utilise, crée et développe de nouveaux outils tous les jours, et améliore sans cesse la qualité, l’efficacité, la productivité, et la valeur produite, en s’inspirant des travaux communautaires définissant l’état de l’art.