Wie gehe ich mit einer User Story um, die ich vervollständige, aber mit Kompromissen und erneutem Besuch?

8

Ich habe gerade zwei User Stories aus einem neuen Projekt-Backlog, den ich gerade erstellt habe, erfüllt (ist das ein guter Begriff?). Dies sind die Benutzerregistrierung und das Zurücksetzen des Passworts, für die beide E-Mails erforderlich sind. Ich muss eine Ersatz-Mail-Komponente implementieren, da meine anfängliche und normalerweise zuverlässige Auswahl nicht funktioniert hat. Da ich mich darauf konzentriert habe, die User Stories zu liefern und nicht die Mail-Komponente zu debuggen, habe ich sie ausgetauscht, um am Ende des Sprints Arbeitscode zu liefern. Protokolliere ich jetzt ein neues Support-Problem für den Mailer oder füge ich diese Storys erneut in das Backlog ein? Wenn ich Letzteres mache, füge ich nicht zu viele technische Details in User Stories ein?

ProfK
quelle

Antworten:

5

Wenn Sie die User Story gemäß den in der Definition von done definierten Standards implementiert haben, sind diese User Storys fertig und sollten nicht wieder in das Product Backlog aufgenommen werden.

In ähnlichen Situationen habe ich eine neue User Story erstellt, aber die Anforderung beschrieben, eine technische Änderung in Bezug auf den Geschäftsnutzen vorzunehmen, anstatt etwas rein Technisches im Produktbestand zu haben. Wie wäre es mit:

"Als Entwickler möchte ich, dass das Produkt die Standard-E-Mail-Komponente des Unternehmens verwendet, damit Support und Wartung vereinfacht werden."

Als Entwickler sind Sie auch ein Akteur und haben möglicherweise Anforderungen, dass sich das System bei Verwendung (Unterstützung / Änderung) auf eine bestimmte Weise verhält. Es sollte immer möglich sein, diese in Bezug auf ihren Geschäftsnutzen zu artikulieren und sie zusammen mit der Implementierung neuer Funktionen mit Ihrem Produktbesitzer zu priorisieren.

Nick
quelle
3

Wenn die Definition von erledigt für die User Story vollständig ausgefüllt ist (vollständig ausgefüllt, was jeder, den Sie als erledigt bezeichnen möchten), ist Ihr Benutzerspeicher vollständig und Sie sollten ihn nicht wieder in das Backlog aufnehmen.

Sie haben jedoch technische Schulden übernommen, um dies zu vervollständigen, und später müssen Sie andere Zeit darauf verwenden, dies zu beheben. Für mich klingt es so, als ob Sie eine Art Aufgabe für interne Arbeiten wie Refaktoren benötigen.

Fügen Sie dem Backlog ein neues Problem hinzu.

Klee
quelle
Es ist nicht wirklich eine technische Schuld. Meine "Problemumgehung" ist eine Qualitätslösung, aber die ursprünglich geplante Implementierung wird eine Verbesserung der Problemumgehung darstellen. Vielleicht kann ich eine neue Story erstellen, um die E-Mail-Funktion zu verbessern.
ProfK
@ProfK Inwiefern ist die Änderung eine Verbesserung? Wessen Leben wird besser und wie?
MarkJ
@MarkJ Der Nutzen ist groß. Damit können E-Mail-Texte von jedem mit dieser Technologie vertrauten Webdesigner oder Programmierer als MVC-Ansichten geschrieben werden.
ProfK
@ProfK Dies ist eine strategische technische Verschuldung. Denken Sie daran, dass nicht alle technischen Schulden negativ oder schlecht sind. In diesem Fall haben Sie das System so geändert, dass Sie heute versenden können, da Sie wissen, dass Sie später eine Änderung vornehmen müssen. Dies ist ein hervorragendes Beispiel für die Übernahme strategischer technischer Schulden - in Maßen eine gute Sache.
Michael
2

Technische Schulden sind nur eine andere Geschichte

Wenn eine Story fertig ist, bedeutet dies, dass sie die Qualitätssicherung bestanden hat und vom Product Owner akzeptiert wurde.

Alle Arbeiten, die möglicherweise durchgeführt werden müssen, um die Implementierung zu "bereinigen" oder "zu verbessern", gelten als technische Schulden und sollten einfach eine neue Geschichte sein.

Auf diese Weise wird es wie alles andere vom Product Owner verfolgt und priorisiert.


quelle
1

Die einfachste Sache, die vernünftigerweise funktionieren wird

In einem verwandten Kommentar sagt das OP:

Meine "Problemumgehung" ist eine Qualitätslösung, aber die ursprünglich geplante Implementierung wird eine Verbesserung der Problemumgehung darstellen. Vielleicht kann ich eine neue Story erstellen, um die E-Mail-Funktion zu verbessern.

Wenn dies der Fall ist, ist die ursprüngliche Frage umstritten. Das YAGNI-Prinzip erfordert, dass eine Lösung nicht im Hinblick auf zukünftige Anforderungen überarbeitet wird.

Wenn eine Lösung , die die aktuellen Sprint Ziele, Funktionen wie vorgesehen erfüllt und trifft das Team „Definition von getan“ , dann es ist getan. Es ist nicht halb fertig, irgendwie erledigt oder "bis zu einem geplanten Refactoring erledigt".

Markieren Sie es als erledigt und fahren Sie fort.

Kleinere Einschränkung

Wenn Sie wirklich glauben, dass es dort eine andere Geschichte gibt oder eine technische Verschuldung, die die ursprüngliche Geschichte nicht verhindert, sollten Sie eine andere Geschichte für das Product Backlog erstellen .

Neue Arbeiten müssen immer im Product Backlog platziert werden, um die Sichtbarkeit zu erhöhen - keine unsichtbare Arbeit, niemals! Letztendlich ist es Aufgabe des Product Owners, zu entscheiden, ob die vorgeschlagene Verbesserung mit den Produktzielen übereinstimmt, und Ihre neue User Story im Product Backlog zu priorisieren, wenn er die Story hinzufügen möchte.

CodeGnome
quelle
0

Aufgrund Ihrer Frage und zusätzlicher Kommentare zu @ Klees Antwort denke ich, dass das Problem etwas anders ist.

Du hast eine Geschichte fertiggestellt. Es sollte bedeuten, dass Sie alle Definitionen von erledigt bestanden haben - andernfalls kann die User Story nicht als abgeschlossen betrachtet werden. Wenn Sie jedoch die Geschichte abgeschlossen und alle Definitionen von erledigt bestanden haben, sollte dies bedeuten, dass Ihre aktuelle Lösung zufriedenstellend ist. Andernfalls muss der Kunde / Produktbesitzer den Grund angeben, warum er nicht zufriedenstellend ist (nicht Sie), und entweder Ihre Fertigstellung ablehnen oder eine andere User Story definieren, die diese mit einer neuen Definition von done erweitert, die von Ihrer aktuellen Lösung nicht zufrieden gestellt wird.

Technische Schulden werden nur aufgenommen, wenn Ihre aktuelle Lösung bestimmte Anforderungen oder Einschränkungen nicht erfüllt. Gibt es eine Einschränkung, gegen die Sie durch die Verwendung einer Problemumgehung verstoßen haben? Wenn ja, sollten Sie Ihre User Story nicht als vollständig markieren.

Gibt es eine Codeduplizierung oder eine andere schlechte Vorgehensweise, die durch Ihre Problemumgehung eingeführt wurde? Dann haben Sie technische Schulden erstellt und sollten diese so schnell wie möglich lösen. Sie können entweder fair gegenüber dem Produktbesitzer sein und ihm einfach sagen, dass Sie beim nächsten Sprint dieselbe Zeit damit verbringen müssen, Ihre technischen Probleme zu beheben, was zu weniger geplanten User Stories führt. Oder wenn Ihre Beziehung zum Product Owner nicht sehr gut ist, planen Sie einfach weniger User Stories aufgrund "neu" entdeckter Komplexitäten in einem von ihnen und beheben Sie Ihre technischen Schulden.

Wenn es keine Codeduplizierung oder einen wirklichen Grund gibt, warum Ihr Code verbessert werden sollte, berühren Sie ihn einfach nicht. Mit dem wahren Grund meine ich, dass keine vom Kunden / Produktbesitzer definierte Einschränkung vorliegt (z. B. Unternehmensrichtlinien, Leistung, vordefinierte Zeit für die Erstellung einer neuen E-Mail-Vorlage, die mit Ihrer aktuellen Lösung nicht erreicht werden kann usw.). Ihr Code enthält keine technischen Schulden. Was Sie versuchen, wird als Golden Plating bezeichnet - Bereitstellung von Funktionen, die nicht erforderlich waren = Verschwendung von Kundenressourcen.

Wenn Ihre Lösung keine zukünftige User Story zufriedenstellt, verschieben Sie einfach Ihr Refactoring und die Codeverbesserung in diese User Story. Es muss jetzt nicht gelöst werden, da es die aktuelle Definition von erledigt erfüllt hat. Behandeln Sie Verbesserungen, wenn sie durchgeführt werden müssen, um die Definition von erledigt für neu implementierte Storys zu bestehen und schlechte Praktiken zu vermeiden.

Ladislav Mrnka
quelle