Guide

Wie man gute User Stories schreibt

Geschrieben von Christoph Hochstrasser

Zusammenfassung

User Stories, Acceptance Criteria, Tasks

Ich bin gerade dabei einem Unternehmen Scrum näher zu bringen. In Scrum gibt es das Konzept einer User Story.

Was ist die Aufgabe einer User Story? In einem Satz festzuhalten, wer die Anwenderin eines Produktes ist, was sie will und warum sie es will.

Eigentlich eine recht praktische Art und Weise einzufangen, warum man ein Feature überhaupt braucht und um sicherzustellen, dass man nichts in ein Produkt einbaut, was in Wirklichkeit nie irgendjemand braucht.

Meistens hat man ein bestimmtes Format dafür:

„Als _____ möchte ich _____, damit ich _____.”

Hier ein kleines Beispiel:

„Als ein Familienvater möchte ich Veranstaltungstipps in meiner Nähe sehen können, damit ich herausfinden kann welche Aktivitäten ich in meiner Nähe mit meiner Familie machen kann.”

Ich bin also beim Kickoff dieses Projektes und es gibt bereits ein Backlog.

Die meisten Stories sehen so aus — seufz:

„Als PO [Product Owner] will ich auf der Website einen Header.”

Oder genauso schlimm:

„Als UX Designer möchte ich …”

Ein Produkt entwickelt man nicht für den Product Owner oder den UX Manager. Man entwickelt es für Anwenderinnen.

Eine Story muss festhalten, wie wir die Situation einer Anwenderin, und ihre Aufgabe, die sie erfüllen möchte, zu einem bestimmten Zeitpunkt gesehen haben.

Die Story hält fest, wie wir daraus dann Entscheidungen bei der Entwicklung unseres Produktes, nach diesem Verständnis der Situation und der Aufgabe der Anwenderin getroffen haben.

Damit wir dann später eine Ressource haben, mithilfe derer wir diese Entscheidungen dann auch nach Jahren noch nachvollziehen können. Auch nachdem Mitglieder des Teams das Unternehmen verlassen haben.

Wie ich Stories schreibe

Die Story

Ein einziger Satz, der beschreibt warum wir ein Feature brauchen und was die Motivation dahinter ist.

Meiner Meinung nach verhält es sich so, dass die Story automatisch zu groß ist (und aufgeteilt werden sollte), wenn sie nicht mehr in einem einzigen Satz beschrieben werden kann.

Acceptance Criteria

Lang hab ich sie vermieden und gehasst. Jetzt liebe ich sie: Acceptance Criteria.

Acceptance Criteria beantworten bei mir eine wesentliche Frage zur Story: Wie kann die Story jemanden demonstriert werden? Woher wissen wir, dass die Story umgesetzt ist?

Ganz wichtig: Es geht hier nicht darum, exakte Spezifikationen ins Scrum hineinzuschmuggeln (Job des Scrum Masters ist es, das zu verhindern).

Mein Trick für das Schreiben von guten AC: Die Situation beschreiben, die zu dem Zeitpunkt besteht, an dem die Story vollständig umgesetzt wurde.

Das lässt die Story gut demonstrieren und macht auch klar, welche Trade Offs gemacht und welche Annahmen getroffen wurden.

Beispiel:

  • Wenn der Benutzer angemeldet ist, ist immer ein Link sichtbar um sich abzumelden
  • Wenn der Benutzer ein falsches Passwort eingibt, wird eine Fehlermeldung angezeigt
  • Wenn der Benutzer angemeldet ist, kann man sich nicht registrieren

Ich mache AC auch gerne in Checklisten Form, damit man beim Acceptance Testing das dann einfach abhaken kann.

Tasks

Ein oder mehrere Tasks, die diese Story umsetzen. Tasks werden nur von Team-Mitgliedern geschrieben, nie von einem PO oder Stakeholder. Nur so bleibt das Team engagiert und hat Eigenverantwortung für die Umsetzung.

Tasks werden idealerweise nach dem Sprint Anfang vom Team gemeinsam festgelegt. Entweder in einem einzigen Planning Event oder auch über den Sprint verteilt in mehreren Events.

Ich sehe das für mich ganz gerne als Übung nach dem GTD Prinzip um die kleinstmöglichen Tasks zu finden und so zu wissen wo man anfangen muss.

Außerdem ist es eine Chance gemeinsam zu reden, eine gemeinsame Sichtweise für das Problem zu entwickeln und Erfahrungen im Team weiterzugeben.

Tasks sind für mich oft Checklisten, die an einer Story Karte (z.B. in Trello) dranhängen. Oft sind aber Tasks auch wirklich eigene Karten im Sprint Backlog (hat den Vorteil das man weiß, wer eine Karte bearbeitet).

Hast du einen Fehler entdeckt?