Bien plus qu’une simple « méthode » de gestion de projet, l’approche agile est un changement de paradigme, c’est une philosophie, un état d’esprit, tant la différence est grande avec les méthodes de gestion de projet prédictives et séquentielles dites classiques.
La notion même de gestion de projet est remise en cause au profit de la gestion de produit.
L’approche agile se base sur un principe simple : planifier la totalité d’un projet en amont des développements, dans les moindres détails, est contre-productif. En effet, par définition, il est impossible de prévoir ce qui est imprévisible. Partant de ce constat, organiser et planifier tous les aspects d’un projet sera sûrement une perte de temps. Des aléas surviendront, perturberont l’avancée du projet et forceront l’équipe à revoir toute sa planification.
Là où les méthodes de gestion de projet classiques n’ont qu’une seule livraison finale amenant parfois à un résultat décevant devant être modifié, avec toute la perte de temps et d’argent que cela engendre (effet tunnel), l’agilité propose une approche itérative et incrémentale de la gestion de produit permettant aux équipes de créer de la valeur plus facilement. Plutôt que de tout miser sur un lancement majeur, une équipe agile livre son travail par petits incréments exploitables. Les exigences, les plans et les résultats sont évalués en continu (approche empirique). Les équipes disposent donc d'un mécanisme naturel pour s’adapter aux changements.
« Nous n'avons pas inventé les principes à la base du Manifeste Agile. Ce sont les principes de la méthode scientifique. Galilée les utilisait. Archimède les utilisait. »
Dave West - Product Owner et PDG de scrum.org
Ces principes ont été adaptés pour le développement informatique à la fin des années 80. La première approche de gestion de projet de développement itératif date de 1986. La première mise en œuvre du framework Scrum date de 1993.
Publié en 2001, le Manifeste Agile marque la naissance de la « méthodologie » telle que nous la connaissons aujourd'hui. En effet, dix-sept experts du développement d'applications informatiques ont rédigé un manifeste destiné à dépasser les modes traditionnels de développement, périmés selon eux. Le dénominateur commun de leur profession de foi repose alors sur le terme « Agile ».
Depuis, beaucoup de frameworks agiles comme Scrum, Kanban, Lean ou l'eXtreme Programming ont été adoptés par les équipes de développement pour réduire le gaspillage et accroître la transparence, tout en s’adaptant aux besoins changeants des clients. Chacun incarnant les principes fondamentaux que sont les itérations fréquentes, l'apprentissage continu et la qualité élevée.
Le Manifeste Agile contient l'essence et la philosophie de l'approche, déclinée en quatre valeurs et douze principes. Il illustre à lui seul le changement culturel profond qui est en jeu.
« Nous découvrons comment mieux développer des logiciels par la pratique et en aidant les autres à le faire. Ces expériences nous ont amenés à valoriser :
Nous reconnaissons la valeur des seconds éléments, mais privilégions les premiers. »
L’agilité est une pratique humaine où l'individu et le bien-être de chaque membre de l’équipe sont sérieusement privilégiés. En offrant un espace de travail plus convivial et en faisant confiance aux équipes, elles sont plus productives.
Dans les principes agiles, l’importance est donnée aux individus et à leurs intéractions. Pour cela les équipes s'auto-organisent de façon à ce qu’elles trouvent elles-mêmes comment être les plus efficaces possible. Les équipes s’alignent autour des solutions qu’elles choisissent ensembles. La collaboration, la communication, la confiance et l’esprit d’équipe sont ainsi renforcés. La compréhension mutuelle est également favorisée.
L’amélioration continue est essentielle dans le monde de l’agilité. Grâce à des cérémonies agiles, les équipes ont une plus forte capacité à identifier comment améliorer les processus. Elles développent une aptitude à éviter que les erreurs du passé ne se reproduisent et anticipent mieux les problèmes à venir. Le Manifeste Agile considère que les équipes peuvent toujours améliorer leur façon de faire et leur organisation.
Des logiciels opérationnels sont des logiciels qui correspondent parfaitement au besoin initial des clients et/ou des utilisateurs finaux. Dans les projets agiles des produits de qualité sont implémentés.
Dans cette valeur se cache le terme « opérationnel ». Les équipes font donc le nécessaire pour limiter au maximum le risque de futurs bugs grâce à des concepts d’ingénierie logiciel comme les tests unitaires, les tests d’acceptances, les tests de charges ou les tests qualitatifs de code. Faire un projet agile ne permet pas de développer plus rapidement mais d’avoir un produit de meilleure qualité.
La qualité fonctionnelle passe par une bonne documentation fonctionnelle et la qualité technique par une bonne documentation technique.
Tout comme le produit, la documentation technique et fonctionnelle se construit par morceau et s'alimente au fur et à mesure des itérations et des développements. Cette technique permet de limiter le gaspillage d’énergie dans la rédaction d’une documentation qui pourrait changer dans le temps.
Dans les approches agiles, la plus haute priorité est de satisfaire le client, les produits réalisés sont donc totalement centrés sur les utilisateurs.
Malheureusement, la présence des clients n’est pas toujours possible, des représentants comme les Product Owner ou les Customer Care seront leurs porte-paroles.
La meilleure façon de livrer un produit qui correspond aux attentes des utilisateurs est de les impliquer tout au long du processus. Lors de la phase de préparation du nouveau produit ou d’une nouvelle fonctionnalité, les clients sont régulièrement consultés afin que le futur produit ou la future fonctionnalité réponde au mieux à leurs attentes.
Pour obtenir un retour régulier (boucles de feedbacks courtes) et savoir si les fonctionnalités livrées sont en adéquation avec les demandes clients, des démonstrations produits sont organisées à la fin de chaque cycle de développement.
Les Product Owner et/ou les Customer Care vont également travailler régulièrement avec leurs clients pour réfléchir aux prochaines fonctionnalités ou aux améliorations futures des fonctionnalités déjà livrées.
En effet, le Manifeste Agile insiste sur le fait que les clients soient au centre des attentions. Les équipes font leur possible pour créer une relation privilégiée avec les clients en les faisant intervenir lors des différentes phases de construction du produit. Ce sont les clients qui valident chaque étape du projet. L'évolution de leurs besoins est ainsi prise en compte et des ajustements sont effectués en temps réel afin de répondre à leurs attentes.
Au lieu d'avoir un contrat basé sur un cahier des charges complet qui impose de livrer cent pour cent de ce qui est indiqué au sein de ce dernier (scope fixe), un contrat agile fixera plutôt les ressources (équipe de réalisation) et le temps de réalisation (itération) mais ne figera pas le scope (adaptation aux changements) comme le montre le schéma ci-dessous.
Une organisation agile est une organisation capable de s’adapter à temps aux imprévus. Elle accueille favorablement les changements de besoins du client, même tard dans le projet grâce à des mécanismes naturels d’adaptation. Les processus agiles exploitent le changement pour donner un avantage compétitif au client.
L’agilité est donc un modèle stratégique et comportemental en perpétuel équilibre entre :