Viele User Stories haben dieselben technischen Aufgaben: Was ist zu tun?


8

Eine kleine Einführung in meinen Fall:

Als Teil eines größeren Produkts wird mein Team gebeten, eine kleine IDE für ein DSL zu realisieren. Der Benutzer dieses Produkts kann Funktionsaufrufe im Code ausführen, und wir werden außerdem gebeten, einige nützliche Funktionsbibliotheken bereitzustellen. Das Team hat zusammen mit der Bestellung eine bestimmte Anzahl von User Stories zu den verschiedenen Bibliotheken für den IDE-Benutzer an die Wand gehängt. Bei der Schätzung der ersten dieser Storys entschied das Team, dass der Funktionsaufrufmechanismus eine ansprechende, aber nicht ganz offensichtliche Aufgabe gewesen wäre, sodass die Schätzung für diese User Story von einer einfachen 3 auf eine gefährlichere 5 angehoben wurde.

Kommen wir zum Problem:

Das Team wechselte dann zu den User Stories bezüglich der anderen Bibliotheken, tatsächlich 10 Storys, und fügte jeder dieser User Storys diese 2 Punkte des " Funktionsaufrufmechanismus " hinzu. Dies erhöhte sofort die Gesamtpunktzahl für das Produkt von 20 Punkten! Jeder im Team weiß, dass jede User Story jederzeit von der PO für die nächste Iteration abgeholt werden kann. Wir sollten diesen Teil also nicht in einer User Story isolieren, aber diese 20 Punkte fühlen sich so schrecklich unrealistisch an!

Ich habe eine Lösung vorgeschlagen, bin aber absolut nicht zufrieden:

Wir haben eine "Design Story" erstellt und diese nervigen 2 Punkte darüber gelegt. Als wir es jedoch realisierten und unseren Kunden demonstrierten, konnten wir ihnen nichts wirklich Wertvolles über diese Geschichte zeigen!

Hier besteht das Problem darin, ob wir das Prinzip der isolierten User Stories (ohne Abhängigkeit zwischen ihnen) ignorieren sollten.

Was würden Sie in solchen Situationen tun oder noch besser, was haben Sie getan?


(eine kleine Fußnote: Auf Vorschlag habe ich diese Frage aus dem Stackoverflow verschoben)


Mit IDE meinen Sie API? Ansonsten habe ich Probleme herauszufinden, was Sie sagen.
Steven Evers

Es ist eine IDE ( en.wikipedia.org/wiki/Integrated_development_environment ), in der der Benutzer Code eingeben, kompilieren und debuggen kann. Ein wichtiges Merkmal der Sprache ist die Fähigkeit, von uns bereitgestellte Funktionen aufzurufen (wie "v = sin (x)").
Marco Ciambrone

Antworten:


6

Wenn Sie mehrere User-Storys schätzen müssen, die einige Elemente gemeinsam haben, aber noch nicht wissen, in welcher Reihenfolge diese Storys implementiert werden sollen, würde ich die Aufgaben, aus denen jede Story besteht, in drei Gruppen aufteilen:

  1. Allgemeine Aufgaben, die einmal benötigt werden : Aufgaben, die für mehrere Storys auftreten, aber für die erste Story nur einmal ausgeführt werden müssen. Der erwähnte Funktionsaufrufmechanismus würde wahrscheinlich in diese Kategorie fallen.
  2. Häufige, wiederholte Aufgaben : Aufgaben, die in mehreren Storys auftreten und für jede Story neu ausgeführt werden müssen.
  3. Spezifische Aufgaben : Aufgaben, die für eine bestimmte Geschichte spezifisch sind.

Dann schätzen Sie jede Aufgabe, wobei die allgemeinen Aufgaben nur einmal geschätzt werden sollten.

In der Präsentation vor dem Kunden / der Bestellung würde ich zwei Schätzungen für jede Geschichte geben: Eine mit allen "gemeinsamen, einmal benötigten" Aufgaben und eine mit ihnen ausgeschlossen.
Halten Sie einfach eine detaillierte Abrechnung der Aufgaben, ihrer Klassifizierung und Schätzung bereit, wenn der Kunde detailliertere Informationen über die Differenz zwischen den Schätzungen wünscht. Die Aufgaben selbst sind nicht verhandelbar, aber das Wissen über sie kann dem Kunden / der Bestellung helfen, insbesondere wenn die allgemeinen Aufgaben nicht für jede Geschichte gleich sind.


1
+1: Im Nachhinein werden Sie alle Storys neu schätzen, da der gemeinsame Code bereits implementiert wurde.
S.Lott

Ich denke, ich habe Ihren Standpunkt verstanden, aber in diesem Fall haben wir beschlossen, eine tiefere Analyse zu vermeiden und eine schnellere Schätzung der Geschichten zu bevorzugen, ohne alle Aufgaben zu extrahieren. Wir haben tatsächlich etwas Ähnliches wie Ihr Vorschlag getan, indem wir aus den Geschichten eine "gemeinsame Geschichte" extrahiert haben, wie eine Gruppe von "gemeinsamen Aufgaben, die einmal benötigt werden". Ihre Antwort geht effektiv noch weiter und wird sehr nützlich sein. Ich bevorzuge jedoch nach Möglichkeit eine grobe Schätzung anstelle einer Aufgabenzerlegung, die ich der Iterationsplanung überlassen würde. - @ S.Lott: Dieser Ansatz würde diese "nervigen" 20 Punkte hinterlassen.
Marco Ciambrone

@ d3prok: Die "nervigen" 20 Punkte sind ein vorübergehendes Artefakt des von Ihnen gewählten Ansatzes. Sie existieren nicht wirklich und verschwinden, sobald die gemeinsame Aufgabe umgesetzt ist.
S.Lott

4

Warum Software schwierig ist.

Wir haben eine "Design Story" erstellt und diese nervigen 2 Punkte darüber gelegt. Als wir es jedoch realisierten und unseren Kunden demonstrierten, konnten wir ihnen nichts wirklich Wertvolles über diese Geschichte zeigen!

Richtig. Die vereinfachte User Story SCRUM ist simpel. Manchmal ist die reale Software so komplex, dass der vereinfachte Ansatz nicht funktioniert. Dies sollte keine Überraschung sein.

Hier besteht das Problem darin, ob wir das Prinzip der isolierten User Stories (ohne Abhängigkeit zwischen ihnen) ignorieren sollten.

Was ist deine Alternative? Jede User Story überteuern, weil jede einmalige Kosten versteckt hat? Das ist genauso dumm.

Ja. Sie müssen sich von der Einfachheit entfernen.

Was würden Sie in solchen Situationen tun oder noch besser, was haben Sie getan?

Schritt weg von simpel. Es gibt einmalige Investitionen, die eine Gruppe von Geschichten billiger machen. Sie müssen tatsächlich mit Leuten über die Architektur sprechen, anstatt so zu tun, als ob Ihre einzige Interaktion eine Liste von Geschichten ist, die erstellt werden sollen.

Agil bedeutet, dass Sie tatsächlich mit der Bestellung und den Kunden sprechen müssen.

Agil bedeutet, dass ein vereinfachter Prozess nicht funktionieren kann und wird.


Wir hätten unseren PO + -Kunden also zeigen sollen, dass auf dem Weg zur Fertigstellung jeder dieser 20 User Stories (echtes Preis-Leistungs-Verhältnis für sie) ein technischer Schritt zu überwinden war. Dies hätte ihnen geholfen, die Bedeutung einer solchen "Designgeschichte" zu erkennen und sie folglich in eine bessere Position zu bringen, um diese Arbeit zu priorisieren. Habe ich gut verstanden
Marco Ciambrone

@ d3prok: "Sie die Wichtigkeit einer solchen" Designgeschichte "erkennen lassen und sie folglich in eine bessere Position bringen, um diese Arbeit zu priorisieren" Ja. Bei agilen Methoden wie Scrum müssen Sie mit der Bestellung und dem Kunden sprechen. Gespräche. Diskussionen. Interaktionen. Ein undenkbarer formaler Prozess des 'Story-Estimate-Priorize-Build' ist genau das, was Sie vermeiden sollten.
S.Lott

Dies war eine sehr nützliche Antwort, ich möchte Ihnen einen Punkt geben, aber leider ist mein Ruf hier bei Programmierern zu niedrig ... Danke S.Lott!
Marco Ciambrone

1

Sie wissen, dass Sie die zusätzliche Arbeit nur einmal erledigen müssen, sodass es keinen Sinn macht, dieselbe zusätzliche Arbeit in 5 Geschichten zu unterteilen. Wenn Sie keine Designgeschichte möchten, die der Benutzer nicht sehen kann, ist es am besten, sofort fortzufahren und eines der Dinge auszuwählen, die von dieser Designarbeit abhängen, und zu sagen, dass es zuerst sein muss und fügen Sie diese Punkte zu diesem hinzu. Machen Sie sich Notizen zu den anderen Geschichten, die später erscheinen müssen, und wenn Sie aus irgendeinem Grund Ihre Meinung ändern, können Sie die Punkte jederzeit verschieben.


1
Ich würde davor warnen, die gemeinsam genutzte Aufgabe zu einer Funktion hinzuzufügen, die Sie (zufällig oder nicht) als "erste" Aufgabe auswählen. Dies kann dazu führen, dass die Bestellung / Kunden entscheiden, diese (teurere) Funktion zugunsten der (jetzt viel billigeren) anderen Funktionen zu löschen / zu reduzieren. Dies wäre jetzt nicht etwas, dem du gerecht werden könntest. Stattdessen empfehle ich, den Antworten von @Bart van Ingen Schenau und S.Lott oben zu folgen.
Svend Hansen
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.