Ceux qui travaillent dans le numérique, ou du moins à proximité du numérique, savent que l'art du développement est particulier et quelque peu différent des autres types de projets d'ingénierie. Il exige le soin et l'attention d'une équipe adaptable et flexible, et qui soit prête à réagir rapidement aux changements et qui ne se contentent pas de répondre aux demandes d'un client du jour au lendemain. La méthodologie Agile a été créée pour répondre à cette exigence.
Mots clés :
Gestion de Projet
Agilité
Scrum
Kanban
La méthodologie agile est un type de processus de gestion de projet, principalement utilisé pour le développement de logiciels, d'applications web et mobiles ou de tout autre projets numérique, où les besoins et les solutions évoluent grâce à l'effort de collaboration d'équipes auto-organisées et interfonctionnelles et de leurs clients.
Issu des valeurs et des principes du Manifeste Agile, ce processus a été créé en réponse aux insuffisances des méthodes de développement traditionnelles telles que la méthode en cascade (Waterfall). Le secteur du numérique est un marché très compétitif en particulier car un outil numérique est quelque chose qui peut être continuellement mis à jour. Cela signifie que les développeurs doivent constamment améliorer et innover leurs produits pour rester à la pointe du progrès - et l'approche linéaire et séquentielle de la méthode Waterfall n'était tout simplement pas à la hauteur.
Dans les années 1990, le développement numérique a connu une crise. Les sociétés ont réalisé qu'elles ne pouvaient pas aller assez vite pour répondre aux demandes et aux exigences de leurs clients - le temps estimé entre un besoin commercial et une application réelle était d'environ trois ans. Les modèles de développement traditionnels étaient basés sur une approche chronologique, où le développement se faisait de manière séquentielle et le produit final n'était révélé aux clients qu'avant la toute dernière étape (la mise en production). Cela laissait peu de place à la flexibilité lorsqu'il s'agissait de revoir ou de modifier l'état d'une solution. Ainsi, au moment où une application était terminée et livrée, il était fort probable que non-seulement les exigences et les objectifs initiaux du projet aient changés, mais que la technologie en elle-même ait fortement évoluée.
Devant l'argent et les efforts gaspillés, et même l'annulation de plus en plus de projets à mi-parcours, les responsables professionnels ont souhaité adopter une nouvelle approche qui pourrait s'adapter aux contraintes de leurs clients. Tous aspiraient à cimenter un processus qui légitimerait de nouvelles pratiques, c'est ainsi qu'est née le Manifeste Agile.
Le Manifeste Agile est une déclaration des valeurs et des principes exprimés dans la méthodologie Agile. Composé de quatre valeurs fondamentales et de 12 principes clé, il vise à aider, un instaurant un cadre, la mises en place meilleures façons de développer des applications, en fournissant une structure claire et mesurable qui favorise le développement itératif, la collaboration en équipe et l'adaptabilité au changement.
Les valeurs et principes du "Manifeste pour le développement logiciel agile" sont les suivants :
Le Manifeste Agile ne nie pas l'importance des seconds éléments de chaque phrases, mais il privilégie les éléments qui se trouvent en première partie.
Ceux qui appliquent tout type de méthodologie Agile adhèrent à ces valeurs et principes. Le manifeste offre un bon aperçu de ce qui est attendu en matière de pratiques et de cycle de vie du développement Agile.
La gestion de projet Agile est une méthodologie qui est couramment utilisée pour réaliser des projets complexes en raison de sa capacité d'adaptation. Elle met l'accent sur la collaboration, la flexibilité, l'amélioration continue et des résultats de haute qualité. Elle vise à être claire et mesurable en utilisant six principaux "deliverables" (produits livrables) pour suivre l'avancement et créer le produit.
Il existe différents cadres de gestion de projet Agile qui peuvent être utilisés pour développer et fournir un produit ou un service. Bien qu'ils aient chacun leur propre ensemble de caractéristiques et leur propre terminologie, ils partagent des principes et des pratiques communs.
Deux des cadres les plus populaires qui soutiennent le cycle de vie du développement Agile sont Scrum et Kanban.
Scrum est l'un des cadre Agile qui est utilisé pour mettre en pratique les idées Agiles dans le développement numérique. Créé par Jeff Sutherland et Ken Schwaber (qui faisaient également partie des 13 personnes qui ont cimenté le Manifeste Agile), il est composé de cinq valeurs : engagement, courage, concentration, ouverture et respect. Son objectif est de développer, de fournir et de maintenir des produits complexes grâce à la collaboration, la responsabilité et le progrès itératif.
Ce qui distingue Scrum des autres méthodologies Agiles, ce sont les rôles, les événements et les artefacts qui le composent et avec lesquels il fonctionne.
Kanban est une méthode très visuelle couramment utilisée dans la gestion de projet Agile. Elle brosse un tableau du flux de travail, dans le but d'identifier tout goulot d'étranglement au début du processus, afin de fournir un produit ou un service de meilleure qualité.
Ses six pratiques générales sont les suivantes :
Kanban est un concept qui a été développé dans la chaîne de production des usines Toyota dans les années 1940. Il permet d'atteindre un fonctionnement efficace grâce à des repères visuels qui signalent certaines étapes du processus de développement. Ces repères sont un tableau Kanban, des cartes Kanban, et parfois même des "couloirs de nage" Kanban.
Il existe de nombreuses autres approches et méthodes d'implémentations de l'Agilité, mais je vais vous détailler l'Extrem Programming (ou XP), qui me semble parmi les pus pertinente.
Basé sur les cinq valeurs de communication, simplicité, retour d'information (feedback), courage et respect, XP est un cadre qui vise à produire une meilleure qualité de vie pour l'équipe de développement, ainsi qu'un produit de meilleure qualité, grâce à un ensemble de pratiques.
Les pratiques d'XP :
Il est toujours utile de savoir comment faire les choses au mieux. Voici sept pratiques indispensables ou à minima très utiles à faire pour s'assurer de la réussite de la mise en œuvre d'une méthodologie Agile, et ce, quelle que soit la méthode choisie (Scrum, Kanban, XP, ...) :
L'une des valeurs fondamentales énoncées dans le Manifeste Agile, la collaboration avec le client, est une partie essentielle de la méthodologie Agile. Grâce à une communication cohérente avec l'équipe de développement, le client doit toujours être conscient des progrès réalisés, pour formuler ses retours. Sa participation active permettra d'obtenir un produit de meilleure qualité dans une logique d'amélioration continue et d'acceptation du changement.
Outil utilisé pour expliquer une fonctionnalité logicielle du point de vue de l'utilisateur final, l'objectif d'une User Story est de créer une description simplifiée d'une exigence. Elle permet de se faire une idée du type d'utilisateur du produit, de ce qu'il veut et de la ou des raisons qui le justifient.
Format classique d'une User Story :
En tant que [rôle], je veux [caractéristique], parce que [raison].
L'intégration continue (IC) consiste à maintenir le code à jour en produisant une version propre du système quelques fois par jour. Avec une règle stipulant que les programmeurs ne doivent jamais rien laisser de non intégré à la fin de la journée, elle permet la livraison d'une version du produit adaptée à la publication à tout moment. Ce que l'intégration continue cherche à faire, c'est de minimiser le temps et l'effort requis par chaque intégration.
Si à chaque nouvelle fonctionnalité ajoutée, les développeurs tentent de lancer l'application, celle-ci doit fonctionner.
La réalisation de tests automatisés permet à l'équipe de savoir quelles modifications du code sont acceptables et si une fonctionnalité a le comportement prévu. Les tests de régression sont exécutés automatiquement avant le début de chaque développement, pour valider que les développements précédents étaient corrects.
La programmation en binôme vise à améliorer les conceptions, à réduire les erreurs et à partager les connaissances au sein de l'équipe de développement. C'est l'une des pratiques de programmation Agiles les moins répandues, et elle n'a pas besoin d'être mise en place continuellement. Un programmeur "conduit" (utilise le clavier), tandis que l'autre "navigue" (observe, apprends, fournis un retour d'information). Les rôles peuvent être inversés. Cette méthode est très efficace lorsqu'il faut développer une partie critique de l'application (pour s'assurer de sa qualité) ou lors d'une étape charnière du projet (pour s'assurer que tous les développeurs de l'équipe comprennent bien le fonctionnement d'une pièce maîtresse).
Le TDD vise à encourager les conceptions simples et à sécuriser le développement. Au lieu d'un processus où l'on ajoute une fonctionnalité, puis on la teste pour vérifier sa conformité aux exigences, il s'agit d'une méthode basée sur la répétition d'un cycle de développement très court où les exigences sont d'abord écrites en tant que tests, puis le développement de la fonctionnalité est réalisé et amélioré pour passer ces nouveaux tests.
Un graphique d'avancement est une représentation graphique du travail qu'il reste à faire en fonction du temps dont restant. En l'utilisant dans le cadre d'un plan de gestion de projet Agile, il permet de prévoir quand l'ensemble du travail sera terminé. Un tableau de synthèse détaillé comprendra également le nombre d'User Stories par unité de temps (le plus souvent par Sprint) pour permettre une estimation de la vitesse de développement de l'équipe, et la rédaction de Sprint Backlog plus pertinent.
La méthodologie Agile est un processus efficace pour les équipes qui recherchent une approche flexible au développement de produits et d'outils numériques. Elle n'est plus exclusive au secteur d'activité du numérique, mais peut être mise en œuvre pour toute entreprise commerciale qui nécessite un plan d'attaque non-linéaire et qui doit également valoriser la collaboration des clients, un travail d'équipe efficace, des changements réactifs et, bien sûr, des résultats de qualité.
Partager l'article sur :