WSJF

De Wiki Agile
Aller à : navigation, rechercher

Auteur : Black Swan Farming
Source : WSJF – Weighted Shortest Job First
Date : 08/07/2016


Traducteur : Fabrice Aimetti
Date : 01/04/2022


Traduction :

WSJF-Mainframe-Scheduling.jpeg

Qu'est-ce que le WSJF ?

Le Weighted Shortest Job First est un algorithme d'ordonnancement (ou si vous préférez, une méthode de priorisation) qui maximise la quantité de ce que vous choisissez de "pondérer" dans une période de temps donnée à travers une ressource limitée.

D'où vient le WSJF ?

Dans les années 1970, lorsque les ressources informatiques étaient à la fois extrêmement coûteuses et très limitées, le principe de la tâche la plus rapide d'abord (shortest job first) était utilisé pour ordonnancer les travaux par lots de manière à optimiser l'utilisation d'une ressource rare. Plus récemment, Don Reinertsen a proposé et popularisé la notion de Weighted Shortest Job First, comme moyen de maximiser le retour sur investissement pour les équipes logicielles.

Deux ingrédients seulement sont nécessaires pour le WSJF : la pondération de chaque tâche et la durée de chaque tâche. La pondération que Don recommande spécifiquement pour le développement de produits est le Coût du Retard (Cost of Delay).

Voici une vidéo de 3 minutes qui explique le Coût du Retard :

L'autre composante, la durée, est la "brièveté" de chaque tâche. Ce que nous devons savoir, c'est « Combien de temps cette tâche va-t-elle bloquer le pipeline ? ». Pour cela, nous avons besoin de prévoir la Durée pendant laquelle ce travail sera en cours de traitement. C'est important car, pendant qu'il est en cours de traitement, il bloque le démarrage d'autres tâches. Pendant ce temps, nous subissons le Coût du Retard. Ce que Don propose spécifiquement, c'est une forme particulière de la méthode du "Weighted Shortest Job First" : le Coût du Retard divisé par la Durée.

Il existe d'autres formes possibles de WSJF Weighted Shortest Job First - en fonction de ce que vous essayez d'optimiser. Vous pouvez choisir de pondérer par le risque technique, le risque de marché, l'influence des parties prenantes, la durée d'attente, ou tout autre facteur ou combinaison que vous souhaitez maximiser. Cependant, la plupart des organisations cherchent avant tout à maximiser leur rendement économique. Dans ce cas, c'est le Coût du Retard que vous devez pondérer.

CD3 : Coût du (Délai/)Retard Divisé par la Durée

CD3-cost-of-delay-divided-by-duration FR.jpg

Répéter plusieurs fois « Weighted Shortest Job First » (travail le plus rapide pondéré d'abord) ou, plus précisément, « Coût du Retard Divisé par la Durée » devient vite fatigant, aussi, pour faciliter la communication, nous pouvons abréger en CD3, tout au moins dans le cas où nous pondérons par le Coût du Retard. Cela a également l'avantage de communiquer la composante la plus importante de l'algorithme : le Coût du Retard.

Lors de l'utilisation du CD3, l'ordre de priorité des fonctionnalités ou des projets est déterminé en divisant le Coût estimé du Retard par la Durée estimée : plus le score obtenu est élevé, plus la priorité est élevée.

L'un des avantages de la version CD3 du WSJF est qu'elle nous permet d'utiliser une mesure commune pour comparer des opportunités ayant une valeur et une urgence différentes, ainsi que de prendre en compte la situation où la durée diffère. Le CD3 optimise le retour sur investissement en minimisant le Coût total des Retards subi pour un ensemble d'options potentielles. Dans la plupart des contextes de développement de produits, la capacité est relativement peu flexible et difficile à ajuster. Cela signifie que la compréhension de la durée de blocage du pipeline est souvent une information très précieuse.

Puisque le CD3 utilise la Durée au dénominateur, il a également l'avantage d'encourager la répartition du travail en lots plus petits. La décomposition du travail est l'une des améliorations les plus faciles et les plus efficaces que nous puissions apporter pour obtenir plus de valeur, un flux plus rapide et une meilleure qualité.

WSJF : Coût du Retard Divisé par la Durée

Prenons un exemple pour nous aider à comprendre comment et pourquoi le WSJF/CD3 améliore le retour sur investissement. Considérons les trois fonctionnalités suivantes, pour lesquelles nous allons examiner le résultat de deux approches d'ordonnancement différentes :

WSJF-CD3 example.png

Utilisation du principe du Premier Entré, Premier Sorti (PIPO)

Nous pourrions choisir de travailler sur ces fonctionnalités et de les livrer une par une, dans l'ordre où elles arrivent. A, puis B, puis C. C'est ce qu'on appelle le PIPO (Premier Entré, Premier SOrti - FIFO : First In, First Out). Il s'agit d'une méthode d'ordonnancement courante dans le secteur de la fabrication. Après tout, la personne qui demande la fonctionnalité A attend depuis le plus longtemps, il est donc logique que nous la servions en premier. Ensuite, nous passerons à B, puis à C.

Pendant les 5 semaines où nous travaillons sur la fonction A, nous supportons le Coût du Retard des trois fonctionalités : 5 000 €/semaine + 4 000 €/semaine + 1 000 €/semaine. Le total s'élève à 10 000 €/semaine sur 5 semaines, ce qui nous donne un Coût du Retard subi de 50 000 €.

Une fois que nous avons livré la fonctionnalité A, nous pouvons passer au développement de la fonctionnalité B. Pendant la semaine qu'il nous faut pour la livrer, nous subissons le Coût du Retard des fonctionnalités B et C : 4 000 €/semaine + 5 000 €/semaine = 9 000 €/semaine pendant 1 semaine - 9 000 € supplémentaires, ce qui nous amène à un total de 59 000 € de Coût du Retard subi.

Finalement, nous pouvons commencer à travailler sur la fonctionnalité C, en subissant le Coût du Retard de C pendant son développement, soit 5 000 €/semaine pour les deux semaines nécessaires à la construction de la fonctionnalité C. Donc, encore 10 000 € de Coût du Retard à ajouter à notre montant précédent de 59 000 €, soit un total de 69 000 € de Coût du Retard subi.

Utilisation du WSJF : Coût du (Délai/)Retard Divisé par la Durée (CD3)

Considérons une autre façon de traiter ces fonctionnalités. Si nous développons les fonctionnalités en nous basant sur celle qui a le score CD3 le plus élevé, nous commencerons par la fonctionnalité B, suivie de la fonctionnalité C et enfin de la fonctionnalité A.

Pendant la semaine où nous travaillons sur la fonction B, nous subissons un Coût du Retard de (4 000 + 5 000 + 1 000)€/semaine. Coût du Retard après 1 semaine = 10 000 €. Pendant les deux semaines suivantes, nous travaillons sur la fonctionnalité C, ce qui entraîne un Coût du Retard de (5 000 + 1 000)€/semaine. Coût du Retard = 12 000 €.

Pendant les 5 semaines où nous travaillons sur la fonctionnalité A, le Coût du Retard est de 1 000 €/semaine. Coût du Retard = 5 000 €.

Coût total du Retard en utilisant le CD3 = 27 000 €.

Comparaison

L'utilisation du PIPO a entraîné un Coût total du Retard de 69 000 €. L'utilisation de la méthode CD3 nous a permis d'obtenir un Coût du Retard total de 27 000 €, soit une diminution de 61 % du Coût de Retard subi. Comme vous pouvez le constater, l'utilisation de la version CD3 de la méthode du Weighted Shortest Job First pour ordonnancer votre backlog peut faire une grande différence.

Ce que cette simple comparaison ne montre pas, ce sont les effets humains de la préférence accordée aux tâches plus petites et l'impact que cela a sur le flux et le lead time. Comme nous l'avons montré dans notre Retour d'Expérience, l'utilisation du CD3 encourage également le découpage des lots pour influencer la priorité. Cela signifie qu'au lieu de récompenser les lots plus gros, qui affichent souvent des bénéfices plus élevés, nous encourageons les gens à minimiser la taille des choses qu'ils demandées. Cela présente d'énormes avantages dans un certain nombre de domaines, notamment des lead times nettement plus courts et un meilleur rendement grâce à la réduction de la variabilité des éléments de travail traités.

Scaled Agile Framework, WSJF et le Coût du Retard

Le fait que le Scaled Agile Framework (SAFe) de Dean Leffingwell recommande de l'utiliser pour la priorisation constitue une belle reconnaissance du WSJF. SAFe insiste également sur le fait que le WSJF doit être appliqué au niveau des features, ce qui correspond également à notre expérience de l'utilisation du Coût du Retard. (L'un des concepts les plus néfastes qui ait pu s'imposer dans les organisations est celui selon lequel les projets de grande envergure sont un véhicule adapté pour le développement de logiciels). SAFe doit être salué pour avoir encouragé les organisations à progresser dans ces deux domaines.

Cela dit, l'enseignement actuel du WSJF dans SAFe pourrait encore être amélioré - en particulier la façon dont il aborde le Coût du Retard. Dans leur tentative de simplifier le Coût du Retard, SAFe a sans doute involontairement rendu ce concept plus compliqué, et l'a rendu inutile pour une grande partie de la valeur que le Coût du Retard peut apporter. Vous trouverez sur ce lien mes réflexions sur la façon dont SAFe interprète le Coût du Retard. Bien avant que je n'ai posé des mots sur l'écran, Jason Yip a partagé son point de vue ici.

Mon principal conseil est de veiller à ne pas réduire le Coût du Retard à un simple moyen de mieux définir les priorités... C'est bien plus que cela !

Mise à jour

J'ai depuis proposé une approche qualitative du Coût du Retard, qui pourrait être utilisée pour le WSJF. A partir de là, j'ai également proposé la plus petite modification possible de la version SAFe du WSJF pour la rendre au minimum cohérente et refléter les concepts sous-jacents.