Software craftsmanship
Le software craftsmanship (ou l'« artisanat du logiciel ») est une approche de développement de logiciels qui met l'accent sur les compétences de développement des développeurs. Il se propose comme une réponse aux maux récurrents de l'industrie du logiciel et à la tendance à l'externalisation, qui priorise les préoccupations financiÚres avant la responsabilité du développeur.
Ce mouvement prĂŽne le cĂŽtĂ© artisanal du dĂ©veloppement logiciel, autrement dit, d'aprĂšs le manifeste de l'artisanat du logiciel, il ne suffit pas qu'un logiciel soit fonctionnel, mais il faut qu'il soit bien conçu[1]. L'idĂ©e principale est de garantir la fiabilitĂ© et la maintenabilitĂ© des applications d'oĂč l'importance de professionnels aptes Ă concevoir des logiciels dans le respect d'indicateurs de qualitĂ© logicielle. Le software craftsmanship et l'agilitĂ© sont alors complĂ©mentaires, car lĂ oĂč l'agilitĂ© se limite Ă la souplesse des cycles de dĂ©veloppement, le software craftsmanship s'Ă©tend sur la façon mĂȘme dont est conçu et Ă©crit le code.
Historique
[modifier | modifier le code]Le mouvement s'est inspirĂ© des concepts dĂ©veloppĂ©s dans le livre The Pragmatic Programmer: From Journeyman to Master (Andy Hunt & David Thomas â 1999). Toutefois, bien avant, en 1992, Jack W. Reeves[2] a rĂ©digĂ© un essai dans le journal du C++ intitulĂ© "What Is Software Design?" oĂč il explique pourquoi le dĂ©veloppement logiciel est plus un art qu'une discipline d'ingĂ©nierie. Ensuite a Ă©tĂ© publiĂ© en 2001 l'ouvrage de Pete McBreen, Software Craftsmanship oĂč il propose une meilleure mĂ©taphore pour qualifier les dĂ©veloppeurs de logiciels en remplacement de la traditionnelle appellation d'ingĂ©nieur.
En 2008, le software craftsmanship est réellement né en tant que mouvement alors que Uncle Bob proposa comme cinquiÚme valeur du manifeste agile "craftsmanship over execution" (En français: "l'artisanat plus que l'exécution").
Cette valeur n'ayant pas Ă©tĂ© intĂ©grĂ©e au manifeste agile, un certain nombre d'aspirants artisans du logiciel se sont rencontrĂ©s Ă Libertyville dans l'Illinois la mĂȘme annĂ©e afin de dĂ©finir un ensemble de principes pour le software craftmanship.
Enfin en 2009, le manifeste issu des diffĂ©rentes rencontres a Ă©tĂ© publiĂ© pour ĂȘtre vu et signĂ© par les diffĂ©rents partisans du mouvement : "Le manifeste pour l'artisanat du logiciel". DĂšs lors, partout Ă travers le monde, des rencontres sont organisĂ©es pour crĂ©er une communautĂ© de professionnels, cherchant continuellement Ă Ă©lever le niveau selon les principes Ă©voquĂ©s dans le manifeste.
Principes
[modifier | modifier le code]D'aprĂšs le manifeste de « l'artisanat du logiciel » il ne suffit pas qu'un logiciel soit fonctionnel, il doit aussi ĂȘtre bien conçu et Ă©conomique. Le danger de la sur-conception, par rapport au codage, sâapparente alors Ă un retour Ă la « prĂ©dictivité » des mĂ©thodes classiques et reprĂ©sente le principal risque dâintĂ©gration de ces nouvelles prĂ©occupations. Câest sur ce point que lâexpĂ©rience des dĂ©veloppeurs expĂ©rimentĂ©s entre en jeu, car ils doivent disposer des compĂ©tences permettant de prendre les bonnes dĂ©cisions. Cette exigence implique une formation spĂ©cialisĂ©e apte Ă rĂ©soudre de nombreuses problĂ©matiques (fonctionnelles, techniques et Ă©conomiques).
Le software craftsmanship consiste donc Ă remettre les pratiques de dĂ©veloppements ignorĂ©es par les autres mĂ©thodes au cĆur de la production de logiciel. En effet, Scrum, Kanban ou Lean ne proposent rien Ă ce sujet, et si le code nâest pas de qualitĂ©, quelle que soit la longueur et le nombre des itĂ©rations, le logiciel sera livrĂ© en Ă©tat de dysfonctionnement. De plus, la maintenance corrective et Ă©volutive sera difficile et coĂ»teuse. DâoĂč l'importance de dĂ©veloppeurs compĂ©tents et aptes Ă user de leur savoir-faire pour concevoir des produits dans le respect des indicateurs de qualitĂ© logicielle.
Le software craftsmanship promeut aussi 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Ă©. La « non qualité » a un coĂ»t stratĂ©gique (livraison reportĂ©e et time to market allongĂ©e), mais aussi financier (exemple : coĂ»ts de maintenance).
Manifeste des « artisans du logiciel »
[modifier | modifier le code]En tant quâaspirants « artisans du logiciel », nous relevons le niveau du dĂ©veloppement professionnel de logiciels par la pratique et en aidant les autres Ă acquĂ©rir le savoir-faire. GrĂące Ă ce travail, nous avons appris Ă apprĂ©cier :
-  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 valeur.
-  Pas seulement les individus et leurs interactions, mais aussi une communauté professionnelle.
- Â Pas seulement la collaboration avec les clients, mais aussi des partenariats productifs.
« C'est-à -dire qu'en recherchant les éléments de gauche, nous avons trouvé que les éléments de droite sont indispensables. »
Fondamentalement : un retour non référencé à XP
[modifier | modifier le code]Finalement, il ressort de lâanalyse de cette dĂ©claration la constatation dâune reformulation des autres mĂ©thodes agiles et particuliĂšrement d'XP :
- Qualité : conception simple (DDD, POO), clean code et refactoring, tests dont TDD (XP)
- Humilité : je me remets en question et je mâamĂ©liore en continu (rĂ©trospectives de Scrum)
- Partage : pair programming, programmation en groupe et propriété collective du code (XP)
- Pragmatisme : je comprends les contraintes et mâadapte si nĂ©cessaire (rĂ©trospectives de Scrum)
- Professionnalisme : je traite mon client comme un partenaire (principe du « courage » dâXP)
Liens externes
[modifier | modifier le code]Bibliographie
[modifier | modifier le code]- (en) Sandro Mancuso, The Software Craftsman : Professionalism, Pragmatism, Pride, Prentice Hall, , 288 p. (ISBN 978-0-13-405250-2, lire en ligne
) - (en) Dave Hoover et Adewale Oshineye (Foreword by Ward Cunningham), Apprenticeship Patterns : Guidance for the Aspiring Software Craftsman, O'Reilly, , 176 p. (ISBN 978-0-596-51838-7 et 0-596-51838-2)
- (en) Robert C. Martin, Clean Code : A Handbook of Agile Software Craftsmanship, Addison Wesley, , 431 p. (ISBN 978-0-13-235088-4 et 0-13-235088-2)
- (en) Pete McBreen, Software Craftsmanship : The New Imperative, Boston, Addison Wesley, , 187 p. (ISBN 0-201-73386-2)
- (en) Richard Sennett, The Craftsman, Yale University Press, , 326Â p. (ISBNÂ 978-0-300-11909-1 et 0-300-11909-7)
- (en) Bill Pyritz, « Craftsmanship versus engineering: Computer programming - An art or a science? », Bell Labs Technical Journal,â (lire en ligne)
- Sallah Kokaina, Software Craftsmanship : L'art du code et de l'agilité technique en entreprise, Editions ENI, (ISBN 978-2-409-02154-1)
- Cyrille Martraire, Arnaud Thiéfaine, Dorra Bartaguiz, Fabien Hiegel et Houssam Fakih, Software Craft : TDD, Clean Code et autres pratiques essentielles, Dunod, (ISBN 978-2-100-82520-2 et 978-2-100-88043-0)
Notes et références
[modifier | modifier le code]- â « Manifesto for Software Craftsmanship », sur manifesto.softwarecraftsmanship.org (consultĂ© le )
- â « Jack W. Reeves - About the Author », sur developerdotstar.com (consultĂ© le ).
