SCRUM, vous avez dit prédictible ?

Le mythe et la réalité

Dans le cadre de vos projets en SCRUM, vous avez forcément déjà entendu des affirmations du genre « nous fonctionnons sur un mode agile donc nous ne pouvons pas vous dire à quelle date nous livrerons cette fonctionnalité puisque nous nous adaptons au changements fréquents qu’on nous demande de prendre en compte ».

Comme si la contrepartie de cette adaptation au changement était une incapacité à prendre des engagements ou à donner de la visibilité sur l’avancement du projet.

Non seulement cette affirmation est fausse (comme nous le verrons un peu plus loin) mais elle est également délétère quant au développement et à la crédibilité de l’Agilité dans les entreprises, en particulier dans celles qui peinent à la mettre en œuvre.

Nous allons voir un peu loin dans cet article qu’il est possible de prédire des dates de livraisons et de passer en revue les moyens à mettre en œuvre pour y parvenir. Pour cela, imaginons le contexte suivant :

Un Product Owner exerce au sein d’une équipe SCRUM et on lui impose un engagement à date et à périmètre fixe. Il a beaucoup de pression et on lui fait bien comprendre qu’atteindre cet objectif est impératif.

Comment gérer cette situation ? Quelle stratégie mettre en place pour construire une réponse qui tienne compte de ce que l’équipe est réellement capable de produire tout en satisfaisant au plus près les critères de cette demande (périmètre et date fixe) ?

 

Comprendre les enjeux

L’enjeu essentiel pour le Product Owner et son équipe tient à sa crédibilité : construire sa crédibilité auprès des stakeholders c’est tenir ses engagements au fil du temps et le faire savoir (tenir ce que l’on a promis avec le meilleur niveau de qualité possible et le faire sur la durée, à un rythme soutenable).

La fiabilité avec laquelle on maintient ce niveau de maitrise génère un niveau de confiance croissant qui servira de fondement à la crédibilité recherchée.

 

Le commanditaire n’a souvent aucune idée de la capacité de production d’une équipe, sa principale motivation est d’avoir la totalité de ce qui est demandé à la date exigée. De son côté, le devoir d’une équipe SCRUM est de fournir rapidement la meilleure réponse possible qui permettra de satisfaire (ou d’être au plus près) de l’objectif à atteindre. Cela inclut la capacité de dire non à ce qui ne parait pas raisonnable et d’accepter d’être challengé sur les éléments de réponse fournis. L’expression meilleure réponse possible correspond à la précision avec laquelle on se projette dans le futur en se basant sur une capacité à produire fiable et prédictible.

 

Connaitre ses limites

L’équipe Scrum doit connaitre ses limites afin de construire une réponse objective et chiffrable sur la base de fait mesurables et objectifs. La première question posée à laquelle il faut pouvoir répondre étant : sommes-nous capables de fournir la quantité de travail nécessaire à la livraison de ce qui est demandé à la date fixée mais sans sacrifier le niveau de qualité du produit.

Si l’équipe SCRUM n’en est pas capable alors dans quelle mesure en est-elle éloignée et sur quoi peut-elle raisonnablement s’engager ? Dans tous les cas, la réponse doit être rapide : il n’est pas question de répondre dans des délais qui mette en péril la date de livraison exigée par exemple (auquel cas, fournir une réponse n’a plus vraiment d’intérêt).

 

Construire sa réponse à partir d’éléments mesurables

Parmi les artefacts que l’approche SCRUM fournit, la vélocité est un des éléments important qui va nous servir à construire une visibilité sur les futures dates de livraison. Pour cela prenons les hypothèses suivantes :

  • La vélocité est stable
  • Le backlog décrit le périmètre fonctionnel demandé et est complètement estimé
  • La durée d’un sprint est de deux semaines
  • Soit V cette vélocité de l’équipe de développement
  • Soit B le nombre total de stories points que représente le backlog

Il faudra donc B / V = N sprints pour livrer l’ensemble des fonctionnalités décrites dans le backlog, c’est-à-dire 2N semaines pour effectuer la livraison correspondante. Si on démarre le premier sprint à la date « t » alors il est alors inutile de s’engager avant la date « t + 2N ».

Remarque: un premier constat permet de se rendre compte que si nous voulons être en mesure d’effectuer cette prédiction alors il faut absolument avoir une vélocité stable et un backlog complètement estimé rapidement.

 

Estimer rapidement un backlog

Il existe une technique qui s’appelle « eXtreme cotation » et qui consiste à paralléliser le travail d’estimation auquel toute l’équipe SCRUM participe. On travaille sur l’ensemble des Epics qui représentent le périmètre fonctionnel demandé (si le besoin n’est pas exprimé sous cette forme alors il faudra préalablement générer l’ensembles de Epics avec l’équipe).

D’une manière rapide, on procède de la manière suivante (le détail du processus est décrit dans deux articles que vous trouverez en référence à la fin de cet article) :

  1. On dispose sur un mur l’ensemble des Epic sous la forme de post’it (titre + description) ainsi que l’échelle d’estimation utilisée par l’équipe (SP, taille de T-shirts, …).
  2. Le PO présente rapidement les Epics à l’équipe
  3. Sans parler, chaque personne vient poser les post’it sous la valeur d’estimation qui lui parait la plus juste (la valeur correspondante est notée sur les post’it)
  4. Une fois que tous les post’it ont été traités, l’ensemble de l’équipe déplace les post’it (toujours sans parler) vers la valeur qui lui parait mieux correspondre. La nouvelle valeur est notée sur le post’it.
  5. On met de côté les post’it qui n’ont pas changé de valeur
  6. Seulement à cette étape, l’équipe échange sur les raisons qui ont conduit à changer la valeur des post’it de manière à s’entendre sur la valeur finale à donner à chacun des post’it restant.

On ne demande pas d’engagement à l’équipe, l’objectif est d’obtenir une estimation macro dans un laps de temps réduit. Une estimation plus précise sera effectué durant le travail de grooming lorsque les sprints de réalisation seront lancés.

 

Définir un sprint au plus tôt et au plus tard

La limite de l’exercice vient du fait qu’on manipule une valeur moyenne de vélocité alors qu’on sait que cette valeur peut varier de manière relativement importante d’un sprint à l’autre. Il peut donc être intéressant de se faire une idée de la précision avec laquelle on est capable d’estimer un sprint de livraison sur la base de la vélocité d’une équipe SCRUM en prenant en compte cette variabilité. Pour cela on va utiliser des courbes de Burn Up qui seront construites à partir des valeurs de vélocité constatés sur les 12 premiers sprints.

Pour fixer les idées nous utilisons une feuille Excel afin de construire les courbes de Burn Up, pour simuler les variations de vélocité et leur impact sur les projections de sprint de livraisons envisageables.

Le fichier Excel qui sert d’exemple se trouve ici.

ReleaseBurnUpSimulatorV1.0

Revenons à la situation où se trouve le Product Owner. La feuille Excel simule un contexte ou à l’instant « t », le développement en cours correspond au sprint 12 et le périmètre fonctionnel à atteindre se situe au niveau de 180 story points (SP) avant l’arrivée de la demande urgente. La demande urgente, une fois estimée, corresponds à un périmètre fonctionnel additionnel de 120 SP qui devra être livrée impérativement pour sprint 19.

La vélocité de l’équipe étant de 10 SP par sprint avec un écart max entre deux sprint de 5 SP (on est dans le cas d’une vélocité non stabilisée variant entre les limites de 5 SP et 15 SP). En reprenant les valeurs min et max de la vélocité on peut alors tracer deux droites (rouge et verte) permettant de se projeter sur les prochains sprints. Les dates auxquelles les droites rouge et verte coupent la ligne de 300 SP (objectif initial 180 SP + nouveau périmètre demandé 120 SP) correspondent aux sprint au plus et au plus tard que nous cherchons à définir.

On se rend compte au passage que le sprint 19 ne sera pas tenable même en étant très optimiste (droite verte obtenue en prenant l’hypothèse d’une vélocité max pour chacun des futurs sprints).

Arrêtons-nous un instant sur le fonctionnement de la feuille Excel.

  • Dans l’onglet « Sprint » se trouve le calcul du nombre de SP réalisé par sprint à partir des valeurs min et max de vélocité.
  • La valeur de la vélocité et sa variation (Ecart) peuvent être modifiée dans l’onglet « Projection ». Case B4 de l’onglet « Projection ».
  • Scope 1 correspond à 180 SP et scope 2 correspond à 300 SP.
  • L’écart (exprimé en nombre de sprints) correspond à la précision avec laquelle l’estimation du sprint de livraison est effectuée (si Ecart =0 alors « sprint au plus tôt » = « sprint au plus tard » = « sprint de livraison »). Voir « Erreur » en cases G2 et G3 de l’onglet « Projection ».

La feuille de calcul est conçue de manière à introduire un aléa sur la valeur de vélocité de chacun des 12 premiers sprints (l’ampleur de cet aléa est ajustable par la valeur donnée à Ecart en case B4 de l’onglet « Projection »). Donc à chaque fois que l’on fait <CRTL-S> sur la feuille Excel, on génère un autre ensemble de valeurs de vélocité qui vont influer sur les valeurs min et max de la vélocité.

Que se passe-t-il lorsqu’on compare le cas de figure où l’équipe SCRUM a une vélocité stable (Ecart = 1) à celui où la vélocité n’est pas stable (Ecart = 5) ? Pour cela, regarder :

  1. Les valeurs de « Erreur » pour le scope 2 qui correspond au périmètre devant être livré (case G3 de l’onglet « Projection ») à chaque fois que vous faites <CRTL-S>.
  2. L’allure des droites rouge et verte.

On constate que lorsque la vélocité est stable, l’écart entre le sprint au plus tôt et le sprint au plus est réduit dans des proportions importantes (graphiquement l’angle que représente la droite rouge et la droite verte est plus faible).

L’importance d’une vélocité stable est donc primordiale quant à la précision avec laquelle on va pouvoir estimer un sprint de livraison. En terme de prédiction, la stabilité de la vélocité est plus importante que sa valeur absolue. Dit autrement, si l’obtention d’une grande valeur de vélocité se fait au prix d’une grande variabilité alors l’erreur sur la prédiction sera d’autant plus grande.

Arrivé à ce stade, deux cas de figure se présentent. Soit la date à laquelle je peux m’engager est antérieure à celle imposée (je peux m’engager en répondant à la demande telle qu’elle est exprimée), soit elle correspond à une date postérieure (je ne suis pas en mesure de m’engager tel quel) mais il faut quand même proposer une alternative.

 

J’ai la capacité à tenir l’engagement

Cela signifie qu’à partir de la date que l’on m’impose, il est possible de définir un sprint sur lequel s’engager. Il restera malgré tout à challenger cette date en considérant les périodes de congés durant cette période, les formations, et éventuellement une analyse des risques liés à des aspects techniques du développement (nouvelle technologie, migration dans le Cloud, …) ou à l’environnement dans lequel le projet se déroule (engagements pris ailleurs, salon professionnel, …).

 

Je n’ai pas la capacité à tenir l’engagement

Le moment de la négociation finira bien par arriver alors autant se tenir prêt à fournir des arguments défendables et proposer des solutions alternatives viables. Le release Burn Up est un bon outil sur lequel basé sa communication et expliquer les raisons pour lesquels on ne peut pas satisfaire la demande telle quelle. Elle montre en passant que l’équipe se donne les moyens de piloter ses activités, respecte les principes de transparence et fournit des moyens factuels de se projeter dans l’avenir.

Parmi les alternatives les plus classiques on trouve (non exhaustif) :

  • Réduire le périmètre et conserver la date de livraison: c’est la solution la plus raisonnable lorsque les contraintes business le permettent. De plus rien n’empêche de livrer le reste à des dates ultérieures, les fonctionnalités livrées en premier lieu ayant été choisie pour leur meilleur ROI (un maximum de valeur pour l’utilisateur pour un minimum d’effort de développement, mis à disposition le plus tôt possible).
  • Augmenter la taille de l’équipe : c’est souvent tentant mais c’est une mauvaise idée (à court terme tout du moins) l’impact immédiat sur l’équipe étant fort (accueil et formation des nouveaux arrivants sur le produit et les méthodes de travail). On a un effet inverse de celui recherché la vélocité de l’équipe baisse car elle doit passer du temps à des taches non productives dont le bénéfice ne se verra que plus tard.
  • Confier le développement à une autre équipe: c’est un peu une variante du cas précédent puisqu’il faut effectuer un transfert de connaissance vers l’équipe sous-traitante.

 

Les critères de succès d’une telle approche

Un niveau de maitrise élevé

  • Une Definition Of Done efficace et une vélocité stable
  • Savoir estimer rapidement un backlog : l’eXtreme cotation
  • La stabilité de l’équipe dans la durée
  • Sans oublier les autres bonnes pratiques liées à XP, à la maitrise de la dette technique, à DevOps …

 

Anticiper

Ce n’est pas le jour ou arrive une demande de développement urgente qu’il faut se mettre en ordre de bataille pour se positionner rapidement vis-à-vis de la demande. Etre en mesure d’établir une vélocité stable prends du temps (environ trois à quatre sprints) et n’est possible qu’avec un bon niveau de maturité agile. C’est un levier efficace pour renforcer la motivation intrinsèque de l’équipe SCRUM tout entière et un moyen efficace pour la faire progresser. Une vélocité digne de ce nom ne peut s’entendre qui si une Defintion Of Done efficace est mise en place.

L’estimation complet, d’un backlog sa priorisation passe par la maitrise de techniques et d’outils (Xtreme cotation, WSJF, …) qui nécessite un temps d’apprentissage et d’expérimentation avant d’être utilisés efficacement. De la même façon, maintenir un backlog bien ordonné permet de mieux estimer l’impact d’une nouvelle demande sur des objectifs en cours.

 

Conclusion

Il est tout à fait possible de s’engager sur des dates de livraisons en mode agile, d’évaluer le challenge que cela représente et enfin de tenir cet engagement. Cependant, pour être en capacité d’évaluer avec une bonne précision les dates de livraison en mode agile il faut impérativement :

  • Une vélocité stable (Scrum Master et équipe de développement)
  • Un backlog complètement estimé qui décrive le périmètre fonctionnel à livrer (Product Owner et équipe de développement).

Le fait de devoir maintenir un backlog à jour et une vélocité stable représentent un défi important à atteindre pour une équipe SCRUM. Ces contraintes fortes représentent aussi un levier très puissant au service du Scrum Master pour faire évoluer son équipe SCRUM vers plus de maitrise et de maturité agile.

La régularité avec laquelle l’équipe tiendra ses engagements renforcera sa crédibilité auprès des stakeholders même si ceux-ci ne sont pas pleinement satisfait de ne disposer dans un premier temps que d’une partie du périmètre fonctionnel attendu. Ils auront alors des éléments factuels pour prendre les décisions adaptées aux objectifs qu’il se fixent (passer à l’agilité à l’échelle ou se contenter d’un périmètre moins large mais avec un délai plus court par exemple).

 

Références

Burn Up vs Burn Down chart

http://www.clariostechnology.com/productivity/blog/burnupvsburndownchart

L’eXtreme Quotation : le planning agile «cartes sur table»

https://blog.octo.com/extreme-quotation-planning-agile-sous-steroides/

Estimer la complexité de son backlog : tout un défi

http://blog.thiga.fr/product-management/extreme-quotation-estimer-la-complexite-de-son-backlog/

Scrum Life #31 — Estimer un backlog entier en 1 heure avec l’atelier Extreme Quotation

https://jp-lambert.me/scrum-life-31-estimer-un-backlog-entier-en-1-heure-avec-latelier-extreme-quotation-dce141291b3c

Stabilizing Your Velocity

https://medium.com/@mdalmijn/stabilizing-your-velocity-4639e27f713b

Prioriser par coût du retard (cost of delay) | Excellence Agile

https://excellenceagile.com/2017/08/29/prioriser-par-cout-du-retard-cost-of-delay/

DoD Definition Of Done

https://www.sodifrance.fr/blog/dod-definition-of-done/

What is Extreme Programming?

http://ronjeffries.com/xprog/what-is-extreme-programming/

Agile Product Ownership in a Nutshell

https://www.youtube.com/watch?v=502ILHjX9EE

 

Sujets de réflexions

  • Avez-vous des équipes de développement dont le turnover est important. Dans ce cas quid de la vélocité stable et de la capacité de l’équipe à être prédictible ?
  • Quel est l’impact de l’absence de Vision sur la prédictibilité de l’équipe ? Sur la négociation avec le donneur d’ordre ?

 


Leave a Reply

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *


Pin It on Pinterest

Share This