Die Monte Carlo Simulation in meinen Worten. Wie heisst es so schön: Eigene Worte lernen mehr als tausend Bücher.
Problem
Ich programmiere wie ein Weltmeister, Bugs kenne ich nicht und Krankheit oder sonstige unerwartete Ereignisse existieren nicht. Dazu soll die Software günstig sind, nichts kosten und sowieso morgen bereits nutzbar sein. Die gewünschten Funktionen sind «Industriestandard» und nicht erwähnenswert, ausser dieses kleine Feature, aber mit Framework xy ist das geschenkt.
Unter diesen Bedingungen schätze ich Aufwände; oder so in etwa.
Ein Einzelfall? Kaum. Immer wieder zieren unterschätzten Grossprojekten (die kleinen schaffen es einfach nicht an die Öffentlichkeit) die Titelseite von 20 Minuten, Blick und sogar NZZ.
Neben einer Vielzahl anderer Problemen ist immer eine Unterschätzung der Kosten, Komplexität, Risiken, Umfang usw. im Spiel. Eine einfache objektive, wissenschaftlich fundierte Schätzmethode sollte willkommen sein, denn: (sog. Experten) Schätzungen sind nie Objektiv und Unvorhergesehenes trifft immer ein.
Expertenschätzungen (oder eher Bauchschätzungen) sind entweder zu konservativ oder zu aggressiv. Im ersten Fall ist der Kunde nicht zufrieden, weil es zu lange dauert und zu teuer ist im zweiten Fall hat der Projektleiter das Problem, weil er nicht genüged Budget und/oder Zeit hat.
Schöner wäre es, eine Wahrscheinlichkeit angeben zu können. Das würde so aussehen: mit 10% Wahrscheinlichkeit sind wir in 59 Tagen fertig, mit 50% W’keit in 75 Tagen usw. Die Monte-Carlo Simulation bietet genau das.
Lösung
Monte Carlo, die kleine Stadt zwischen Meer und Bergen, heim von extravaganten Yachten und teuren Sportwagen. Monte Carlo ist aber auch ein Verfahren um Schätzungen durchzuführen und somit eine ideale Möglichkeit, um die Dauer eines Projekts basierend auf Erfahrungswerten vorherzusagen.
Die Monte-Carlo Simulation funktioniert wie folgt:
1. Daten aus der Vergangenheit
Die Durchlaufzeit (Anzahl Tasks welche pro Zeiteinheit z.B. einer Woche erledigt werden) von User Stories oder Tasks auflisten. Setzt voraus, dass bereits ein paar Wochen gearbeitet wurde. Die folgende Tabelle listet alle bisher abgeschlossenen Tasks und deren Dauer auf.
Tasks pro Woche
2
4
8
3
7
1
10
12
11
8
6
15
5
2. Simulation starten
Zufällig 5 Werte aus der Tabelle herauspicken und schauen, wie lange es in dieser Konstellation dauern würde. Z.B.
2,7,11,3,12 => Summe = 35
Damit wissen wir, dass in genau diesem Fall wir in den nächsten 5 Wochen 35 Tasks umsetzen werden. Wir wollen es aber allgemeiner haben.
3. Simulation wiederholen
Schritt zwei beliebig viele Male wiederholen. Wiederholen wir ihn drei mal, dann sieht es vielleicht wie folgt aus
Tasks |
||||||
Wahl 1 | 2 | 7 | 11 | 3 | 12 | 35 |
Wahl 2 | 5 | 12 | 15 | 3 | 3 | 36 |
Wahl 3 | 4 | 5 | 10 | 8 | 1 | 28 |
Ich kann sagen, dass wir zwischen 28 und 35 Tasks umsetzen werden. Allerdings ist die Simulation mit drei Durchgängen statistisch gesehen nicht verlässlich. Jeder Durchgang wird ein anderes Resultate bringen.
Wiederholen wir den Schritt allerdings 1000x (oder noch mehr) ergibt sich ein schönes Histogramm.
# Tasks in 5 Wochen | Häufigkeit |
10 | 1 |
20 | 65 |
30 | 370 |
40 | 653 |
50 | 411 |
60 | 90 |
70 | 6 |
80 | 0 |
Oder graphisch (Gauss lässt grüssen, es muss jedoch nicht zwingend eine solche Verteilung sein)
Daraus können wir mittels Quantilen ablesen, dass wir mit 20% Wahrscheinlichkeit maximal 20 Tasks in den kommenden 5 Wochen erledigen oder mit 80% Wahrscheinlichkeit schaffen wir in den kommenden 5 Wochen 44 Tasks.
Was ist der Nutzen
Eine Schätzung ist nicht mehr nur ein Bauchgefühl, Inspiration oder Offenbarung, sondern eine wissenschaftlich fundierte und belegbare Zahl. Im Idealfall stimmt diese Zahl mit der Bauchschätzung überein und stimmt den Entwickler umso zuversichtlicher.
Focused Objective bieten kostenlose Excel Templates an.
Nachtrag
Das gleiche Spiel kann man auch mit Zeit pro Task durchführen (die Leadtime). Einziger Nachteil dabei, die Vorhersage basiert auf einem 1 Mann Team und entspricht daher in vielen Fällen nicht mehr der Realität.