Wie man mit Geschichten umgeht, die Funktionalität teilen

27

Ich habe zwei Geschichten (ich weiß, dass sie den Nutzenteil vermissen)

  1. Als Kreditverwaltungsbenutzer kann ich die aktuellen und vorherigen Gehaltsunterschiede für Büros anzeigen.
  2. Als Kreditverwaltungsbenutzer kann ich eine E-Mail mit einer PDF-Datei mit den aktuellen und früheren Gehaltsunterschieden für Büros erhalten.

Die beiden sind insofern verwandt, als sie dieselben Abfrage- / Filterkriterien haben würden. Der einzige Unterschied besteht darin, dass in der Story "Anzeigen" die Ergebnisse dem Benutzer angezeigt werden und in der Story "E-Mail" die Ergebnisse in ein PDF geschrieben werden, das dem Benutzer per E-Mail gesendet wird.

Ich kämpfe mit der Trennung der gemeinsamen Aspekte dieser beiden Geschichten oder ob ich es überhaupt tun sollte.

Zum Beispiel haben beide die gleiche Abfrage, was sie mit den Ergebnissen machen, ist unterschiedlich.

Sollte ich die Abfrage in eine andere Geschichte aufteilen, die rein technisch ist?

Die Erstellung des PDFs und das Versenden der E-Mail sollte offline erfolgen. Sollte dies eine technische Geschichte werden?

Ich konnte sehen, wie diese beiden Geschichten in zwei funktionale und zwei technische Geschichten unterteilt wurden.

  1. Als System kann ich die Unterschiede in der aktuellen und vorherigen Abrechnung für Büros berechnen.

  2. Als Kreditverwaltungsbenutzer kann ich die Unterschiede in der aktuellen und vorherigen Abrechnung für Büros anzeigen.

  3. Als System kann ich ein PDF-Dokument der Unterschiede in der aktuellen und vorherigen Abrechnung für Büros erstellen.

  4. Als Kreditverwaltungsbenutzer kann ich eine E-Mail anfordern, die eine PDF-Datei mit den Unterschieden zwischen der aktuellen und der vorherigen Gehaltsabrechnung für Büros enthält.

Das Problem, auf das ich immer wieder zurückkomme, ist, dass die 4 Geschichten nicht unabhängig sind und nicht "den Kuchen schneiden".

Ich bin mir also nicht ganz sicher, wie ich mit diesen beiden umgehen soll.

Joe Young
quelle
4
Wenn Sie "Technical User Stories" verwenden möchten, müssen Sie feststellen, dass es hier nicht 4 Dinge gibt. Die von Ihnen berechneten Unterschiede zu Ihrem Modell und zwei Arten von Ansichten, eine PDF-Ansicht und eine GUI-Ansicht. Sie präsentieren den Bericht nur anders.
candied_orange
1
Packen Sie einen von ihnen an. Dann packe den anderen an. So einfach ist das.
Ant P
Warum sind sie zwei Geschichten?
JeffO

Antworten:

55

User Stories sind keine Systemspezifikationen oder funktionalen Anforderungen. Sie sind vielmehr der Beginn eines Gesprächs, das zu solchen Spezifikationen oder Anforderungen führen kann.

Dementsprechend würde ich erwarten, dass es bei der Systemimplementierung zu Überschneidungen kommt. User Stories sollen solche funktionalen Überschneidungen nicht beschreiben oder beseitigen. Der Zweck von User Stories besteht darin, funktionale Erwartungen aus Sicht eines Benutzers zu erfassen und nicht Implementierungsdetails zu beschreiben.

Robert Harvey
quelle
3
Begann eigentlich etwas sehr ähnliches zu schreiben, aber diese Antwort deckt schon alle Aspekte von mir ab, also +1.
Doc Brown
Halten Sie auch hier die Implementierung fern.
candied_orange
1
@JoeYoung: Implementierungsdetails gehen - in die Implementierung, wo sonst? Und wie Sie dies einem anderen Entwickler mitteilen, hängt von der Kommunikationsstruktur Ihres Teams ab. Natürlich kann es hier eine funktionale Anforderung geben, z. B. "Wenn Sie Gehaltsunterschiede online anzeigen oder als PDF abrufen, ist es in beiden Fällen wichtig, genau den gleichen Inhalt zu erhalten" . Wenn dies der Fall ist, fügen Sie dies mindestens einer (besser beiden) User Storys als Notiz hinzu. Beschreiben Sie jedoch nicht, wie diese Anforderung in die Story implementiert wird.
Doc Brown
3
Beim Design geht es nicht darum, einem Entwickler zu sagen, wie er Probleme lösen soll. Es sagt einem Entwickler, welche Probleme zu lösen sind.
candied_orange
1
Wie bewerten Sie die Zeitkosten dieser Geschichten? Nehmen wir an, der allgemeine Abfrageteil dauert 5 Stunden, der Webansichtsteil dauert 6 Stunden und der PDF-Ansichtsteil dauert 7 Stunden. Schätzen Sie die Zeit, sagen Sie willkürlich, eine kostet 11 Stunden (5 + 6) und die andere 7 (oder umgekehrt: 12 und 6), oder schätzen Sie sie auf 6 und 7, aber notieren Sie sich etwas anderes wie sind die 5 stunden overhead für beide zusammen? 11 und 12 (die 5 zu beiden hinzugefügt)? Wenn Sie sagen "Dieses Modell ist nicht für solche Fälle vorgesehen. Sprechen Sie es einfach aus." Es könnte immer noch auf einem Storyboard aufgezeichnet sein, aber wie?
Aaron
15

Tun Sie nicht: Versuchen Sie, die Geschichten zu teilen, machen Sie eine Geschichte und dann die andere.

Tun Sie: Stellen Sie sicher, dass das Entwicklerteam über die zweite Geschichte informiert ist.

Das Problem beim Versuch, die detaillierten Aufgaben zu planen und ein allgemeines Modell zu entwickeln, das beide auf elegante Weise bewältigen kann, ist, dass es schwierig ist.

Der Zweck von User Stories ist es, Dinge zu erledigen. Elegant ist ein sekundäres Ziel und sollte dem Refactoring überlassen werden.

Offensichtlich ist es sehr ärgerlich, wenn Sie dies voll ausschöpfen und niemandem von den zehn anderen ähnlichen Aufgaben erzählen, die erledigt werden müssen, aber es ist auch durchaus vorstellbar, dass die zweite oder dritte Aufgabe erst in Betracht gezogen wird, wenn die erste erledigt ist. Wenn Sie alles planen möchten, gehen Sie mit Wasserfall aus.

Ewan
quelle
4

In einem gewaltsamen Einvernehmen mit Robert Harvey besteht der Zweck einer User Story darin, zu verstehen, was der Benutzer tun muss, um zu können. Während der Pflege versteht und interessiert sich der Kunde für die User Story, während sich die Entwickler ein wenig mehr um sie kümmern. Wenn Sie genügend Fragen gestellt haben, um die Arbeit zu verstehen und einzuschätzen, können Sie Aufgaben erstellen, um sie zu unterstützen.

In diesem speziellen Fall könnten Sie Aufgaben erstellen, die den Kern der beiden User Stories bilden, die zusammen mit den Aufgaben ausgeführt werden, mit denen Sie sich zuerst befassen.

Die wichtigen Dinge, die zur User Story hinzugefügt werden müssen, sind:

  • Akzeptanzkriterium
  • Annahmen
Berin Loritsch
quelle
Es ist erwähnenswert, dass Sie nicht unbedingt mehr als die Geschichte dokumentieren müssen . Die Geschichte gibt Ihnen den geschäftlichen Kontext. Welches detailliertere Tracking Sie benötigen, liegt bei Ihnen (und hängt weitgehend von organisatorischen Einschränkungen ab). Sie sollten jedoch versuchen, dies zu minimieren (Menschen, die über den Prozess hinausgehen und all das).
Ant P
@AntP, einverstanden, aber dies geht in Richtung Definition of Done (DoD) und sollte auf die Rückseite Ihrer 3x5-Karte passen, die die User Story enthält.
Berin Loritsch
2

Genau genommen sind User Stories das Versprechen eines Gesprächs, um das gewünschte Ergebnis zu verstehen.

Nehmen Sie zum Beispiel Ihre zweite User Story

Als Kreditverwaltungsbenutzer kann ich eine E-Mail mit einer PDF-Datei mit den aktuellen und früheren Gehaltsunterschieden für Büros erhalten.

Denken Sie an Folgendes:

  • Was ist das "Bedürfnis" des Benutzers, das diese Anforderung antreibt? (Wurde die PDF-Datei in einer E-Mail als Lösung von ihnen bereitgestellt? Dies entspricht möglicherweise nicht den Anforderungen und Ihr Team könnte eine bessere Lösung finden.)
  • Was ist die Mindestmenge, die dieser Benutzer benötigt, um Ihre Lösung zu validieren? Kurze Rückkopplungsschleifen sind wertvoll.

Denken Sie beim Aufteilen der Story an Ihre INVEST-Kriterien, sofern dies möglich ist.

  1. Ich bin nicht abhängig
  2. N egotiable
  3. V aluable
  4. E anregbar
  5. S Mall
  6. T estable

Es ist in Ordnung , Geschichten zu haben, die eine natürliche Reihenfolge haben. Berücksichtigen Sie dies - normalerweise ist die erste Geschichte größer, da sie die erforderliche Funktionalität bietet, und die zweite Geschichte baut darauf auf.

Ich würde "technische" Geschichten in Frage stellen, da es sich in der Regel um Aufgaben handelt, die bei der Umsetzung der auf die Benutzerergebnisse bezogenen Geschichten hilfreich sind.

Ilessa
quelle
2

TL; DR

Angenommen, beide User Storys werden innerhalb derselben Iteration in den Geltungsbereich gezogen, ist es die Aufgabe des Teams, die Storys in einen Implementierungsplan und die zugehörigen Aufgaben zu zerlegen. User Stories bieten Kontext und Umfang; Sie sind keine Implementierungen, Spezifikationen oder Punschlistenelemente.

Geschichten sollten in Iterationsaufgaben zerlegt werden

Unabhängig davon, ob Sie Scrum oder eine andere agile Methode verwenden, ist es ein häufiger Fehler, die Planungsphase einer Iteration zu überspringen. Wenn in Scrum ein Product Backlog Item (es muss streng genommen keine User Story sein) in den aktuellen Sprint gezogen wird, soll das Team einen Teil der Sprint-Planung verwenden, um Gemeinsamkeiten zwischen Workitems herauszufiltern, Abhängigkeiten zu identifizieren und Entwickeln Sie anschließend ein Sprint-Backlog, um die Arbeit auf Aufgabenebene zu erfassen.

Wie Sie in Ihrem Beitrag betont haben, ist es nicht ungewöhnlich (und sogar wünschenswert), dass eine agile Iteration eng verwandte User Stories enthält. In Scrum wird dies durch die Verwendung des Sprint-Ziels angezeigt. Außerhalb des Scrum-Frameworks ist es oft noch sinnvoll, verwandte Storys einzubeziehen, da sie gemeinsame Ziele oder Abhängigkeiten haben. Durch das Extrahieren und anschließende Bearbeiten der gemeinsam genutzten Abhängigkeiten in einer einzelnen Iteration können Teams in Zukunft häufig die Notwendigkeit vermeiden, Code für ähnliche, aber nicht identische Features zu überarbeiten oder zu überarbeiten.

Aufgaben Implementieren Geschichten

Hier ist eine andere Möglichkeit, über die Abhängigkeitsplanung für User Storys nachzudenken. Im Allgemeinen:

  1. Ein Epos / Thema wird für die längerfristige Planung oder Gruppierung in einem Rückstand verwendet.
  2. Eine User Story wird zur Kommunikation von Zielen, Kontext und Umfang verwendet.
  3. Durch Just-in-Time-Planung wird eine Implementierung entwickelt, die in eine einzelne Iteration passt.
  4. Aufgaben implementieren den Just-in-Time-Plan, der die Definition von "Fertig" für eine oder mehrere User Stories erfüllt.

Das Behandeln von User Stories als Implementierungsplan oder Aufgabenliste wird von den meisten Praktikern als ein agiles Anti-Pattern angesehen. Wie auch immer Sie sich entscheiden, überspringen Sie nicht die Planungsphase Ihres agilen Frameworks, und stellen Sie sicher, dass Sie Abhängigkeiten und gemeinsame Implementierungsdetails irgendwo im Prozess Ihres Teams nachverfolgen.

CodeGnome
quelle