L’agilité fait sûrement partie des concepts ayant le plus influencé les développements logiciels ces vingt dernières années. Pour autant, il a aussi été très largement détourné. Revenons donc à ses principes fondamentaux.
La gestion de projets
1/ une documentation exhaustive : le client rédigeait un cahier des charges (souvent un joli pavé, allant de quelques dizaines de pages à plusieurs centaines) qui contenait l’ensemble des exigences que le logiciel devait respecter.
2/ suivi d’un plan : l’équipe technique se chargeait de l’implémenter. Une fois l’implémentation terminée, le plan de vérification démontrait le respect des exigences.
3/ négociation contractuelle : en fonction du nombre d’exigences respectées et du respect du délai imparti, le client rémunérait l’équipe technique.
Cette méthode de travail présentait de nombreux problèmes, comme par exemple :
- le client devait imaginer l’intégralité de son projet à l’avance, jusqu’aux moindres détails. Avec la complexité grandissante des projets, il est vite devenu impossible de prévoir toutes les situations, et donc de mettre des exigences en face de chaque situation.
- un véritable “effet tunnel” existait entre le début et la fin du projet : le client donnait son cahier des charges au début, et récupérait un produit à la fin. Si une des hypothèses initiale était fausse, le client ne s’en rendait compte qu’une fois le produit livré. S’il voulait faire évoluer le produit, un nouveau projet devait être négocié.
- Le produit a une date de fin, ce qui signifie que les développeurs n’ont aucune obligation quant à la qualité du code. Si le projet n’est pas facile à maintenir ou à faire évoluer par la suite, ce n’est pas un problème !
– des trains trop grands par rapport à la taille des quais
– la machine à tickets de métro parisien, ou “comment ne pas répondre correctement au besoin des usagers ?”
L’agilité
On retrouve le terme dès les années 1970, mais l’émergence de la théorie date réellement de l’année 2001 où un groupe de 17 experts s’est retrouvé pour en définir les bases communes.
Le manifeste agile, disponible ici, est le résultat de ce séminaire : il définit les 4 valeurs suivantes :
Nous valorisons
- Les individus et leurs interactions plus que les processus et les outils
- Des logiciels opérationnels plus qu’une documentation exhaustive
- La collaboration avec les clients plus que la négociation contractuelle
- L’adaptation au changement plus que le suivi d’un plan
Nous reconnaissons la valeur des seconds éléments, mais privilégions les premiers.
Comme explicité dans la dernière phrase, ces valeurs sont toutes basées sur la forme “élément1 plus que élément2″ : elles consistent donc bien à privilégier de nouvelles valeurs par rapport à celles historiques de la gestion de projet. Pour autant, il ne s’agit aucunement de les renier !
A noter que 12 principes ont aussi été formulés pour expliciter ces valeurs, je les détaillerai dans un prochain article.
Les individus et leurs interactions plus que les processus et les outils
L’idée derrière cette première valeur est de remettre les individus au centre de la problématique. De nombreux projets sont peu efficaces, ou voués à l’échec, à cause :
- de processus trop lourds : ajouter des garde-fous à chaque étape de conception, ou encore à créer des documents énormes et verbeux jamais relus.
- d’outils (pré?) historiques ne répondant plus aux besoins actuels, mais conservés malgré tout, souvent pour de mauvaises raisons.
- de généralisation d’outils ou de processus à l’ensemble des équipes sur la base qu’ils fonctionnent pour l’une d’entre elles.
Des logiciels opérationnels plus qu’une documentation exhaustive
- avec une architecture pertinente
- avec des tests automatisés pour s’assurer du bon fonctionnement des briques essentielles
- facile à faire évoluer, modulable (si un problème arrive à un endroit, cela ne remet pas en cause l’intégralité du produit).
La collaboration avec les clients plus que la négociation contractuelle
L’adaptation au changement plus que le suivi d’un plan
Dans les méthodes classiques, le périmètre est fixe, les ressources et le temps sont variables. En agilité, on inverse le triangle pour rendre la fonctionnalité adaptable aux ressources et au temps disponible pour la développer.
Conclusion
Ce qu’il faut retenir
- l’agilité est définie dans le manifeste agile qui comprend 4 valeurs et 12 principes
- Les 4 valeurs sont :
- Les individus et leurs interactions plus que les processus et les outils
- Des logiciels opérationnels plus qu’une documentation exhaustive
- La collaboration avec les clients plus que la négociation contractuelle
- L’adaptation au changement plus que le suivi d’un plan