Qu’est-ce que l’agilité ?
L’approche agile intègre de nouveaux aspects dans la gestion des projets informatiques, elle fonctionne donc différemment des approches traditionnelles prédictives de type cycle en V ou waterfall (en cascade) trop séquentielles qui sont héritées de l’industrie.
Il existe plusieurs méthodes agiles qui découlent du Manifeste Agile, édité en 2001 lors de la réunion de dix-sept figures éminentes du développement logiciel pour améliorer leurs processus en unifiant leurs méthodes respectives. Dans cette assemblée on retrouve Ward Cunningham, l’inventeur du Wiki ainsi que les promoteurs du framework scrum que nous aborderons dans quelques instants.
« Une méthode agile est une approche itérative et incrémentale, qui est menée dans un esprit collaboratif, avec juste ce qu’il faut de formalisme. Elle génère un produit de haute qualité tout en prenant en compte l’évolution des besoins des clients. » (Messager & Tabaka, 2010)
Deuff (2013) écrit que les méthodes agiles sont « des modèles itératifs et incrémentaux qui visent à répondre au mieux aux besoins exprimés par leurs commanditaires, en offrant une grande réactivité par rapport à leurs demandes » (Deuff & Cosquer, 2013).
Quels sont ses fondement théoriques ?
Ces deux définitions mettent l’accent sur l’aspect itératif et incrémental car cela permet d’apporter de la valeur rapidement et régulièrement. Dans un développement itératif, le projet est donc découpé en plusieurs étapes de durée identique (en général quelques semaines), nommées « itérations », à la fin de chacune une version fonctionnelle du produit est attendue par le client pour validation, nous parlons d’une version intermédiaire du produit final et non d’un prototype. Les fonctionnalités sont ainsi progressivement intégrées au produit qui est conçu de façon « incrémentale ».
Nous retrouvons également dans les définitions un des aspects fondamentaux des méthodes agiles qui concerne l’évolution du besoin, il faut donc partir du principe que les demandes des clients peuvent évoluer dans le cycle de vie du projet et qu’il est nécessaire de les prendre en compte afin d’arriver au produit le plus adapté possible à leurs besoins.
1. Les individus
- L’authenticité de chaque individu est reconnue (il n’est pas considéré comme une ressource)
- La valeur la plus importante de chaque individu est dans ses interactions et sa collaboration (diversité technique et fonctionnelle)
- Les individus travaillent au même endroit (idéalement dans la même pièce)
- L’agilité permet aux équipes de s’auto-organiser et ne leur impose aucune méthode ou processus
- L’équipe est responsable de son résultat
- L’agilité fait confiance à l’équipe pour livrer le travail par les moyens jugés meilleurs
2. Le fonctionnel
- Les meilleurs produits sont créés en impliquant directement le client avec l’équipe
- L’équipe collabore avec le client pour détailler et prioriser les besoins qui peuvent être en changement constant
- Les fonctionnalités sont décrites dans un format concis, l’aspect le plus important étant la conversation et non la documentation
- L’exploration commence uniquement lors de la sélection des fonctionnalités pour une implémentation immédiate
- La simplicité est la clé pour la conception de chaque fonctionnalité
- L’utilité de la fonctionnalité développée est immédiatement vérifiée par le client suite à l’implémentation
3. La qualité
- La qualité est un facteur clé du succès d’un produit
- Tout le monde est concerné par la qualité
- Il y’a un revirement complet du concept de “contrôle de qualité” vers la “livraison de qualité”
- La qualité est achevée en :
- Favorisant l’automatisation des tests
- Encourageant les revues de code et le pair programming
- Acceptant le développement itératif
- Améliorant le code même s’il n’y a pas de nouvelles fonctionnalités
- Les bonnes architectures ne sont pas définies à l’avance mais émergent au fur et à mesure que le développement avance
4. Les outils
- Ils font partie des derniers facteurs de réussite d’un projet
- Ceux auxquels les équipes prêtent le plus d’attention sont ceux qui servent pour les builds journaliers, l’intégration continue et les tests automatisés
- L’outil est meilleur lorsqu’il aide à renforcer la motivation, la communication et la collaboration dans l’équipe
5. Le temps
- Les dates de livraison, les délais et les budgets peuvent être définis arbitrairement
- La livraison du produit en intervalles courts et en releases incrémentales permet aux décideurs de définir les dates de mise à disposition des fonctionnalités
- Le rythme de travail de l’équipe de développement est soutenu pour garder une vitesse constante
6. La valeur
- La valeur des fonctionnalités peut changer avec le temps
- Des releases plus fréquentes permettent d’avoir un feedback client régulier
- La livraison des nouvelles fonctionnalités aussitôt le besoin détecté
7. Le processus
L’Agile encourage les individus plutôt que les processus, mais il existe néanmoins un minimum de processus issus du cadre de travail agile :
- Un planning qui précède l’implémentation immédiate
- Une réunion journalière pour renforcer la collaboration et la communication
- Une évaluation du produit fonctionnel
- Les cérémonies d’inspection et d’adaptation font aussi partie d’un processus minimal nécessaire à l’amélioration continue
8. Le conflit
- Considéré comme étant un aspect naturel de tout système complexe telle qu’une équipe
- Le conflit et les interférences contribuent à la créativité et l’innovation au sein d’une équipe
- Les challenges et le désaccord constructif sont les signes d’une équipe en bonne santé
Dans la prochaine partie de cette série d’articles, nous parlerons des valeurs et des principes du manifeste agile…