Articles

The cone of uncertainty experiment

Der cone of uncertainty ist ein mächtiges Werkzeug, das die Unsicherheit über die Zeit darstellt, die benötigt wird, um ein Projekt abzuschließen, basierend auf der Menge an Wissen (oder deren Fehlen) zu Beginn eines Projekts. In diesem Artikel untersuchen wir ein Experiment, das von einem Team von Mitarbeitern von Codebots durchgeführt wurde, um festzustellen, wie die Anwendung eines Unsicherheitskegels die Projektschätzungen verbessern kann.

Im Rahmen unserer Serie zur Softwareschätzung haben wir untersucht, wie wichtig es ist, Erwartungen als Teil eines Softwareprojekts zu verwalten. Dieser Artikel wird sich auf den Kegel der Unsicherheit konzentrieren, ein leistungsfähiges Werkzeug zur Minderung der Risiken, die mit dem Scoping- und Schätzungsprozess verbunden sind. Im Kern ist es eine Darstellung der Unsicherheit über die Zeit, die erforderlich ist, um ein Projekt abzuschließen, basierend auf der Menge an Wissen (oder dessen Fehlen) zu Beginn eines Projekts. Es berücksichtigt letztendlich das Risiko, dass das Projekt aufgrund von Unbekannten ausbricht, und die Tatsache, dass je weiter in die Zukunft Sie zu schätzen versuchen, desto wahrscheinlicher ist es, dass Sie falsch liegen. Es ist ein interessantes Paradoxon, wo wir die Zukunft genau vorhersagen wollen, aber wir können nicht wirklich genau sein, weil es nur eine Schätzung ist.

Image

Falls Sie es noch nicht getan haben, empfehle ich Ihnen, sich mit einem früheren Experiment vertraut zu machen, das wir hier bei Codebots durchgeführt haben, um herauszufinden, wie wir Risiken in Software am besten managen können. Die Motivation für diese Übung war der häufige Überoptimismus unserer Softwareteams bei der Durchführung von Schätzungen.

Nachdem wir uns mit dem besten Verfahren ausgestattet hatten, um ein Experiment vorzuschlagen, identifizierten wir ein Problem in unseren Schätzungen des festen Umfangs. Jedes Angebot enthielt eine Variation von mindestens 80% der geleisteten Arbeit, unabhängig von der Länge des Projekts. Da wir keinen Kegel der Unsicherheit angewendet haben, wurde unsere Fähigkeit, unseren Kunden realistische Schätzungen zu liefern und ihre Erwartungen zu erfüllen, erheblich beeinträchtigt.

Schritt 1: Verstehen Sie das Problem

Wie oben erwähnt, stießen wir bei unseren Schätzungen auf ein Problem, das auftrat, wenn wir in der Angebotsphase einen festen Scope-Preis zur Verfügung stellten. (Fester Umfang bedeutet, die genauen Anforderungen zu liefern, aber für einen flexiblen Zeitraum). Unabhängig von der Länge des Projekts gingen wir immer über, da wir eine große Variation hatten.

Die Ursache – wir hatten keinen Kegel der Unsicherheit. Wir haben nicht berücksichtigt, dass je weiter in die Zukunft Sie versuchen vorherzusagen, desto größer die Zunahme der Zeitabweichung ist. Dies ist auf das Vorhandensein einer Reihe spezifischer Risiken zurückzuführen, wobei die schwerwiegendsten ungenaue Schätzungen, Umfangsschwankungen und das Engagement der Endnutzer sind. Da alles zu Beginn geschätzt wurde, gab es keine Möglichkeit, die Schätzung zu ändern, um diese entdeckten Risiken zu berücksichtigen. Stattdessen werden die Auswirkungen dieser Risiken über die Lebensdauer des Projekts verstärkt, dh je länger das Projekt dauert, desto mehr versuchen Sie vorherzusagen, und desto wahrscheinlicher ist es, dass Sie sich irren.

Schritt 2: Entwickeln Sie eine Hypothese

Nachdem wir das Problem verdaut hatten, arbeiteten wir als nächstes an der Entwicklung einer Hypothese, um zu testen, wie ein Kegel der Unsicherheit genau auf unsere Schätzungen mit festem Umfang angewendet werden kann.

Daraus wurde die Hypothese aufgestellt, dass eine Formel verwendet werden könnte, um die Größe des Unsicherheitskegels angesichts der Länge eines Projekts zu berechnen.

Schritt 3: Experiment planen

Ausgestattet mit unserer Hypothese haben wir ein Experiment geplant, um unseren Satz vom Kegel der Unsicherheit zu testen. Dazu haben wir eine quadratische Funktion generiert, um unseren Kegel zu simulieren, wobei ein Parameter die Anzahl der vorhergesagten Entwicklungswochen darstellt. Wir könnten diesen Multiplikator dann auf unsere Schätzungen anwenden, um die Zeitvarianz zu berücksichtigen, basierend darauf, wie weit in die Zukunft wir vorhersagen wollten.

Image

Wenn wir dies auf Schätzdaten aus früheren Projekten anwenden, könnten wir dann feststellen, ob ein fester Umfangspreis mit der Variation genauer gewesen wäre.

Schritt 4: Sammeln Sie die Daten

Wir haben Daten aus einer Vielzahl von Projekten gesammelt, einschließlich Informationen über die zugewiesene und in Anspruch genommene Zeit, die abgeschlossenen Geschichten, die Zeit bis zur Fertigstellung, einschließlich zusätzlicher Hinweise zum Projekt und den aufgetretenen Risiken.

Unter Verwendung der Schätzungen berechneten wir für jedes Projekt einen hypothetischen festen Umfangswert unter Verwendung des Unsicherheitskegels. Mit diesen Informationen konnten wir untersuchen, ob die Zeit, die wir tatsächlich für die Entwicklung benötigten, sowohl die ersten Arbeiten als auch die zusätzlichen Variationen beendeten, mit den neuen Schätzwerten vergleichbar war, die mit dem Kegel der Unsicherheit erzeugt wurden. Es stellte sich heraus, dass die verbesserte Schätzung und die tatsächlich benötigte Zeit sehr ähnlich waren!

Schritt 5: Treffen Sie eine Entscheidung

Am Ende zeigten die Daten, dass wir, wenn wir den Kegel der Unsicherheit auf einen festen Bereich anwenden und eine Formel verwenden, die die Länge eines Projekts berücksichtigt, eine Schätzung erhalten würden, die die Varianz berücksichtigt, die während der Entwicklung des Projekts auftritt.

Letztendlich empfehlen wir, dass sich ein Entwicklungsteam, anstatt zu versuchen, das gesamte Projekt abzuschätzen, nur auf eine kleine Menge Arbeit konzentriert und diese schätzt. Dies wird dazu beitragen, die Auswirkungen der Unbekannten und damit die Größe des Kegels der Unsicherheit zu reduzieren. Dies bedeutet auch, dass das Team, während es an dem Projekt arbeitet, mehr darüber erfährt und wenn es darum geht, den nächsten Teil der Arbeit zu schätzen, die Unsicherheit verringern und genauere Schätzungen vornehmen kann.