Sollten Sie User Stories jemals neu schätzen?

8

Mein aktuelles Projekt hat eine 'Diskussion', die in der Mitte aufgeteilt ist - "Diese Geschichte ist komplexer als wir ursprünglich dachten, wir sollten" vs " neu schätzen, " Sie sollten nie neu schätzen, da Sie immer nur hoch und nie runter schätzen " .

Kann jemand etwas Licht ins Dunkel bringen, ob Sie jemals neu schätzen sollten?

IMHO Ich würde mir vorstellen, dass Sie eine völlig neue Karte für eine neue Anforderung oder Story aufrufen könnten, aber ein Zurückgehen und eine Neubewertung der Rückstandselemente scheint das Konzept der relativen Größe zu verzerren und wird Ihren Rückstand immer nur "aufblasen".

f1dave
quelle
2
Schätzungen haben einen bestimmten Wert, basieren jedoch auf den Informationen, die Sie zu einem bestimmten Zeitpunkt haben. Eine frühe Schätzung ist nicht weniger gültig als eine spätere Schätzung im Gesicht, aber die spätere Schätzung ist wahrscheinlich relevanter. Wie andere gesagt haben, wenn es Sinn macht und Ihrem Prozess einen Mehrwert verleiht, tun Sie es; Wenn jedoch überarbeitete Schätzungen für Ihren eigenen begrenzten Gebrauch bestimmt sind. Würde die Überarbeitung einen Mehrwert schaffen und die Erstellung zukünftiger Schätzungen nicht beeinträchtigen?
JustinC
ist Ihre Schätzung in "Tagen" oder in "Funktionspunkten"? Wenn es sich um Funktionspunkte handelt, können Sie Ihre Geschwindigkeit herabstufen.
k3b
2
Ihre aktuellen Schätzungen sind "falsch". Ihre zukünftigen Schätzungen werden jedoch genauso falsch sein, da sie unter den gleichen Umständen vorgenommen werden. Wenn Sie esimates überarbeiten, haben Sie die Umstände effektiv geändert und vergleichen nicht mehr gleiche Dinge bei der Geschwindigkeitsschätzung.
MrFox
@ k3b - Unsere Schätzungen sind in relativer Größe ... Fibonacci-Zahlen.
f1dave

Antworten:

11

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?

RJ Lohan
quelle
Wir haben sicherlich unsere '13'- oder' Unendlichkeit'-Karten für Dinge, die viel zu groß sind, um sie zu erzählen ... Wenn wir jedoch eine 3 ursprünglich relativ zu allem anderen dimensioniert haben, verschieben wir diese auf eine 8 bei Ein späteres Datum - nicht wegen einer Änderung der Anforderungen, sondern weil wir entschieden haben, dass es komplexer ist als ursprünglich angenommen - verzerrt das nicht alle Ihre Metriken? Vor allem, weil Sie nie wirklich abschätzen ... Würden Sie in dieser Iteration keinen Treffer erzielen, und dann wird es mit der Zeit klappen, wenn Sie fünf schließen, die eigentlich zwei sein sollten?
f1dave
1
Ich habe meine Antwort mit einer Klarstellung darüber aktualisiert, was ich unter "erhöhtem Verständnis" verstehe
RJ Lohan
Möchten Sie Ihr C # / Assembly-Beispiel etwas näher erläutern? Ich würde denken, wenn eine "Schaltfläche in C #" 1 Punkt erhält, sollte "Schaltfläche in Baugruppe" mindestens 10 Punkte erhalten. Wie kann die Bestellung möglicherweise zwischen diesen beiden Geschichten Prioritäten setzen, wenn beide 1 Punkt groß sind (aber eine ist tatsächlich viel komplexer)?
Martin Wickman
1
@ MartinWickman - haben mit einem Update ausgearbeitet. Jetzt sieht es aus wie ein Aufsatz über Sprintschätzung ... :-P
RJ Lohan
Aber hey, es ist ein guter Aufsatz ...
f1dave
7

Der Hauptgrund, den ich nicht wiederhole, ist, dass es die Nützlichkeit Ihrer Geschwindigkeit zerstört. Stellen Sie sich ein hypothetisches Scrum-Team vor, das jede Geschichte als 1 Punkt schätzt. Sie vervollständigen ungefähr 10 Geschichten pro Iteration, bei einer Durchschnittsgeschwindigkeit von 10.

Während einer Retrospektive argumentiert ein Teammitglied, dass im Nachhinein, wenn Sie auf so ziemlich jede Iteration zurückblicken, eine der Geschichten wirklich ein 5-Zeiger gewesen sein sollte, also sollten sie ihn neu setzen, um ihre Geschwindigkeit zu "fixieren". Das bringt ihre Geschwindigkeit auf 14.

Bei der nächsten Planung deutet die Geschwindigkeit darauf hin, dass sie vier weitere Geschichten aufnehmen können. Sie sind sich ziemlich sicher, dass das nicht richtig sein kann, denn die Chancen stehen gut, dass eine der zukünftigen Geschichten, die sie geschätzt haben, wirklich ein 5-Zeiger ist. Leider haben sie keine Ahnung welche. Plötzlich haben sie eine Geschwindigkeitszahl, die für die Planung absolut nutzlos ist.

Die Sache ist, wenn sie ihre Geschwindigkeit bei 10 gehalten hätten, dass dies ihre Schätzfähigkeiten berücksichtigt. Wenn 10% ihrer Geschichten in früheren Iterationen wirklich 5 Zeiger waren, werden die Chancen, dass 10% ihrer Geschichten in zukünftigen Iterationen ähnlich unterschätzt werden. Über einen langen Zeitraum kommt alles in der Wäsche heraus.

Denken Sie daran, Geschwindigkeit hat keine Einheiten. Eine höhere Zahl ist nicht besser als eine genaue und nützliche. Wenn Sie prahlen wollen, multiplizieren Sie einfach alles mit 1000 :-)

Karl Bielefeldt
quelle
2
Ich habe das Gefühl, dass alles auch in der Wäsche herauskommt, aber ein Mitglied meines Teams fordert mich dazu heraus und sagt seiner Erfahrung nach, dass dies niemals der Fall ist. Sie haben einfach 'schlechte' Iterationen, die sich auf die Moral auswirken, da Sie 3 Punkte erhalten, wenn Sie tatsächlich wissen, dass es 10 gewesen sein sollten, wenn Sie neu geschätzt hätten. Ich denke, das ist mehr ein Problem mit der Denkweise des Teams (muss immer X Punkte erreichen) als alles andere, aber ich finde es schwierig, mit seiner eigenen Erfahrung zu streiten.
f1dave
Also, posten Sie neu, wenn es der Moral hilft. Verwenden Sie einfach die Originalfiguren in Ihrer Geschwindigkeit.
Karl Bielefeldt
Ich würde hinzufügen, dass Sie außerhalb der von Ihnen verwendeten Tools immer neu schätzen können . So können Sie die ursprüngliche Schätzung
Rudolf Olah
4

Kurze Antwort: Der Produktbesitzer kann alles tun, was er oder sie zu einer Geschichte will - bis zum Sprint, bei dem sich das Team verpflichtet, sie zu vervollständigen.

Wenn das Team eine Geschichte für einen zukünftigen Sprint neu einschätzen möchte, ist es verrückt.

Sobald Sie im Sprint sind, ist die Arbeit (und die Schätzung) festgelegt.

Ich habe auf diese Weise an zahlreichen Projekten gearbeitet und es funktioniert einwandfrei. Wenn Sie einen Burn-Down für das Produkt-Backlog durchführen, müssen Sie entweder die Schätzung zurück aktualisieren oder zumindest visuell klarstellen, dass es sich bei der Änderung nicht um einen Burn-Up handelt.

Matthew Flynn
quelle
3

In diesem Fall scheint es so, als würden Sie den Sprint abbrechen und von vorne beginnen, wenn die Schätzung völlig falsch wäre. Dies wäre natürlich Sache des Scrum Masters und des Besitzers. Wenn es keine Möglichkeit gibt, irgendwo in der Nähe der Schätzung zu liefern, müssen wir dem Chef gegenüber ehrlich sein und ihn früher informieren, damit Entscheidungen getroffen werden können.

Nathan Pilling
quelle
Ja ... ich bin damit einverstanden, dass Sie es erhöhen und es so schnell wie möglich erhöhen müssen. Ich bin mir nur nicht sicher, ob Sie die Zahlen ändern sollten.
f1dave
3

Es ist kein Problem, Rückstandselemente nach oben oder unten neu zu schätzen. Entwicklung ist ein Lernprozess, daher wird erwartet, dass einige zukünftige Rückstandselemente einfacher oder komplexer werden, abhängig von den Kenntnissen, die in früheren Sprints gewonnen wurden.

Vielleicht könnte die 'Geschwindigkeit' (wenn sie vom Team / Unternehmen als Metrik verwendet wird) im Falle einer großen Neubewertung nicht genau gemessen werden, aber das Wichtigste ist, dass Neubewertungsübungen die eigenen Schätzungen des Teams schärfen würden Zukunft. Der Schlüssel, der vorhersehbar ist, besteht darin, die meisten Aktualisierungsinformationen zu verwenden, ohne sich auf eine frühzeitige Schätzung zu beschränken.

Camilo Almendra
quelle
Ich weiß, dass es eine alte Frage ist, aber ich habe darüber nachgedacht, sie zu beantworten, ähnlich wie "Sicher, wenn Sie sie aus dem Sprint nehmen". Sie müssen nicht wissen, dass ich Ihre Antwort sehe.
jmoreno