Cet article fait suite au #TestCulture sur la naissance de la méthode agile. Points de culture sur le monde du test, partage d'anecdotes et discussion autour du test et de l'automatisation, #TestCulture est un rendez-vous hebdomadaire sur le compte Twitter d'Agilitest, qui a lieu tous les jeudis à 16h GMT.
Pour parcourir le fil de discussion, cliquez sur le tweet ci-dessous :
Les origines de l'Agilité
Tout a commencé en 1986. Ikujiro Nonaka et Hirotaka Takeuchi - deux universitaires - ont observé des entreprises telles que Toyota et ont défini trois catégories d'entreprises :
- Les entreprises qui divisent le travail en phases bien définies et ne passent pas à la phase suivante tant que la précédente n'est pas terminée.
- Les entreprises où les phases se chevauchent légèrement, en partant du constat qu'il est concevable, par exemple, de commencer l'architecture lorsque 80 % des spécifications ont été réalisées.
- Des entreprises où tout est fait en même temps.
Source : Cartes de maturité agile
L'émergence du terme "Agile"
Le terme "agile" est apparu dans le monde des affaires anglophone au début des années 1990. En 1991, James Martin (consultant et auteur anglais dans le domaine des technologies de l'information, il est connu pour ses travaux sur l'ingénierie informatique) s'est basé sur l'évolution continue des techniques informatiques et a proposé une méthode de développement rapide d'applications.
Un manifeste sur l'agilité
En 2001, un manifeste pour le développement logiciel agile a été rédigé aux États-Unis par dix-sept experts en développement logiciel. Chacun de ces experts avait déjà développé de nouvelles méthodes plus légères que les méthodes traditionnelles inspirées du génie civil. Si les méthodes agiles ne sont pas apparues grâce à ce manifeste, celui-ci fait cependant officiellement référence à ces méthodes sous le terme Agile.
Quatre valeurs ont été définies dans le manifeste :
- Iterative
Fournit un système complet dès le départ, puis modifie la fonctionnalité de chaque sous-système à chaque nouvelle version.
- Incrémentiel
Le système tel que spécifié dans les exigences est divisé en petits sous-systèmes par fonctionnalité. De nouvelles fonctionnalités sont ajoutées à chaque nouvelle version.
- Auto-organisation
L'équipe dispose de l'autonomie nécessaire pour s'organiser afin de réaliser au mieux les éléments de travail.
- Emergent
On "laisse" la technologie et les exigences émerger au cours du cycle de développement du produit.
Agile est actuellement un concept général qui englobe de nombreuses méthodes. Les méthodes agiles ne supplanteront pas les méthodes traditionnelles, car divers processus d'ingénierie logicielle sont toujours nécessaires.
Les douze principes du Manifeste pour le développement logiciel agile
Les quatre valeurs du Manifeste Agile ont été déclinées en douze principes, afin de fournir un support opérationnel aux équipes qui souhaitent les suivre.
- Satisfaction des clients grâce à la livraison rapide et continue de logiciels de qualité.
"Notre priorité absolue est de satisfaire le client par la livraison rapide et continue de logiciels de valeur."
- Ouverture à l'évolution des besoins, même en fin de développement.
"Accueillez l'évolution des exigences, même à un stade avancé du développement. Les processus agiles exploitent le changement pour l'avantage concurrentiel du client."
- Livrer fréquemment des logiciels fonctionnels
"Livrer des logiciels de travail fréquemment, de quelques semaines à quelques mois, avec une préférence pour les délais les plus courts."
- Une coopération étroite et quotidienne entre les hommes d'affaires et les développeurs
"Les hommes d'affaires et les développeurs doivent collaborer quotidiennement tout au long du projet."
- Les projets sont construits autour de personnes motivées, auxquelles il faut faire confiance.
"Construisez des projets autour d'individus motivés. Donnez-leur l'environnement et le soutien dont ils ont besoin, et faites-leur confiance pour accomplir le travail."
- La conversation en face à face est la meilleure forme de communication
"La méthode la plus efficace et la plus efficiente pour transmettre des informations à et au sein d'une équipe de développement est la conversation en face à face."
- Le logiciel fonctionnel est la principale mesure du progrès
Si le résultat de votre travail n'est pas conforme aux attentes de votre client, vous avez des problèmes.
- Développement durable, capable de maintenir un rythme constant
"Les processus agiles favorisent le développement durable. Les commanditaires, les développeurs et les utilisateurs devraient être en mesure de maintenir un rythme constant indéfiniment."
- Une attention constante à l'excellence technique et à la bonne conception
"L'attention constante portée à l'excellence technique et à une bonne conception renforce l'agilité."
- La simplicité est essentielle
"La simplicité - l'art de maximiser la quantité de travail non effectué - est essentielle." Les clients achètent une solution pour résoudre un problème spécifique qu'ils ont. Ils ne paient pas pour la quantité d'efforts que nous investissons. Il est important de faire quelque chose de manière simple.
- Les meilleures architectures, exigences et conceptions émergent d'équipes auto-organisées.
"Les meilleures architectures, exigences et conceptions émergent d'équipes auto-organisées."
- Régulièrement, l'équipe réfléchit à la manière de devenir plus efficace et s'adapte en conséquence.
"À intervalles réguliers, l'équipe réfléchit à la manière de devenir plus efficace, puis ajuste son comportement en conséquence."
En conclusion
A l'époque, le terme "Agile" définissait un concept déjà présent mais pas très populaire. Il donnait les conditions pour qualifier une méthode qui sort des schémas classiques. Aujourd'hui, ce terme est beaucoup utilisé dans le marketing digital et les nouvelles technologies, parfois à juste titre, parfois à tort. Nul doute que cette méthode va rester une grande tendance et un idéal pour de nombreuses entreprises.