Ich bin in einem Projektteam von 4 Entwicklern, auch ich. Wir haben lange darüber diskutiert, wie mit zusätzlicher Arbeit umgegangen werden soll, die im Verlauf eines einzelnen Arbeitselements anfällt.
Diese zusätzliche Arbeit ist normalerweise etwas, das etwas mit der Aufgabe zu tun hat, aber nicht immer notwendig ist, um das Ziel des Gegenstands zu erreichen (das kann eine Meinung sein). Beispiele umfassen, sind aber nicht beschränkt auf:
- Refactoring des durch das Workitem geänderten Codes
- Refactoring-Code neben dem vom Artikel geänderten Code
- Neugestaltung des größeren Codebereichs um das Ticket. Wenn Sie beispielsweise für ein Element eine einzelne Funktion ändern, erkennen Sie, dass die gesamte Klasse jetzt erneuert werden kann, um diese Änderung besser zu berücksichtigen.
- Verbessern der Benutzeroberfläche in einem Formular, das Sie gerade geändert haben
Wenn diese zusätzliche Arbeit klein ist, macht es uns nichts aus. Das Problem besteht darin, dass diese zusätzliche Arbeit eine wesentliche Erweiterung des Elements über die ursprüngliche Merkmalspunktschätzung hinaus verursacht. Manchmal benötigt ein 5-Punkte-Gegenstand tatsächlich 13 Zeitpunkte. In einem Fall hatten wir einen Punkt mit 13 Punkten, der im Nachhinein 80 Punkte oder mehr hätte betragen können.
In unserer Diskussion gibt es zwei Möglichkeiten, wie wir damit umgehen sollen.
Wir können die zusätzliche Arbeit im selben Arbeitselement akzeptieren und als Fehleinschätzung abschreiben. Zu den Argumenten hierfür gehörten:
- Wir planen, am Ende des Sprints "aufzufüllen", um dies zu berücksichtigen.
- Lassen Sie den Code immer in einem besseren Zustand als Sie ihn gefunden haben. Checken Sie keine halbherzigen Arbeiten ein.
- Wenn wir das Refactoring für später verlassen, ist es schwierig zu planen und wird möglicherweise nie fertig.
- Sie befinden sich jetzt im besten mentalen "Kontext", um diese Arbeit zu erledigen, da Sie bereits hüfthoch im Code sind. Es ist besser, es jetzt aus dem Weg zu räumen und effizienter zu sein, als diesen Kontext zu verlieren, wenn Sie später wiederkommen.
Wir ziehen eine Linie für das aktuelle Arbeitselement und sagen, dass die zusätzliche Arbeit in ein separates Ticket fließt. Argumente umfassen:
- Ein separates Ticket ermöglicht eine neue Schätzung, sodass wir uns nicht selbst belügen, wie viele Punkte die Dinge wirklich sind, oder zugeben müssen, dass alle unsere Schätzungen schrecklich sind.
- Das Sprint "Padding" ist für unerwartete technische Herausforderungen gedacht, die direkte Hindernisse für die Erfüllung der Ticketanforderungen darstellen. Es ist nicht für Beilagen gedacht, die nur "nett zu haben" sind.
- Wenn Sie das Refactoring planen möchten, platzieren Sie es einfach oben im Backlog.
- Es gibt keine Möglichkeit für uns, dieses Zeug in einer Schätzung richtig zu berücksichtigen, da es etwas willkürlich erscheint, wenn es auftaucht. Ein Code-Prüfer könnte sagen: "Diese UI-Steuerelemente (die Sie in diesem Arbeitselement nicht geändert haben) sind etwas verwirrend. Können Sie das auch beheben?" Das ist wie eine Stunde, aber sie könnten sagen: "Nun, wenn dieses Steuerelement jetzt von derselben Basisklasse wie die anderen erbt, warum verschieben Sie nicht all diesen (Hunderte von Zeilen) Code in die Basis und verdrahten all dieses Zeug neu." , die kaskadierenden Änderungen usw.? " Und das dauert eine Woche.
- Es "kontaminiert den Tatort", indem es dem Ticket nicht verwandte Arbeiten hinzufügt, wodurch unsere ursprünglichen Feature-Point-Schätzungen bedeutungslos werden.
- In einigen Fällen verschiebt die zusätzliche Arbeit das Einchecken und führt zu einer Blockierung zwischen den Entwicklern.
Einige von uns sagen jetzt, dass wir uns für einen Cut-Off entscheiden sollten. Wenn das zusätzliche Material weniger als 2 FP beträgt, geht es in dasselbe Ticket. Wenn es mehr ist, machen Sie es zu einem neuen Ticket.
Da wir erst ein paar Monate mit Agile beschäftigt sind, wie beurteilen all die erfahreneren Agile-Veteranen hier, wie sie damit umgehen sollen?
quelle
Story Points sind eine Schätzung der relativen Komplexität einer bestimmten User Story. Es hört sich so an, als würden Sie Story Points verwenden, um zu sagen, dass dies X Mann Tage / Stunden dauern wird. Streben Sie stattdessen zwei Ziele an
Mit der Zeit erhalten Sie eine Basis für die Geschwindigkeit. Jede 5-Punkte-Story benötigt nicht die gleiche Zeit wie die anderen, aber die durchschnittliche Geschwindigkeit pro Sprint (wie viele Story-Punkte das Team erreichen kann) ist konstant.
Sich Sorgen darüber zu machen, wie viel Zeit eine bestimmte Geschichte in Anspruch nehmen wird, ist kontraproduktiv. Die Schätzungen werden nur über das Volumen von Storys mit gleichbleibender Größe gemittelt (IE one 5-Zeiger können aufgrund von Refactoring etwas länger dauern, aber Sie nutzen den Vorteil dieser Bemühungen für ein verwandtes Storys).
quelle
Es sollte einen relativen Grenzwert dafür geben, wie viel sich im ursprünglichen Arbeitselement befindet und wie viel sich in etwas anderem befindet. User Stories sind Ausgangspunkte für Diskussionen und daher gibt es möglicherweise alle Arten von Scope-Elementen, die während eines Sprints während der Arbeit an einer Story festgenagelt werden müssen.
Es kann vorkommen, dass bei einer Sprint-Planung einer Story zusätzliche Kriterien hinzugefügt werden, um ein "Scope Creep" zu vermeiden, das auftreten kann, wenn ein Benutzer ein neues Formular wünscht und dann 101 zu diesem Formular wechselt, für das dies nicht realistisch ist Erledige manchmal einen 2-wöchigen Sprint.
Eine Kehrseite ist, wie viel Wert durch diese zusätzliche Arbeit gewonnen wird. Möglicherweise gibt es Unmengen möglicher Umgestaltungen, die durchgeführt werden könnten, aber wie viel Nutzen bringt es für all diese Arbeiten? Hier müssen einige Richtlinien vorhanden sein, damit das Team gut funktioniert, aber nicht verloren geht, wenn versucht wird, den Code perfekt zu machen.
quelle