jeu, 28/01/2016 - 16:59
“Software craftsmanship”... encore un buzz-word é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.
“Software craftsmanship”, ou l’art de développer des applications informatiques
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”.
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 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”.
La communauté du craftsmanship
Etre 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 !
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é ?
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 ?
Bénéfice 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.
A propos de l'auteur
Après 13 ans de riches expériences dans le domaine de l’IT, François Lecomte intervient actuellement sur plusieurs projets en tant que Coach Agile, Software Craftsmanship et Devops, afin d'insuffler l’énergie et le goût pour l’amélioration continue qui permet aux équipes Biz-dev-ops de se dépasser !