Agilité et Scrum

Définition de l’agilité

« 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 »

« Gestion de projet : Vers les méthodes agiles », V. Rota, 2007

Histoire de l’agilité

Origines :

Dans les années 1950, Toyota a révolutionné la production automobile en introduisant le système de production Toyota (TPS). Les idées fondamentales du TPS comprenaient l’élimination des gaspillages, la qualité totale, et la flexibilité pour répondre rapidement aux changements.

Années 1990 : Manifeste Agile :

Dans les années 1990, des professionnels du développement logiciel ont tiré des leçons du TPS et des méthodes de qualité pour les appliquer dans le domaine du logiciel. Cela a conduit à la rédaction du Manifeste Agile en 2001 par un groupe de développeurs de logiciels visionnaires, dont Kent Beck et Martin Fowler.

Principes Agiles :

Le Manifeste Agile définit quatre valeurs fondamentales et 12 principes qui mettent l’accent sur la flexibilité, la collaboration, la livraison continue de produits fonctionnels, et la réactivité aux changements.

Diffusion Mondiale :

Depuis la publication du Manifeste Agile, les principes agiles ont gagné une reconnaissance mondiale et ont été appliqués au-delà du développement logiciel, touchant divers domaines tels que la gestion de projet, le marketing, et même l’organisation d’entreprises.

Aujourd’hui :

Aujourd’hui, l’Agilité est devenue une philosophie adoptée par de nombreuses organisations cherchant à être plus réactives, flexibles, et orientées vers la satisfaction du client. Les méthodes agiles comme Scrum, Kanban, et Extreme Programming (XP) continuent d’évoluer pour répondre aux besoins changeants des entreprises modernes. L’Agilité n’est plus simplement une approche de développement, mais une culture organisationnelle favorisant l’adaptabilité et l’innovation continue.

Les 4 valeurs de l’agilité

Les méthodes agiles sont guidées par quatre valeurs fondamentales, telles que définies dans le Manifeste Agile. Comparées aux méthodes classiques, ces valeurs mettent l’accent sur certains principes clés :

  1. Individus et Interactions plutôt que Processus et Outils :
    • Agile : Les méthodes agiles accordent une importance primordiale à la collaboration entre les membres de l’équipe et à la communication ouverte. Elles reconnaissent que le succès du projet repose sur les individus impliqués.
    • Classique : Les méthodes classiques peuvent parfois mettre davantage l’accent sur les processus et les outils formels, risquant de négliger l’interaction humaine.
  2. Logiciel opérationnel plutôt que Documentation exhaustive :
    • Agile : L’agilité favorise la création continue de logiciels opérationnels fonctionnels, considérant que la documentation doit être concise et centrée sur l’essentiel.
    • Classique : Les méthodes classiques peuvent accorder plus d’importance à la documentation exhaustive, parfois au détriment du développement opérationnel.
  3. Collaboration avec le client plutôt que Négociation de contrats :
    • Agile : Les méthodes agiles encouragent une collaboration continue avec le client tout au long du projet, privilégiant les ajustements en cours de route plutôt que la stricte conformité à des contrats initiaux.
    • Classique : Les méthodes classiques peuvent être plus enclines à établir des contrats rigides dès le départ, limitant la flexibilité face aux changements.
  4. Réponse au changement plutôt que Suivi d’un plan :
  • Agile : L’agilité reconnaît l’importance de s’adapter rapidement aux changements de besoins, privilégiant la flexibilité plutôt que la stricte conformité à des plans établis initialement.
  • Classique : Les méthodes classiques peuvent parfois se concentrer davantage sur le suivi strict d’un plan préétabli, ce qui peut rendre difficile l’adaptation aux changements.

Ces quatre valeurs forment le cœur de la philosophie agile et guident la prise de décision dans le développement de logiciels et de projets.

Les 12 principes de l’agilité

Les principes détaillent davantage chaque valeur. Ils fournissent des directives spécifiques sur la manière de mettre en œuvre les valeurs.

Les principes sont plus détaillés et aident à comprendre comment appliquer les valeurs dans des contextes concrets.

Par exemple, le principe “Livrer fréquemment un logiciel opérationnel avec une préférence pour les plus courts délais” soutient la valeur “Logiciel opérationnel plutôt que Documentation exhaustive”.

La représentation graphique ci-dessus présente une pyramide où les 12 principes agiles sont regroupés, s’étendant de la base avec le support managérial jusqu’au sommet, symbolisant ainsi l’objectif ultime de tout projet : la satisfaction du client.

Support Managérial

  • 5-Construction de projets autour de personnes motivées : Reconnaître et promouvoir la motivation des individus en tant que moteur essentiel du succès d’un projet agile.
  • 8-Maintien d’un rythme de développement soutenable : Éviter la surcharge de travail en maintenant un rythme de développement qui peut être maintenu à long terme.
  • 11-Auto-organisation des équipes : Encourager les équipes à s’auto-organiser, à prendre des décisions et à résoudre des problèmes de manière autonome.
  • 12-Réflexion continue et ajustements à intervalles réguliers : Faire preuve de flexibilité et d’amélioration continue en réfléchissant régulièrement aux performances de l’équipe et en apportant des ajustements nécessaires.

Approche Technique

  • 4-Collaboration étroite entre les utilisateurs et les développeurs tout au long du projet : Encourager une communication continue et une collaboration active entre les personnes qui utilisent le produit et celles qui le développent. Parfois les équipes sont distantes et il faudra mettre en place les moynes nécessaire pour arriver à assurer cette proximité.
  • 6-Communication efficace par le dialogue en face-à-face : Favoriser les échanges directs pour une communication plus claire et éviter les malentendus.
  • 9-Promotion de l’agilité par l’excellence technique et une bonne conception : Mettre l’accent sur des pratiques techniques solides pour assurer une base stable et évolutive pour le logiciel.

Produit

  • 3-Livraison fréquente d’un logiciel opérationnel avec des cycles courts : Privilégier des périodes de développement courtes pour fournir régulièrement des versions fonctionnelles du logiciel.
  • 7-Mesure de l’avancement principalement par un logiciel opérationnel : L’état d’avancement d’un projet doit être évalué en fonction de la fonctionnalité opérationnelle du logiciel plutôt que de la documentation ou des plans
  • 10-Simplicité comme élément essentiel : Favoriser la simplicité dans la conception et l’exécution, éliminant tout élément non essentiel.

Finalité

  • 1-Satisfaction du client par la livraison continue de logiciels utiles : Priorité à la satisfaction client en livrant régulièrement des fonctionnalités opérationnelles, mettant ainsi en avant la création de valeur continue
  • 2-Accueil positif des changements de besoins, même tard dans le projet : La flexibilité face aux changements est essentielle. Les équipes doivent être capables de s’adapter rapidement aux évolutions des exigences du client.

Les méthodes agiles les plus populaires

Il existe plusieurs méthodes agiles populaires utilisées dans le développement logiciel et au-delà. Voici quelques-unes des méthodes agiles les plus répandues :

  1. Scrum :
    • Scrum est l’une des méthodes agiles les plus populaires. Il se base sur des itérations de travail appelées “sprints” et comprend des rôles clés tels que le Scrum Master, le Product Owner, et l’équipe de développement.
  2. Kanban :
    • Kanban se concentre sur la gestion visuelle du flux de travail. Il utilise des tableaux pour représenter les tâches à faire, en cours, et terminées. Kanban met l’accent sur la flexibilité et la gestion continue du flux de travail.
  3. Extreme Programming (XP) :
    • XP est axé sur l’amélioration continue de la qualité et de la productivité. Il comprend des pratiques telles que la programmation en binôme, les tests automatisés, et des cycles de développement courts.
  4. Lean Software Development :
    • Inspiré du système de production Toyota, le Lean Software Development met l’accent sur l’élimination des gaspillages, la livraison continue de valeur, et l’amélioration continue.
  5. Crystal :
    • Crystal est une famille de méthodes agiles, chacune adaptée à des tailles d’équipes et à des types de projets spécifiques. Chaque variante de Crystal met l’accent sur des aspects particuliers de la flexibilité et de l’adaptabilité.
  6. Feature-Driven Development (FDD) :
    • FDD se concentre sur la conception par fonctionnalité et la construction itérative de fonctionnalités. Il est particulièrement adapté aux projets de grande envergure.
  7. Dynamic Systems Development Method (DSDM) :
    • DSDM est axé sur la livraison rapide de fonctionnalités tout en maintenant la qualité. Il met l’accent sur la collaboration entre les membres de l’équipe et les parties prenantes.
  8. Adaptive Software Development (ASD) :
    • ASD vise à être flexible et à s’adapter rapidement aux changements. Il met en avant la communication continue, la collaboration et l’expérimentation.

Ces méthodes agiles peuvent être adaptées en fonction des besoins spécifiques d’une équipe ou d’un projet. Il est également courant de voir des organisations combiner différentes pratiques pour créer leur propre approche agile, souvent appelée “méthode hybride”

Les fondamentaux de Scrum

Le Cycle de vie Scrum

Scrum est la méthode agile la plus populaire.

il s’agit d’un cadre de gestion de projet agile qui met l’accent sur la flexibilité, la collaboration et la livraison continue de produits fonctionnels. Il est largement utilisé dans le développement logiciel, mais peut également être appliqué à d’autres domaines. Voici une explication plus détaillée :

  1. Itératif et Incrémental
    •  Scrum organise le travail en cycles itératifs appelés “sprints”, généralement de deux à quatre semaines. À la fin de chaque sprint, une version du produit, potentiellement livrable, est présentée.
  2. Rôles Principaux :
    • Scrum Master:
      • Responsable de s’assurer que Scrum est compris et mis en oeuvre.
      • S’assure que l’Équipe Scrum adhère à la théorie, aux pratiques et aux règles de Scrum.
      • Servant Leader au service de l’équipe Scrum.
    • Product Owner :
      • Responsable de maximiser la valeur du produit et du travail de l’Équipe de Développement.
      • Gère le Product Backlog et s’assure de sa compréhension.
      • Ses décisions sont visibles dans le contenu et
        l’ordonnancement du Product Backlog et doivent être
        respectées par toutes les parties prenantes.
    • Équipe de Développement:
      • Constituée de 3 à 9 professionnels qui livrent à chaque Sprint
        un incrément « terminé » et potentiellement livrable du produit
      • Auto-organisée
        •  Nul (même pas le Scrum Master) n’indique à l’Équipe de Développement comment transformer les items du Product Backlog en incréments de fonctionnalités potentiellement livrables.
      • Pluridisciplinaire
        •  avec toutes les compétences nécessaires pour créer un incrément du produit
      • Composée de Développeurs qui contribuent à produire le produit
        •  Scrum ne reconnaît pas d’équipes à l’intérieur de l’Équipe de Développement indépendamment des domaines spécifiques qui doivent être couverts tels que l’exécution de tests ou l’analyse fonctionnelle
      • Responsable dans son ensemble
        •  Même si les membres de l’Équipe de Développement peuvent détenir individuellement des compétences et des centres d’intérêt spécifiques
  3. Artéfacts Scrum :
    • Backlog Produit : Liste hiérarchisée des fonctionnalités, tâches et améliorations à apporter au produit.
    • Backlog de Sprint : Éléments du backlog produit sélectionnés pour être traités lors du sprint en cours.
    • Incrément : Version du produit résultant du travail accompli pendant un sprint.
  4. Cérémonies Scrum :
    • Réunion de Planification de Sprint (Sprint Planning) : L’équipe de développement planifie le travail à accomplir pendant le sprint.
    • Daily Scrum : Réunion quotidienne courte pour synchroniser les membres de l’équipe sur le travail en cours.
    • Revues de Sprint : Présentation de ce qui a été accompli pendant le sprint.
    • Réunions de Rétrospective : Évaluation de ce qui a bien fonctionné et des opportunités d’amélioration.
  5. Adaptabilité :
    • Scrum intègre des principes favorisant l’adaptabilité aux changements. Les ajustements peuvent être apportés à la fin de chaque sprint en fonction des retours d’utilisateur et des évolutions du projet.

En résumé, Scrum est un cadre agile qui offre une approche structurée et itérative pour la gestion de projet, mettant l’accent sur la collaboration, la transparence et l’adaptabilité.

L’équipe Scrum

Le contrat agile: entre le forfait et la régie

Engagement de moyens ou de résultats ?

  • La contractualisation constitue l’un des freins au déploiement des méthodes Agile. En particulier en France dont la culture du forfait classique et du clivage MOA/MOE est lourdement ancrée.
  • Lorsque le client souhaite un engagement de résultat, nous proposons un mécanisme de troc :
    •  La somme des Story Points du Product Backlog initial permet d’estimer le budget initial du projet.
    •  Les User Story les plus prioritaires seront développées dans la limite du budget restant en Story Points.
  • On propose une étape de cadrage agile pour définir et s’engager sur un MVP (Minimum Viable Product).
  • Autre type de contractualisation possible entre l’engagement de moyens et l’engagement de résultats.

Indicateurs de performances des méthodes agiles

 

Les KPI agile constituent un élément crucial dans le suivi du projet. Parmis les plus importants on cite :

 

Prédictibilité :

  •  Nombre de fonctionnalités démontrées en fin d’itération par rapport aux fonctionnalités prévues.

Productivité :

  •  Nombre de “story point” qui ont été implémentés dans un sprint rapporté à la taille de l’équipe.

Qualité fonctionnelle :

  •  Nombres d’anomalies découvertes après la livraison de l’incrément produit.

Qualité technique :

  •  Couverture de code par les tests unitaires et complexité cyclomatique.

Implication de l’équipe :

  •  Lors de chaque rétrospective, chaque membre de l’équipe du prestataire se prononce sur sa proposition (sur une échelle de 1 à 5) à recommander cette équipe et ce projet à un de ses collègues.

Satisfaction du client :

  •  A chaque démonstration de sprint, chaque membre de l’équipe client se prononce sur sa proposition (sur une échelle de 1 à 5) à recommander cette équipe et ce projet à un de ses collègues.

 

Exemple concret d’application de l’approche agile à un projet web

Imaginons un projet de développement web pour la création d’une plateforme de commerce électronique. L’approche agile serait appliquée de la manière suivante :

  • Planification itérative : Au lieu de définir tous les détails du projet dès le départ, l’équipe commence par une planification initiale basée sur les grandes lignes du produit. Ensuite, elle divise le projet en itérations (Sprints) de deux semaines, identifiant les fonctionnalités prioritaires pour chaque itération.
  • Implication du client : Le client est impliqué dès le début du projet et continue à jouer un rôle actif tout au long du processus. Les retours du client sont sollicités à la fin de chaque itération, permettant des ajustements rapides en fonction des besoins changeants.
  • Développement itératif : L’équipe commence le développement avec les fonctionnalités les plus cruciales pour le produit, assurant ainsi qu’une version fonctionnelle peut être livrée rapidement. Les fonctionnalités moins critiques sont ajoutées progressivement au fil des itérations.
  • Adaptabilité aux changements : Si le marché évolue ou si de nouveaux besoins émergent, l’équipe peut ajuster la feuille de route du projet. Par exemple, si le client souhaite ajouter une fonctionnalité de paiement mobile, cela peut être intégré dans une itération future.
  • Communication continue : L’équipe tient des réunions quotidiennes rapides (stand-up) pour discuter des progrès et des obstacles. Cela favorise une communication transparente, permettant à chaque membre de l’équipe de rester informé des avancements et des éventuels problèmes.
  • Tests continus : Les tests sont intégrés tout au long du processus de développement. Chaque fonctionnalité est testée à mesure qu’elle est construite, garantissant la qualité du produit final. Les ajustements peuvent être effectués immédiatement en cas de problèmes identifiés.
  • Livraison régulière de valeur : À la fin de chaque itération, une version fonctionnelle du produit est livrée. Cela permet au client de bénéficier rapidement de certaines fonctionnalités, plutôt que d’attendre la finalisation complète du projet.

En appliquant ces principes agiles à ce projet web, l’équipe peut répondre de manière flexible aux besoins changeants du client, assurant ainsi la création d’un produit final plus adapté et de haute qualité.

Quand éviter l’agilité ?

Bien que l’agilité soit une approche de gestion de projet efficace dans de nombreuses situations, il existe des contextes où elle peut ne pas être la meilleure solution. Voici quelques situations dans lesquelles l’agilité peut ne pas être recommandée :

  1. Stabilité des Besoins : Lorsque les besoins du projet sont bien définis, stables et peu susceptibles de changer, la méthodologie en cascade traditionnelle pourrait être plus appropriée. L’agilité excelle dans l’adaptation aux changements, mais si ces changements sont rares, cela peut rendre le processus agile excessivement flexible.
  2. Projets Simples et Courts : Pour des projets simples et de courte durée, l’agilité peut parfois introduire une surcharge administrative. La méthodologie agile est souvent plus bénéfique pour des projets complexes et de longue durée.
  3. Manque d’Engagement de l’Équipe : Si l’équipe de projet ne comprend pas ou n’adhère pas aux principes agiles, la mise en œuvre de l’agilité peut être difficile et moins efficace. Une compréhension et un engagement solides de l’équipe sont essentiels pour le succès de l’approche agile.
  4. Contraintes Budgétaires Strictes : L’agilité met l’accent sur la livraison continue de fonctionnalités de grande valeur, ce qui peut rendre la gestion des coûts plus complexe. Si un budget strict et immuable est impératif, d’autres méthodologies pourraient être plus appropriées.
  5. Environnement Réglementé : Dans des industries fortement réglementées où des processus rigides et une documentation exhaustive sont nécessaires pour des raisons de conformité, l’agilité peut nécessiter des adaptations importantes. Des méthodologies comme la cascade peuvent être mieux adaptées dans de tels environnements.
  6. Taille Importante du Projet : Pour des projets de très grande envergure, l’agilité peut devenir difficile à gérer. La coordination de multiples équipes agiles peut être complexe et nécessiter des compétences de gestion spécifiques.
  7. Client avec des Attentes Fixes : Si le client a des attentes strictes et immuables concernant le produit final, et est peu enclin à des ajustements fréquents, l’approche agile peut ne pas être la plus appropriée.

Il est important de noter que ces points ne signifient pas que l’agilité est inapplicable dans ces situations, mais plutôt qu’elle peut nécessiter des ajustements ou qu’une approche différente peut être plus adaptée. Le choix de la méthodologie dépend toujours des spécificités du projet, de l’entreprise et de l’équipe.

 

Réussir un projet quelque soit la méthodologie

laugh

On réussit un projet lorsqu’on a fait le bon produit, celui que les utilisateurs attendent vraiment, au bon moment et au meilleur coût.

Un projet réussi est un projet qui donne le sourire à tout le monde.

Aux utilisateurs, aux commanditaires, sponsors voire actionnaires.

Ainsi qu’à l’équipe du projet qui a le sourire parce qu’elle est épanouie et fière de son travail

0 commentaires