Le développement logiciel Agile (1) est une approche qui se définit par un ensemble de valeurs et de principes et qui est mise en application par différentes pratiques provenant entre autres de Scrum (2), eXtreme Programming (3) et Lean (4).
La majorité de ces principes et pratiques existe depuis plusieurs années déjà, mais c’est en 2001 qu’ils ont été regroupés sous la bannière « Agile » par la publication du manifeste du même nom (5). Depuis, leur adoption en entreprise grimpe d’année en année et atteignait 45% au 3e trimestre de 2009, selon une étude de Forrester (6). Les dirigeants informatiques sont donc dans une situation où ils doivent piloter des initiatives Agiles ou au moins évaluer l’intérêt de cette nouvelle approche pour laquelle les rapports d’expérience positifs se multiplient.
Mais pourquoi veut-on faire le virage Agile? Quels objectifs cherchons-nous à atteindre? Surtout, quels sont les impacts de l’adoption d’une approche Agile sur l’ensemble de l’organisation? Dans cet article, je répondrai à ces trois questions en commençant tout d’abord par définir rapidement ce qu’est le développement Agile.
Les quatre piliers du développement logiciel Agile
Une organisation qui développe du logiciel de façon Agile se caractérise par les quatre éléments suivants :
• Le processus de travail en place est empirique, c’est-à-dire qu’il consiste en une série de courts cycles appelés itérations (2 à 4 semaines). Chaque fin d’itération est une opportunité pour les équipes de constater le progrès accompli, de se questionner sur les améliorations à apporter au produit et à la mécanique de travail et de réviser la planification du projet. Un parfait équilibre entre anticipation et adaptation. Le processus empirique le plus utilisé présentement est Scrum;
• La gestion de projet repose sur la priorisation des requis selon leur valeur d’affaires. Pour ce faire, on intensifie la collaboration avec le client en lui confiant un nouveau rôle, celui de « Propriétaire de produit ». Le client, en collaboration avec l’équipe de développement, raffine donc constamment la définition de ses requis et nourrit ainsi les itérations de conception en priorisant les travaux à réaliser en fonction du retour sur l’investissement;
• La construction du logiciel se fait de façon incrémentale. Les équipes Agiles cherchent à tout pris à éviter le travail « non terminé ». C’est pourquoi elles travaillent à chacune des itérations, à produire un incrément du produit de qualité « production ». On assure ainsi un niveau de qualité constant et une intégration continue du produit final;
• Les équipes sont multidisciplinaires et autoorganisées. Pour assurer une prise de décision rapide et une productivité maximum, les équipes Agiles regroupent l’ensemble des compétences nécessaires au bon déroulement du projet. Ainsi, développeurs, analystes, testeurs et gestionnaires travaillent en étroite collaboration tout au long du projet.
Les gestionnaires des équipes Agiles évitent la « micro gestion » et agissent maintenant comme facilitateur pour assurer la collaboration et l’émergence.
Pourquoi adopte-t-on l’Agilité ?
La popularité croissante de l’approche Agile n’est pas un hasard. Les dysfonctions de l’industrie du développement logiciel sont nombreuses et les projets qui ne satisfont pas les attentes des clients sont monnaie courante. L’approche Agile se veut donc une réponse aux problèmes de l’industrie. Voici certains des bénéfices les plus souvent cités:Retour rapide sur l’investissement. En produisant des incréments logiciels « terminés » itération après itération, il est maintenant possible de déployer en production plus rapidement et plus souvent, offrant ainsi un retour plus rapide sur l’investissement aux commanditaires des projets;
Augmentation de la qualité. Les équipes Agiles produisent plus de qualité que les équipes traditionnelles dans tous les sens du mot. Premièrement, la qualité interne du code est grandement augmentée via l’utilisation de nouvelles pratiques d’ingénierie telles que le développement piloté par les tests (TDD), l’intégration continue, et le réusinage du code. De plus, la qualité perçue du logiciel est également grandement augmentée grâce à des démonstrations fréquentes aux utilisateurs finaux. Des améliorations peuvent alors être immédiatement apportées lors des itérations subséquentes;
Augmentation de la productivité. Une équipe Agile cherche constamment à s’améliorer. Elle le fait en effectuant des rétrospectives à la fin de chacune des itérations. De ces rétrospectives découle un plan d’action visant à réduire les inefficacités rendues visibles par les itérations précédentes;
Meilleure gouvernance des projets. Livrer du logiciel de qualité « production » à chacune des itérations offre une visibilité exceptionnelle sur l’avancement des travaux. Les obstacles au bon déroulement des projets sont mis en lumière rapidement, donnant aux équipes et à la direction l’occasion d’apporter les correctifs nécessaires;
Augmentation du moral des troupes. Il ne faut pas négliger non plus l’impact sur la motivation et l’engagement des employés. En maximisant la collaboration, en permettant aux individus de se concentrer sur de petits objectifs courts à chacune des itérations et surtout, en créant des équipes autoorganisées, on note une augmentation significative de la satisfaction des employés impliqués dans des projets Agiles.
À quels impacts peut-on s’attendre ?
Les impacts liés à la mise en place d’une approche de développement Agile peuvent être nombreux, et ce, à tous les niveaux : organisation du travail, rôle et responsabilité, pratiques d’ingénierie et surtout culture organisationnelle. Voici une liste des principaux impacts d’une transition vers une approche Agile:Structure organisationnelle. De nombreuses grandes organisations ont une structure divisionnelle. Les responsables de projets doivent constituer des équipes avec des individus relevant de différents directeurs fonctionnels. Les approches Agiles invitent les organisations à se restructurer autour d’équipes dédiées et multidisciplinaires;
Gouvernance et prise de décision. L’Agilité cherche à créer des équipes responsables et autonomes. On invite les gestionnaires à appliquer un style de leadership au service des équipes, repoussant ainsi la prise de décision au niveau le plus près de l’activité exécutée. Les gestionnaires sont alors garants des lignes directrices en soutien aux décisions plutôt que comme décideurs ultimes;
Relation avec les clients. Au cœur de l’Agilité, il y a le concept de collaboration étroite avec le client. La relation avec ceux-ci sera donc fortement touchée par la transition Agile. La forme contractuelle traditionnelle et la disponibilité attendue des clients doivent être évaluées pour pouvoir assurer une transition efficace;
Processus de développement. Le processus de développement doit être révisé et « Agilisé » pour s’aligner sur les valeurs, principes et pratiques de l’Agilité;
Outils et technologies. L’acquisition de nouveaux outils pour soutenir la gestion de projet et les pratiques d’ingénierie Agiles est inévitable.
Conclusion
L’approche Agile se veut donc une alternative de choix pour contrer les problèmes de qualité, de dépassement des coûts et d’insatisfaction chronique des clients liés à l’industrie des technologies de l’information. Cependant, avant de vous lancer dans cette aventure, questionnez-vous sur les raisons qui vous poussent vers l’agilité et évaluez-en bien les impacts. Mettre en place les bonnes pratiques et les bons outils peut s’avérer plutôt simple dans certains contextes, mais effectuer le changement culturel requis par les valeurs et principes de l’Agilité peut s’avérer être un défi de taille.
Références
1. Définition complète de l’approche Agile : http://fr.wikipedia.org/wiki/M%C3%A9thode_agile
2. Définition complète de Scrum : http://www.scrum.org/scrumguides/
3. Définition complète de XP : http://xprogramming.com/xpmag/whatisxp
4. Application des principes Lean au développement logiciel : http://www.poppendieck.com/
5. Le manifeste Agile : http://agilemanifesto.org/ 6. Agile Development : Mainstream adoption has changed agility, 20 janvier 2010, par Dave West et Tom Grant, Forrester Research.
Le Manifeste Agile
Le Manifeste Agile, écrit en 2001 par 17 praticiens du développement logiciel, dicte les valeurs et principes recherchés en développement logiciel Agile. Ces quatre valeurs sont : • Personnes et interactions plutôt que processus et outils • Logiciel fonctionnel plutôt que documentation complète • Collaboration avec le client plutôt que négociation de contrat • Réaction au changement plutôt que suivi d’un plan rigide En fait, bien que les éléments de droite soient importants, ceux de gauche le sont encore plus.