De Brito Cyril
Cyril de Brito
SCRUM Master
Facilitateur
Manifeste agile
Les individus et leurs interactions, de préférence aux processus et aux outils,
Des solutions opérationnelles, de préférence à une documentation exhaustive,
La collaboration avec les clients, de préférence aux négociations contractuelles,
La réponse au changement, de préférence au respect d’un plan.
Manifeste
Scrum – La mêlée
La référence vient d’un article de WA1 en 1986, rédigé par des Japonais qui aiment le rugby. Ce texte démontre comment les entreprises fleurissantes Japonaises sont performantes en insistant surtout sur l’importance d’équipe autonome et autogérées.
L’approche séquentielle traditionnelle, autrement appelée ‘course de relais’,
pour développer un produit qui est illustrée par le système de planification de programme en phases,
pouvant entrer en conflit avec les objectifs de vitesse et souplesse maximale.
Au lieu de cela, une approche globale comme au rugby,
où une équipe essaye de parcourir la distance en étant solidaire,
se passant le ballon de main en main et ainsi pouvant mieux servir les exigences de compétitivité.
Il n’y a pas de définition stricte de l’agilité. Sur cent Agilistes il y aura cent définitions différentes. Cependant Jim Highsmith, qui n’est autre que l’un des signataires du Manifeste, définit l’agilité par rapport au changement.
L’agilité est la capacité à favoriser le changement et à y répondre en vue de s’adapter au mieux à un environnement turbulent.
Jim Highsmith, Manifeste.
L’agilité c’est avant tout l’humain, les échanges entre les équipes et la faculté de pouvoir travailler ensemble à un but commun. Bien évidement il y a différentes méthodes agiles. Chacune avec ses caractéristiques et son potentiel. Mais le plus important c’est l’humain, c’est lui qui va donner le dynamisme et l’envie. Il va permettre à un projet de naitre, de grandir et de s’améliorer sans cesse.
A l’heure actuelle et c’est le sujet ici, les équipes de développement, la « Team Agile » conçoit et mettent en place des méthodes Agiles afin de trouver des alternatives aux ancienne méthodes de management d’équipe. Les développeurs sont animés par une soif débordante d’apprentissage et de découverte sur les mécanismes humains, avec pour objectifs d’améliorer sans cesse les conditions d’exécution de leurs projets, tant sur le plan de la performance que du service au client et du bien-être en entreprise. D’autant que l’agilité ne prétend pas être une solution ultime et clé en main à tous les maux du management, mais plutôt un ensemble de principes et de techniques qui permettent à chacun de s’épanouir avec plus de flexibilité et de plaisir. Le client n’est pas en reste, il est enfin acteur participatif du projet. Il peut partager du feed-back, il est aujourd’hui agile et force de proposition tout au long du projet. Ainsi il y a acceptation du changement des besoins et de la réactivité raisonnable de la part des équipes.
Une pratique est une approche concrète et éprouvé qui permet de résoudre un ou plusieurs problèmes courants ou d’améliorer la façon de travailler lors d’un développement.
Extrait de mon mémoire d’étude de concepteur logiciel
Avantages
Aujourd’hui l’agilité sert surtout à être en phase avec le client. Celui si à une problématique et celle-ci est compliquée à expliquer et à comprendre. Le client sait peut être exactement ce qu’il veut et ce qui ne vaut pas. Par contre le fait de l’exprimer et de bien se faire comprendre par les autres est potentiellement complexe. Donc le client exprime un besoin et l’équipe agile va vouloir répondre à ce besoin.
Parlons d’abord du mode de fonctionnement d’un équipe agile, il y a un PM, Product Manager qui est le directeur du produit, qui à la vision d’ensemble. Prenons l’exemple d’une voiture. Nous garderons ce fil conducteur durant tout le long. Il y a les pneus, les vitres, les sièges, le moteur, la boite de vitesse, la couleur, les phares etc. Ce PM à toutes les informations sur le produit. Évidement le fait de passer toutes ces informations brutes à des développeurs pour développer le produit est très hasardeux. Ce PM va donc commencer à diviser l’épic en plusieurs plus petits épics qui va pouvoir confier à des Product Owners (PO). Ces PO sont propriétaire du produit, chaque petite tâche à réaliser. Un aura le moteur, l’autre les sièges et ainsi de suite. Ils sont directement en relation avec les équipes pour leurs explique ce que l’on attend d’eux et s’assurer que les tâches sont bien réalisées et répondent bien aux attentes. Avec par exemple des critères d’acceptances. Les développeurs vont pouvoir ainsi développeurs le produit petit à petit et assembler le tout.
Evidemment une bonne partie des gens pensent que l’agilité permet de gagner du temps et de délivrer plus tôt. Ceci dit cela peut être vrai parfois, mais ce n’est absolument pas le but de l’agilité. Comprenons ceci par une petite histoire, imaginons que le client exprime un besoin d’avoir quelque chose pour se déplacer, permettant de s’abriter la pluie et avec de la technologie à l’intérieur. De l’électrique avec des batteries pour alimenter le tout. Que ce mode de déplacement soit à sept chevaux et qui roule avec quatre roues. Evidement le client et l’équipe vont communiquer et essayer de répondre du mieux possible à la problématique. Le PM split les stories aux PO qui eux même passent l’information à leurs proxy PO, qui eux transfèrent la charge aux développeurs.
Faisons un petit retour en arrière avec les anciennes méthodes dites paysannes ou pyramidales. Ils développent donc une voiture électrique performante et de dernière génération. Elle bien évidement confortable et elle permet grâce à la batterie de parcourir deux mille kilomètres avec une seule recharge. Elle se conduit toute seule. Disons qu’énormément de moyen de conception ont étés mis en place durent plus de cinq ans. Tout le monde est parfaitement content dans les équipes, le proxy PO, PO, PM sont très content de pouvoir présenter cette merveille à leur client. Ils ont tous remplis parfaitement Arrivé le jour de la livraison et le client n’est pas du tout content. Il fait comprendre à l’équipe qu’il voulait une charrette tirée par sept chevaux avec quatre roues, un confort d’aujourd’hui mais absolument pas une voiture. L’équipe va repartir sur quatre ans pour pouvoir répondre à la demande initiale du client qu’ils ont maintenant compris.
On se rend bien compte que l’agilité aurait pu permettre de s’apercevoir beaucoup plus tôt que l’équipe n’était pas en corrélation avec la demande du client. L’agilité permet grâce aux itérations courtes de deux, trois ou quatre semaines et aux présentations successives au client de s’assurer que les phases de développement correspondent aux attentes. Le cas échéant le client peut donner son avis et des retours et l’équipe agile peut s’adapter pour mieux répondre rapidement à la demande. Ainsi on s’assure de ne pas être en hors sujet. Surtout qu’au fur et à mesure des avancés du projet, la demande client peut évoluer, la technologie peut permettre de faire des choses plus complexe qui améliorerons le produit. A la fin l’équipe est certaine de pouvoir délivrer le produit attendu.
A ce stade on pourrait se dire que l’agilité ayant comme avantage d’être parfaitement en corrélation avec la demande client nous permet de gagner du temps. Mais soyons clair, ce n’est pas le but. Bien sûr, cela peut avoir des effets positifs et c’est bien évidement ce que l’on attend de l’agilité. Et si certains à ce stade ne sont pas encore convaincus de l’agilité, dites-vous bien que l’on s’aperçoit de l’avantage de l’agilité uniquement quand un projet non agile ne répond pas aux besoins et que l’on a proposé au client un produit final qui ne correspondait pas à ses attentes. Par corrélation, ce client à la sensation d’avoir perdu du temps. Quatre ans pour faire une voiture alors qu’il voulait une calèche, il va falloir quatre ans de plus pour refaire tout cela en suivant la demande client que l’on a enfin comprise.
L’agilité permet de s’assurer que toute la charge de travail réalisée au fur et à mesure par itération de l’équipe agile pour réponde à une problématique, est en adéquation avec la finalité attendu, la résolution du problème.
Un sprint c’est de l’itération très courte de façon à avoir une réponse la plus rapide possible, de la réponse mise en place au fur et à mesure du temps sur la problématique client.