In diesem Video erkläre ich, was Synthesize ist und wie es innerhalb des SAFe DevOps Health Radars funktioniert. Synthesize ist der vierte und letzte Schritt der Continuous Exploration, in dem wir die Ergebnisse von Hypothesize, Collaborate and Research und Architect zu einem priorisierten Backlog mit einer klaren Vision und Roadmap zusammenführen.
Eine klare Vision erstellen#
An diesem Punkt der Continuous Exploration haben wir eine Reihe von Epics mit Hypothesen, identifizierte Kundenbedürfnisse und eine minimale Architektur. Was uns fehlt, ist eine klare Vision dessen, was wir erreichen wollen. Synthesize schliesst diese Lücke.
Eine Vision muss sowohl Kunden- als auch Stakeholder-Bedürfnisse widerspiegeln und folgende Fragen beantworten:
- Was wird diese neue Lösung bewirken?
- Welches Problem wird sie lösen?
- Welche Features und Vorteile wird sie bieten?
- Für wen wird sie diese Features und Vorteile bieten?
- Welche nicht-funktionalen Anforderungen wird sie erfüllen?
Epics in Features aufteilen#
Aus dem Hypothesize-Schritt haben wir grosse Epics, die signifikante Initiativen darstellen und länger als drei Monate dauern. Diese Epics müssen wir nun in Features und Enabler Features aufteilen.
Ein Feature erfüllt ein Stakeholder-Bedürfnis. Ein Enabler Feature bereitet die architekturelle Runway vor, damit wir in Zukunft mehr Business-Features liefern können. Jedes Feature besteht aus:
- Einem Titel
- Einer Benefit-Hypothese
- Akzeptanzkriterien
- Nicht-funktionalen Anforderungen
Ein Feature sollte immer grösser als ein einzelner Sprint oder eine Iteration sein, aber kleiner als ein Quartal oder ein Program Increment (PI). Zum Beispiel könnte ein Feature mit dem Titel “In-Service Software Update” die Benefit-Hypothese “Geplante Ausfallzeit signifikant reduzieren” haben, mit Akzeptanzkriterien wie automatischem und manuellem Update, Rollback-Fähigkeit und dem Betrieb aller Services nach dem Update.
Behaviour-Driven Development (BDD)#
Eine besonders effektive Methode zur Definition von Akzeptanzkriterien ist Behaviour-Driven Development (BDD). Anstatt Akzeptanzkriterien als einfache Sätze zu formulieren, verwendet BDD das Given-When-Then-Format:
- Given: Die Ausgangsbedingung
- When: Die durchgeführte Aktion
- Then: Das erwartete Ergebnis
Dieser Ansatz erzeugt ausführbare Spezifikationen. Traditionelle Spezifikationen in Jira, Word oder Confluence sind in dem Moment veraltet, in dem man sie speichert. Die einzige Wahrheit für eine Spezifikation liegt im Code. BDD ermöglicht es uns, Tests direkt aus den Akzeptanzkriterien zu schreiben und die Spezifikation immer synchron mit der Implementierung zu halten.
Priorisierung mit WSJF#
Sobald alle Features und Enabler Features definiert sind, kommen sie in ein Program Backlog. Die entscheidende Frage ist: Wie priorisieren wir sie?
SAFe verwendet Weighted Shortest Job First (WSJF), eine Technik, die den wirtschaftlichen Nutzen maximiert. Die Formel lautet:
WSJF = Cost of Delay / Job Size
Cost of Delay ist die Summe von drei Faktoren:
- User-Business Value: Wie viel Wert liefert dieses Feature?
- Time Criticality: Wie dringend ist dieses Feature?
- Risk Reduction / Opportunity Enablement: Reduziert dieses Feature Risiken oder ermöglicht es neue Chancen?
Für jeden Faktor vergleichen wir alle Features und vergeben Fibonacci-Zahlen (1, 2, 3, 5, 8, 13) relativ zum Feature mit dem niedrigsten Wert. Das Feature mit dem höchsten WSJF erhält die höchste Priorität. So wird sichergestellt, dass wir immer an den Elementen arbeiten, die den grössten wirtschaftlichen Wert in der kürzesten Zeit liefern.
Die Roadmap erstellen#
Mit einer klaren Vision und einem priorisierten Backlog können wir nun eine Roadmap erstellen, die den Weg zur Erreichung unserer Vision definiert. Roadmaps existieren auf mehreren Ebenen:
- Täglich: Sehr detailliert, was wir heute bearbeiten
- Sprint/Iteration: Rund zwei Wochen geplante Arbeit
- Quartal/PI: Eine Drei-Monats-Sicht mit Features und Enablern
- Jährlich: Ein breiterer strategischer Ausblick
- Drei-Jahres-Sicht: Ein übergeordneter Richtungsplan
Die Roadmap ist für heute und den aktuellen Sprint sehr detailliert und wird progressiv weniger detailliert, je weiter wir in die Zukunft blicken.
Der Output von Synthesize#
Der Synthesize-Schritt produziert drei zentrale Ergebnisse:
- Eine klare Vision dessen, was wir erreichen wollen und welche Kunden- und Stakeholder-Bedürfnisse wir erfüllen möchten
- Ein priorisiertes Program Backlog mit Features und Enabler Features
- Eine Roadmap, die zeigt, wie wir die Vision umsetzen wollen
Mit diesen Ergebnissen sind wir bereit für den nächsten Quadranten des SAFe DevOps Health Radars: Continuous Integration. Jetzt beginnen wir mit der Entwicklung der Features, die wir identifiziert und priorisiert haben.
Die Reifegrade#
- Sit: Das Program Backlog existiert nicht oder wird nicht geteilt.
- Crawl: Das Program Backlog existiert, aber die Features sind unvollständig und die Priorisierung erfolgt nachträglich.
- Walk: Das Program Backlog enthält vollständig definierte Features, die jedoch nicht mit WSJF priorisiert sind.
- Run: Features im Program Backlog sind vollständig, mit WSJF priorisiert und auf die Lieferkapazität eines Agile Release Trains (ART) kalibriert.
- Fly: Das Program Backlog ist eine Sammlung von Minimal Marketable Features (MMFs), die mit Behaviour-Driven Development erstellt und mit WSJF priorisiert sind.
Kernaussagen#
- Vision zuerst. Bevor Sie etwas bauen, erstellen Sie eine klare Vision, die Kunden- und Stakeholder-Bedürfnisse widerspiegelt und definiert, welches Problem Sie für wen lösen und welche Vorteile Sie liefern.
- Epics in passende Features aufteilen. Features sollten grösser als ein Sprint, aber kleiner als ein Quartal sein. Jedes Feature braucht eine Benefit-Hypothese, Akzeptanzkriterien und nicht-funktionale Anforderungen.
- BDD für ausführbare Spezifikationen nutzen. Given-When-Then-Akzeptanzkriterien halten Ihre Spezifikation im Code lebendig, anstatt in Dokumenten zu veralten.
- Wirtschaftlich priorisieren mit WSJF. Weighted Shortest Job First stellt sicher, dass Ihr Team an den Elementen arbeitet, die den höchsten wirtschaftlichen Wert relativ zu ihrer Grösse liefern.
- Roadmaps auf mehreren Ebenen. Von Tagesplänen bis zu Drei-Jahres-Ausblicken bieten Roadmaps auf jedem Horizont Klarheit und werden dabei progressiv weniger detailliert.
- Synthesize verbindet Exploration mit Delivery. Es transformiert die Inputs aus Hypothesize, Collaborate and Research und Architect in umsetzbare, priorisierte Features, die bereit für Continuous Integration sind.
