Ein zentraler Bestandteil der Schätzung von Geschichten in einem Team, an dem ich gearbeitet habe, war die Idee einer Geschichte, die „zu groß“ war, um geschätzt zu werden. Das heißt - die durch die Geschichte implizierte Arbeitsbelastung ging über den Rahmen eines einzelnen Sprints hinaus.
Wenn mehr Informationen zur Hand waren oder das Team einen besseren Überblick darüber bekam, was auf den ersten Blick wie ein einziges Biest einer Geschichte schien, schätzten wir die Geschichte oft neu ein. In den meisten Fällen kann dies bedeuten, die "zu große" Geschichte in kleinere, erreichbare Geschichten zu zerlegen und diese stattdessen zu schätzen.
Diese "zu großen" Geschichten gingen nie in die Größenbestimmung von Zahlen oder das Abbrennen von Diagrammen.
Wir könnten auch auf eine Geschichte zurückkommen und mit einem besseren Verständnis der Anforderungen neu einschätzen. Sie sollten eine Story nicht einfach deshalb neu einschätzen, weil sie einfacher zu erreichen ist (z. B. nachdem Sie eine Reihe von Framework-Bibliotheken aufgebaut haben, ist eine abhängige Arbeit einfacher zu erreichen), da die ganze Idee darin besteht, dass Sie Besser ', das Team kann im Sprint mehr erreichen, aber ich denke, es ist richtig, Geschichten neu zu schätzen, wenn sich Ihr Verständnis davon ändert.
Das Folgende würde ein Kommentar sein, aber ich wurde mitgerissen ...
Vergessen Sie nicht, bei Ihrer Schätzung zwischen Größe und Komplexität zu unterscheiden . Sie sollten nur die Größe schätzen, nicht die Komplexität oder Schwierigkeit. Zum Beispiel sollte das Hinzufügen einer Schaltfläche zu einem Bildschirm immer eine '1' sein, da der Benutzer eine Schaltfläche erhält - die Größe ist sehr gering. Es spielt keine Rolle, ob Sie es tatsächlich in C # (geringe Komplexität, sehr einfach) oder Assembly (hohe Komplexität, sehr schwierig) implementieren. Die User Story hat die gleiche Größe.
Wenn ich also sage, dass es sich lohnt, beim Verständnis von Änderungen neu zu schätzen, dann hat sich nicht Ihr Verständnis für die Implementierung der Funktion geändert, sondern Ihr Verständnis dafür, was die Funktion ist, die sich geändert hat.
"Ich möchte eine Schaltfläche" ist also einfach, aber später wird Ihnen klar, dass der Benutzer bedeutet "Ich möchte eine anklickbare Schaltfläche, die grün wird und eine Nachricht an den Benutzer anzeigt ". Dies ist jetzt eine komplexere Geschichte und sollte daher erneut ausgeführt werden geschätzt.
Update ; Wie gewünscht, werde ich versuchen, näher auf das einzugehen, was ich meine, indem ich eher die Größe als die Komplexität schätze.
Ich denke, es ist am einfachsten, diese Unterscheidung in Bezug auf ein neues Produkt zu betrachten. Ihr Team hat die Aufgabe, ein Multi-Screen-System aufzubauen, in dem alles neu ist. Unter Ihren User Stories finden Sie eine Reihe von Storys wie:
1) Ich möchte eine Schaltfläche auf Bildschirm A, die beim Klicken nicht autorisierten Benutzern einen Fehler anzeigt. 2) Ich möchte eine Schaltfläche auf Bildschirm B, die beim Klicken eine Meldung anzeigt, wenn der aktuelle Tag ein Wochenende ist. 3) Ich möchte eine Menüoption auf Bildschirm C, die beim Klicken den Bildschirm alle 5 Minuten zum Blinken bringt.
Wenn das Team diese Geschichten schätzt, sind sie sich einig, dass sie alle ungefähr gleich groß sind, und schätzen jede als "kleine" Geschichte mit einem Wert von 5 Punkten auf ihrer Sprintgeschwindigkeitsskala.
Die Sprints beginnen und für den ersten Sprint erreicht das Team keine dieser Geschichten, da sie den gesamten Zyklus damit verbringen, Projekte, Infrastruktur, Kernbibliotheken usw. einzurichten. Und es gibt einen neuen Mann im Team, der noch lernt.
Ein paar Sprints später stellt das Team einen Bildschirm zusammen, der Story # 1 erfüllt - glückliche Tage, sie haben jetzt 5 Geschwindigkeitspunkte erreicht. (Mit durchschnittlich 1 Punkt pro Sprint aufgrund der unproduktiven Sprints zu Beginn).
Jetzt, für den nächsten Sprint, ist die Infrastruktur vorhanden, das Team verfügt über eine Bildschirmvorlage, die wiederverwendet werden kann, und der neue Mann kümmert sich um die Dinge, und bei diesem Sprint hat das Team die Story 2 und 3 abgebrochen.
Jetzt haben sie 10 Punkte in einem Sprint erreicht, was einem Durchschnitt von 4 Punkten pro Sprint entspricht. Dies zeigt, dass sich die Teamproduktivität im Laufe der Zeit verbessert, was völlig zu erwarten ist, wenn sich das Projekt weiterentwickelt, die Fähigkeiten des Teams verbessert werden und der Kerncode wiederverwendet (nicht neu geschrieben) wird.
Das ist für mich das Ideal. Gut geschätzte Geschichten, die einen Anstieg der Geschwindigkeit im Laufe der Zeit zeigen (was letztendlich ein Plateau bedeuten würde, wenn sich nichts Wesentliches ändert - wie ein neues Teammitglied usw.).
Auf der anderen Seite würde das Team, wenn es sich gleich zu Beginn diese Geschichten ansah und sie anhand ihrer Komplexität schätzte, feststellen, dass die erste Geschichte eine GROSSE Geschichte ist, da sie alle Vorbereitungsbemühungen und die neuer Typ, der eine Ausbildung braucht. Geschichte Nr. 2 ist ein MITTEL, weil sie glauben, dass sie bis dahin zumindest unterwegs sein werden, und es sollte einfacher sein. Und schließlich ist Geschichte Nr. 3 eine KLEINE, weil es einfach sein wird, wenn Nr. 1 und Nr. 2 fertig sind.
Was Sie in diesem Modell gefunden haben, ist einfach eine verschleierte Schätzung der ZEIT. Die Schätzungen berücksichtigen, wie schwierig es sein wird und wie lange es dauern wird, bis eine Arbeit erledigt ist, und wie wir wissen, ist dies bestenfalls schwierig. In diesem Modell wird die Geschwindigkeit von Anfang an ausgeglichen, und Sie können niemals eine Verbesserung der Teamleistung nachweisen. Wenn Sie pünktlich schätzen, können Sie in einer Woche immer nur 40 Stunden arbeiten. Und du wärst dumm, einen Sprint mit mehr oder weniger Arbeit zu planen. Wenn das Team seine Fähigkeiten verbessert, können Sie immer noch nur 40 Stunden Arbeit buchen. Sie werden immer nur 40 Stunden Arbeit erreichen.
Deshalb habe ich festgestellt, dass ein Job in C # einfacher ist als ein Job in Assembly (weniger Komplexität), aber dass die 'Größe' der Aufgabe gleichwertig geschätzt werden sollte. Auf diese Weise können Sie sehen, dass die Entscheidung, Sprachen zu verschieben, die Fähigkeiten zu verbessern (oder Anpassungen an eine andere Teamdynamik vorzunehmen), einen direkten Einfluss auf die Geschwindigkeit hat.
[ Ein weiteres Update: Adressierung der Priorisierung ]
Was die Priorisierung betrifft, glaube ich, dass dies eine separate Diskussion zur Dimensionierung / Schätzung ist. Sie priorisieren die Warteschlange nicht einfach nach den Schätzungen einer Geschichte, sonst würden wir immer nur kleine Arbeiten erledigen und niemals die größeren, [möglicherweise] wichtigeren. In einem von mir geleiteten Team führten wir routinemäßig Gespräche über die Komplexität bei der Verwaltung einer Sprint-Warteschlange. Die PO sollte verstehen, dass eine Aufgabe zwar eine "KLEINE" Aufgabe ist (in Story-Punkten), aufgrund von X, Y, Z jedoch möglicherweise schwer zu erreichen ist. Manchmal wurde die Geschwindigkeit des Teams beeinträchtigt, um einige dieser komplexeren Geschichten umzusetzen. In anderen Fällen sagte die PO: "Nun, ich hätte lieber 5 andere Dinge in diesem Sprint, damit wir die komplexeren Jobs verschieben."
Wenn wir einfach Geschichten in Schwierigkeiten schätzen würden, würde dies die Geschwindigkeit verbergen. Schwierige oder zeitaufwändige Aufgaben würden immer stärker gewichtet, um den Geschwindigkeitsmittelwert zu ermitteln. Wie ich bereits erwähnt habe, ist dies nur eine andere Form der Zeitschätzung, und es gibt keine Punktverfolgungsgeschwindigkeit, wenn dies Ihre Schätzmethode ist, da Sie für einen Sprint immer eine feste Dauer haben, sodass sich Ihre "Geschwindigkeit" nur ändern würde, wenn Sie falsch geschätzt (zB eine 8-stündige Aufgabe dauerte 1 Stunde).
Hoffe das klärt es ein wenig auf?