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?