Une plongée aux sources de l’Agilité

Qu’est ce que l’Agilité ?

Cette question simple mérite d’être posée car nous entendons parler de l’Agilité partout sans prendre le temps de l’expliciter.

En regardant l’article de la méthode Agile sur Wikipedia, nous lisons ceci :

En ingénierie logicielle, les pratiques agiles mettent en avant la collaboration entre des équipes auto-organisées et pluridisciplinaires et leurs clients.

Méthode Agile - Wikipedia

L’Agilité est donc un mode d’organisation et de gestion de projet qui vise la collaboration des équipes et de leurs clients.

En poursuivant l’article nous abordons une définition plus précise de l’Agilité :

Les pratiques Agiles s’appuient sur l’utilisation d’un cadre méthodologique léger mais suffisant centré sur l’humain et la communication. Elles préconisent une planification adaptative, un développement évolutif, une livraison précoce et une amélioration continue, et elles encouragent des réponses flexibles au changement.

Méthode Agile - Wikipedia

A partir de cette définition apparaît des concepts : « cadre méthodologique léger », « centré sur l’humain et la communication ». Nous y lisons également des pratiques comme la planification adaptative, le développement évolutif, ou encore la livraison précoce. De tout cela il semble se dessiner ce que nous appelons les Valeurs et les Principes Agiles issus du Manifeste Agile créé en 2001.

Les Valeurs Agiles sont au nombre de 4 :

Pour les Principes Agiles, c’est une liste de 12 éléments que nous pouvons résumer comme ci-dessous :

  1. Satisfaire le client
  2. Accueillir les changements
  3. Livrer fréquemment
  4. Travailler ensemble (Utilisateurs & Développeurs)
  5. Motiver les personnes
  6. Dialoguer régulièrement
  7. Mesurer l’avancement avec les fonctionnalités du logiciel
  8. Maintenir un rythme constant – Pas de pression inutile
  9. Excellence Technique
  10. Simplicité
  11. Auto-organisation des équipes
  12. Amélioration Continue

Pour lire ces principes avec exactitude, voici un lien vers la page des principes du Manifeste Agile.

Tout cela semble idéal et ne décrit que de manière abstraite l’organisation et la gestion des équipes.

Cela est normal. L’explication vient du fait que l’Agilité n’a pas été inventée en première instance. Elle est le fruit d’une réunification des techniques de gestion de projet et d’équipes qui existaient avant elle.

Voyons les principales techniques qui sont nées avant l’Agilité, qui ont inspiré et qui éclairent les pratiques Agiles.

I. La Gestion de la Qualité & la Roue de Deming

Dans les années 1920, les entreprises s’intéressent à la gestion de Qualité qui recouvre 2 définitions :

  1. La qualité pour l’utilisateur : Le respect et la satisfaction des besoins utilisateurs.
    Cette qualité est considérée comme créatrice de valeur pour l’entreprise et a pour but d’augmenter les recettes.
  2. La qualité de la réalisation : Le fait d’être sans défauts ni erreurs qui peuvent causer une charge supplémentaire de travaille.
    Cette qualité vise davantage la productivité des équipes et tend à diminuer les gaspillages et les coûts.

La gestion de la qualité se fait donc à 2 niveaux :

  • Pour gérer la qualité pour les utilisateurs, les équipes suivent les spécifications et communiquent avec les utilisateurs pour les ajustements potentiels.
  • Pour la qualité de réalisation il faut un processus d’amélioration continue de type PDCA (Plan, Do, Check, Act).

Roue de Deming

Ce cycle PDCA est la fameuse Roue de Deming, dont voici une définition :

  • Plan : Déterminer les besoins des utilisateurs et les processus pour produire les fonctionnalités attendues.
  • Do : Développer les fonctionnalités et mettre en place des outils de mesure de performance.
  • Check : Evaluer la performance des équipes et identifier les améliorations possibles.
  • Act : Mettre en place les actions qui permettent ces améliorations.

Roue de Deming : https://fr.wikipedia.org/wiki/Roue_de_Deming

L’Agilité puise de cette roue de Deming plusieurs notions :

  • Le principe de fonctionnement en itération -> En Agilité, nous avons les Sprints.
  • La mise en place de l’amélioration continue -> En Agilité, il existe une cérémonie récurrente pour l’amélioration continue que l’on appelle la Retrospective.
  • La définition de mesures de performance -> En Agilité, nous mesurons la vélocité pour contrôler la stabilité des équipes.

Le cycle « Plan, Do, Check, Act » est né dans l’industrie (dans les années 20 les projets informatiques n’existent pas). Intéressons nous maintenant aux évolutions liées à la gestion des projets informatiques.

II. Approche itérative & le modèle en spirale de Boehm

De manière générale un projet informatique repose sur un cycle en 3 étapes :

  1. La spécification et la conception des besoins utilisateurs
  2. L’implémentation des fonctionnalités et les tests de validation
  3. La livraison des fonctionnalités implémentées et la maintenance

Une approche intuitive peut être mise en place en considérant que ces étapes se suivent sans revenir en arrière :

  • Les opérations sont séquentielles : On ne passe pas à l’étape suivante avant d’avoir terminé l’étape d’avant.
  • Le processus est linéaire : On ne revient pas sur une étape passée.

Cycle en V & Cycle en cascade

Ce mode opératoire séquentiel et linéaire est à la base des modèles de gestion de projets informatiques qui prévalaient jusqu’aux années 2000. On appelle ces modèles cycle en V ou cycle en Cascade dont voici des représentations :

Cycle en Vhttps://fr.wikipedia.org/wiki/Cycle_en_V

Cycle en Cascadehttps://fr.wikipedia.org/wiki/Mod%C3%A8le_en_cascade

Ces modèles ont pour conséquence de nombreux problèmes :

  • Comme il est très difficile d’être exhaustif dans l’expression des besoins avant de voir les fonctionnalités implémentées, il manque des besoins en amont.
  • Si les besoins utilisateurs évoluent il est impossible de s’adapter aux changements.
  • La conception ne tient pas compte de la complexité technique qui est inhérente aux développements.
  • Les spécifications rédigées en amont du développement doivent être précises et inclure beaucoup de détails pour décrire l’ensemble des besoins. Les spécifications deviennent rapidement très lourdes et difficiles à appréhender. Cela complexifie la compréhension des besoins utilisateurs et la prise de décision.

Ces problèmes occasionnent un taux d’échec des projets très élevé. En 2015, une étude du Standish Group fait référence pour analyser les caractéristiques des projets informatiques de manière mondiale. C’est le Rapport Chaos dont voici un chiffre éclairant :

29% des projets basés sur un cycle en Cascade sont des échecs.

Rapport CHAOS du Standish Group

Bien avant le Rapport Chaos du Standish Group, des ingénieurs s’intéressent à la gestion des risques sur les projets informatiques. En 1988, Barry Boehm tente de répondre aux problèmes identifiés sur le cycle en Cascade en proposant une approche évolutive : le modèle en Spirale.

Modèle en Spirale

Cette approche est réalisée de manière itérative en 4 étapes :

  • Définition des objectifs : On part de l’expression des besoins et on identifie les risques potentiels liés à la conception.
  • Identification et résolution des risques : La conception est lancée sous forme de prototypes et on explore les différentes zone d’incertitude.
  • Développement et tests : L’implémentation démarre sur un périmètre étendu et une validation est réalisée de manière continue.
  • Planification de l’itération suivante : Une inspection des résultats est réalisée pour déterminer le plan d’action de la prochaine itération.

Modèle en Spirale – https://fr.wikipedia.org/wiki/Mod%C3%A8le_en_spirale

L’Agilité s’est inspirée de ce modèle en reprenant les pratiques suivantes :

  • Planification itérative des développements -> En Agilité, les développements sont réalisés au sein d’itérations qui démarrent par la cérémonie de Sprint Planning.
  • Identification des risques et exploration des zones d’incertitude -> En Agilité, il y a une réunion pour affiner les besoins fonctionnels, c’est la cérémonie de Refinement.
  • Inspection des fonctionnalités implémentées -> En Agilité, à chaque fin d’itération les fonctionnalités sont présentées pour avoir des retours lors de la cérémonie de Démo.
  • Analyse des résultats pour adapter l’itération suivante -> En Agilité, lors de la cérémonie de Review, l’équipe Agile inspecte le résultat de l’itération qui vient de s’écouler. C’est le moment de relever les écarts avec le plan d’action du début de l’itération. L’analyse de ces écarts va permettre d’adapter la planification de l’itération suivante.

Ces pratiques correspondent à un cadre de travail dont le but est une meilleure gestion des projets informatiques. Citons à nouveau le Rapport Chaos pour montrer le taux de réussite des projets Agiles en regard des projets en Cascade (Waterfall en Anglais) :


https://www.standishgroup.com/sample_research_files/CHAOSReport2015-Final.pdf

Le modèle en Spirale représente donc une avancée dans la gestion des risques liés aux projets informatiques. L’Agilité s’est inspirée de ce modèle ce qui a augmenté le taux de succès des projets gérés en Agile. Dans la partie suivante, nous aborderons une autre inspiration de l’Agilité qui a permis de réduire les risques des projets : le Lean Thinking.

III. Lean Thinking & Kanban

Dans les années 1950, W. Edwards Deming (l’inventeur proclamé de la « Roue de Deming ») est au Japon pour enseigner et former à ses techniques de management.

Il développe de nouveaux concepts qui reposent sur ses découvertes issues de la gestion de la qualité.

Son objectif est de transformer le management par l’introduction d’une philosophie moderne du management :

  • Vision à long terme
  • Motivation intrinsèque des équipes
  • Coopération
  • Droit à l’erreur
  • Leadership
  • Suppression de la direction par objectifs
  • Développement de l’innovation
  • Formation de tous les membres de l’entreprise
  • Satisfaction au travail

La liste des 14 points de Deming offre une compréhension des principes que souhaitait développer Deming.

De nombreux dirigeants d’industries japonaises s’inspirent des préceptes mis en avant par Deming. Cette influence est visible dans la création au Japon en 1950 d’un prix Deming pour récompenser l’innovation managériale des entreprises.

Une des premières entreprises à gagner ce prix est le constructeur automobile japonais Toyota avec son système de production intégré : le Toyota Production System (TPS).

Toyota Production System et le Lean

En 1990, James Womack et Daniel Jones invente le terme « Lean » en étudiant les caractéristiques du modèle de production en place chez Toyota – Toyota Production System (TPS).

Le modèle TPS est très fortement inspiré des enseignements au Japon de Deming et c’est le premier modèle Lean.

Son but est la simplicité ou la réduction du « gaspillage » dont la mise en œuvre nécessite de nouveaux concepts :

  • Value Stream Mapping (VSM) : Analyse de la chaîne de valeur livrée au client.
  • Minimun Viable Product (MVP) : Proposer au client ce qu’il est prêt à payer « sans plus ».
  • Autonomiser, responsabiliser les équipes.
  • Stand-up meeting : Réunion quotidienne pour favoriser la coopération.
  • Système Kanban : Système visuel de production qui repose sur les concepts suivants :
    - Just in time & Pull strategy
    - Visualiser le flux de travail : Kanban Board
    - Small Batches & Limit work-in-progress (WIP)
    - Suivi de métriques : Lead Time & Cycle Time

L’Agilité reprends toutes ces pratiques pour les mettre en application au sein des projets informatiques notamment la méthode Kanban qui est très utilisée par les équipes supports.

L’Agilité va aussi puiser dans le Lean une nouvelle méthode de management des équipes. En Agilité, nous allons insister sur la coopération et l’auto-organisation des équipes.

Les membres de l’entreprise vont être considérés comme le moteur de l’innovation et de la performance. Et les managers vont évoluer en leaders bienveillants sachant guider les personnes et libérer leur motivation intrinsèque.

De manière générale, nous pouvons dire que l’Agilité s’inspire du changement de philosophie que représente le « Lean ».

Maintenant que nous avons évoqué la philosophie de l’Agilité, passons à son côté plus technique. Evoquons son inspiration dans le domaine de l’excellence technique et des bonnes pratiques de développement.

IV. Software Craftmanship & eXtreme Programming

Dans les années 90, une approche de développement logiciel fait son apparition en mettant l’accent sur la qualité du code et les bonnes pratiques de développement.

C’est le Software Craftmanship.

Avec ce mouvement, les développeurs sont considérés comme des artisans qui implémentent le code avec passion et recherchent le travail bien fait.

En 2008, les principes de ce mouvement sont explicités dans le manifeste pour l’artisanat logiciel qui évoque et répond au manifeste Agile :

  • Pas seulement des logiciels opérationnels, mais aussi des logiciels bien conçus.
  • Pas seulement l’adaptation aux changements, mais aussi l’ajout constant de la valeur.
  • Pas seulement les individus et leurs interactions, mais aussi une communauté de professionnels.
  • Pas seulement la collaboration avec les clients, mais aussi des partenariats productifs.

On recherche avec ce manifeste à soutenir l’excellence technique au sein des projets informatiques

Un logiciel fonctionnel n’est pas suffisant, il faut qu’il soit bien conçu.

La méthode eXtreme Programming

En parallèle, toujours dans les années 90, apparaît la méthode eXtreme Programming (XP) que l’on appellera Agile par la suite (il faut rappeler que le manifeste Agile est créé en 2001).

Cette méthode vise à définir les bonnes pratiques de réalisation d’une application.

Le but est de mettre en place une discipline de développement pour produire les applications de qualité.

Les techniques qui sous-tendent l’eXtreme Programming sont les suivantes :

  • Emergent Design : Définir l’architecture pendant sa création.
  • Code Review : Pratique de revue du code par d’autres développeurs.
  • Test Driven Development / Test First Development : Développer les applications en commençant par les tests.
  • Tests unitaires : Réaliser des tests sur chaque partie du code.
  • Tests d’intégration : Pratiquer des tests suite à l’intégration d’une nouvelle partie de code avec le code général de l’application.
  • Pair Programming : Pratique d’implémentation par 2 pour partager des connaissances et s’améliorer.
  • Refactoring : Améliorer le code d’une application sans en modifier son comportement fonctionnel.
  • Spike : Phase d’exploration technique sur un besoin complexe à implémenter.
  • User Stories : Format de spécification des besoins en partant du point de vue de l’utilisateur final.
  • Story Point : Unité de mesure de la complexité et de l’effort d’une implémentation.
  • Acceptance Tests : Tests de validation fonctionnelle d’une implémentation.
  • Gestion de la dette technique : Adaptation et mise à jour du code pour pallier à la complexité générée par des implémentations successives.
  • Déploiement quotidien : Permet de tester les fonctionnalités et l’utilisation de l’application.
  • Increment réalisé en 1 semaine : Implémentation des fonctionnalités sur des périodes courtes pour livrer de la valeur aux utilisateurs régulièrement.

Toutes ces pratiques correspondent aux bonnes pratiques qui sont encouragées pour le développement d’application. L’Agilité n’a donc pas inventé ces bonne pratiques mais puise dedans pour favoriser l’excellence technique.

Conclusion

L’Agilité n’est pas une nouveauté puisqu’elle ne marque pas une rupture. Elle s’inspire de toutes les avancées qui sont apparues avant elle dans la gestion de projet.

En effet, l’Agilité a puisé dans la roue de Deming, la pratique de l’amélioration continue. Elle a puisé dans le modèle en Spirale, les cycles itératifs. Dans le Lean, l’autonomie des équipes et la valeur pour le client. Dans le Software Craftmanship, l’excellence technique et les bonnes pratiques de développement.

Ce que l’Agilité a apporté est une réunification de ces pratiques sous un terme commun. Cette simple opération qui semble anodine est en fait capitale. Elle a conduit à la définition de Valeurs et de Principes qui guident les entreprises vers la performance et l’innovation.

Les difficultés rencontrées dans la mise en oeuvre de l’Agilité ne viennent pas de la nouveauté des pratiques. Elles sont le résultat de l’ambition de l’Agilité qui est de transformer les projets informatiques. Les besoins en Coachs Agiles qualifiés et pédagogues devraient donc devenir de plus en plus indispensables dans le monde Agile qui s’ouvre devant nous.