Bei der klassischen Projektplanung ist es wichtig (und richtig), dass man erst alle Anforderungen aufnimmt und versteht, bevor man mit der eigentlichen Umsetzung beginnt. Was aber, wenn man die Anforderungen nicht spezifizieren kann?
Jüngst haben ein Product Owner und ich zusammengesessen, um die Anforderungen für die nächsten Sprints durchzugehen. Bei einem bestimmten Bereich von Anforderungen gab mir der PO zu verstehen, dass das Team dort eine Spezikation braucht und erwartet. Aber irgendwie ging es nicht voran. Deswegen haben wir uns das genauer angesehen.
Schnell war klar, dass der PO hier keine Spezifikation liefern kann. Es gab zu viele Variablen, Bedingungen und Regeln. Und die Seiteneffekte waren nicht abzusehen. Mit ein wenig Übung hätten wir sicherlich eine Grammatik erstellen können, um die Regeln zu formalisieren. Aber das war gar nicht der Punkt: Bei bestimmten Konstellationen waren wir uns einfach nicht sicher, was denn das gewünschte Verhalten überhaupt ist.
Das ist ein klarer Fall, bei dem Scrum wieder seine Stärken ausspielt. Statt zu spezifizieren, um zu bauen, baten wir das Team zu bauen, um zu spezifizieren. Jeder neue Produktstand sollte dazu genutzt werden, dass wirkliche Verhalten zu beschreiben. Nur durch das Benutzen eines echten Produkts konnten Team und Product Owner lernen, was wirklich wichtig ist.
Das bedeutet nun aber nicht, dass das Team sich aussuchen kann, woran es arbeitet und welche Ergebnisse raus kommen sollen. Nein. Statt eine Spezifikation zu schreiben, hatte der PO die Aufgaben, möglichst intelligent User Storys zu suchen, durch die man am meisten lernen kann.
Die Frage war nicht: "Welche Funktionen muss das Produkt beherrschen?" Die Frage war: "Mit welchen (möglichst wenigen) User Storys kommen wir am besten an die Grenzen unseres Wissens, um dort die Auswirkungen zu verstehen."
Für die User Storys wurden ein paar Basisfunktionen ausgewählt. Dann brauchten wir ein paar Storys, die typische Kombinationen zeigten. Dann folgen die komplizierten Kombinationen.
Dieses Vorgehen ist auf jeden Fall schneller als das Suchen nach der perfekten Anforderungsbeschreibung. Das hat auch Auswirkungen auf die Arbeit des Teams: Nun geht es ja um Lernen und nicht um die perfekte Software. Die Arbeit soll schon ordentlich gemacht werden. Aber es ist völlig OK, wenn das Verhalten der Software noch Fehler hat. Nur so können wir die Lücken in der Spezifikation erkennen und uns überlegen, was ein gutes Ergebnis ist.
Solche Situationen sind mit einer agilen Arbeitsweise einfacher zu meistern. Wir bereiten uns vernünftig vor. Dann arbeiten wir an einem repräsentativen Teil, holen uns Feedback und passen die weitere Planung auf Grund des Feedbacks an.
Jüngst haben ein Product Owner und ich zusammengesessen, um die Anforderungen für die nächsten Sprints durchzugehen. Bei einem bestimmten Bereich von Anforderungen gab mir der PO zu verstehen, dass das Team dort eine Spezikation braucht und erwartet. Aber irgendwie ging es nicht voran. Deswegen haben wir uns das genauer angesehen.
Schnell war klar, dass der PO hier keine Spezifikation liefern kann. Es gab zu viele Variablen, Bedingungen und Regeln. Und die Seiteneffekte waren nicht abzusehen. Mit ein wenig Übung hätten wir sicherlich eine Grammatik erstellen können, um die Regeln zu formalisieren. Aber das war gar nicht der Punkt: Bei bestimmten Konstellationen waren wir uns einfach nicht sicher, was denn das gewünschte Verhalten überhaupt ist.
Das ist ein klarer Fall, bei dem Scrum wieder seine Stärken ausspielt. Statt zu spezifizieren, um zu bauen, baten wir das Team zu bauen, um zu spezifizieren. Jeder neue Produktstand sollte dazu genutzt werden, dass wirkliche Verhalten zu beschreiben. Nur durch das Benutzen eines echten Produkts konnten Team und Product Owner lernen, was wirklich wichtig ist.
Das bedeutet nun aber nicht, dass das Team sich aussuchen kann, woran es arbeitet und welche Ergebnisse raus kommen sollen. Nein. Statt eine Spezifikation zu schreiben, hatte der PO die Aufgaben, möglichst intelligent User Storys zu suchen, durch die man am meisten lernen kann.
Die Frage war nicht: "Welche Funktionen muss das Produkt beherrschen?" Die Frage war: "Mit welchen (möglichst wenigen) User Storys kommen wir am besten an die Grenzen unseres Wissens, um dort die Auswirkungen zu verstehen."
Für die User Storys wurden ein paar Basisfunktionen ausgewählt. Dann brauchten wir ein paar Storys, die typische Kombinationen zeigten. Dann folgen die komplizierten Kombinationen.
Dieses Vorgehen ist auf jeden Fall schneller als das Suchen nach der perfekten Anforderungsbeschreibung. Das hat auch Auswirkungen auf die Arbeit des Teams: Nun geht es ja um Lernen und nicht um die perfekte Software. Die Arbeit soll schon ordentlich gemacht werden. Aber es ist völlig OK, wenn das Verhalten der Software noch Fehler hat. Nur so können wir die Lücken in der Spezifikation erkennen und uns überlegen, was ein gutes Ergebnis ist.
Solche Situationen sind mit einer agilen Arbeitsweise einfacher zu meistern. Wir bereiten uns vernünftig vor. Dann arbeiten wir an einem repräsentativen Teil, holen uns Feedback und passen die weitere Planung auf Grund des Feedbacks an.
Warum gleich entwickeln? Die Erstellung von Wireframes wäre mit Sicherheit deutlich kostengünstiger gewesen?! Sofort mit der Entwicklung zu beginnen produziert meiner Erfahrung nach mehr Kosten, als die Entwicklung eines visuellen Prototypen mit Tools wie z.B. Pidoco.
AntwortenLöschen