The cone of uncertainty experiment
Le cône d’incertitude est un outil puissant illustrant l’incertitude sur le temps nécessaire à la réalisation d’un projet, en fonction de la quantité de connaissances (ou de leur absence) au début d’un projet. Dans cet article, nous explorons une expérience menée par une équipe de personnes chez Codebots pour déterminer comment l’application d’un cône d’incertitude pourrait améliorer les estimations du projet.
Dans le cadre de notre série d’estimations logicielles, nous avons exploré l’importance de gérer les attentes dans le cadre de tout projet logiciel. Cet article va se concentrer sur le cône d’incertitude, un outil puissant pour atténuer les risques liés au processus de cadrage et d’estimation. À la base, il s’agit d’une représentation de l’incertitude quant au temps nécessaire pour terminer un projet, en fonction de la quantité de connaissances (ou de leur absence) au début d’un projet. Cela explique en fin de compte le risque que le projet explose en raison d’inconnues, et le fait que plus vous essayez d’estimer dans le futur, plus vous avez de chances de vous tromper. C’est un paradoxe intéressant où nous voulons prédire l’avenir avec précision, mais nous ne pouvons pas vraiment l’être car ce n’est qu’une estimation.
Au cas où vous ne l’auriez pas déjà fait, je vous recommande de vous familiariser avec une expérience précédente que nous avons menée ici chez Codebots pour découvrir comment nous pourrions mieux gérer les risques dans les logiciels. La motivation de cet exercice était le suroptimisme fréquent de nos équipes logicielles lorsqu’il s’agissait de réaliser des estimations.
Après nous être équipés de la meilleure procédure pour proposer une expérience, nous avons identifié un problème dans nos estimations de portée fixe. Chaque devis contenait une variation minimale de 80% par rapport au travail effectué, quelle que soit la durée du projet. Comme nous n’avons pas appliqué un cône d’incertitude, notre capacité à fournir à nos clients des estimations réalistes et à gérer leurs attentes a été considérablement entravée.
Étape 1: Comprendre le problème
Comme mentionné ci-dessus, nous avons rencontré un problème dans nos estimations, qui se produit lorsque nous fournissons un prix de portée fixe au stade de la cotation. (Portée fixe signifiant fournir les exigences exactes données, mais pour une durée flexible). Peu importe la durée du projet, nous avons toujours été dépassés en raison d’une grande quantité de variations.
La cause première – nous n’avions pas de cône d’incertitude. Nous n’avons pas tenu compte du fait que plus vous essayez de prédire l’avenir, plus l’augmentation de la variance dans le temps est importante. Cela est dû à la présence d’un certain nombre de risques spécifiques, les plus graves étant des estimations inexactes, des variations de portée et l’engagement des utilisateurs finaux. Comme tout était estimé au début, il n’y avait aucune possibilité de modifier l’estimation pour tenir compte de ces risques découverts. Au lieu de cela, l’impact de ces risques est aggravé au cours de la durée de vie du projet, ce qui signifie que plus le projet est long, plus vous essayez de prédire, donc plus vous avez de chances de vous tromper.
Étape 2: Développer une hypothèse
Après avoir digéré le problème, nous avons ensuite travaillé sur le développement d’une hypothèse pour tester comment un cône d’incertitude pourrait être appliqué avec précision à nos estimations de portée fixe.
À partir de cela, il a été émis l’hypothèse qu’une formule pourrait être utilisée pour calculer la taille du cône d’incertitude, compte tenu de la longueur d’un projet.
Etape 3 : Planifier l’expérience
Équipés de notre hypothèse, nous avons procédé à la planification d’une expérience pour tester notre proposition du Cône d’incertitude. Pour ce faire, nous avons généré une fonction quadratique pour simuler notre cône, avec un paramètre représentant le nombre de semaines de développement prévues. Nous pourrions ensuite appliquer ce multiplicateur à nos estimations pour tenir compte de la variance temporelle, en fonction de la distance dans le futur que nous essayions de prédire.
Si nous appliquons cela aux données d’estimation de projets précédents, nous pourrions alors déterminer si un prix de portée fixe avec la variation aurait été plus précis.
Étape 4: Recueillir les données
Nous avons recueilli des données provenant d’une variété de projets, y compris des informations sur le temps alloué et pris, les histoires terminées, le temps jusqu’à la fin, y compris des notes supplémentaires sur le projet et les risques rencontrés.
En prenant les estimations, nous avons calculé une valeur de portée fixe hypothétique pour chaque projet, en utilisant le cône d’incertitude. En utilisant ces informations, nous avons pu examiner si le temps que nous avons réellement mis à développer, en terminant à la fois le travail initial et les variations supplémentaires, était comparable aux nouvelles valeurs d’estimation générées à l’aide du cône d’incertitude. Il s’avère que l’estimation améliorée et le temps réellement pris étaient très similaires!
Étape 5: Prendre une décision
En fin de compte, les données ont démontré que si nous appliquions le Cône d’incertitude à une portée fixe, en utilisant une formule qui prend en compte la durée d’un projet, nous nous retrouverions avec une estimation qui prendrait en compte la variance qui se produit sur le développement du projet.
En fin de compte, nous recommandons que plutôt que d’essayer d’estimer l’ensemble du projet, une équipe de développement se concentre uniquement sur et estime une petite quantité de travail. Cela aidera à réduire l’impact des inconnues, et donc la taille du cône d’incertitude. Cela signifie également que lorsque l’équipe travaille sur le projet, elle en apprend plus à ce sujet, et lorsqu’il s’agit d’estimer la prochaine partie du travail, elle peut réduire l’incertitude et faire des estimations plus précises.