Ablauforganisation vor Aufbauorganisation
Der Grund für die Betonung der Aufbauorganisation ist, dass sie darauf fokussiert ist, Ressourcen effektiv auszulasten.
Die Ablauforganisation stellt einen schnellen Durchfluss von Informationen und Produkten in den Mittelpunkt. Sie „stolpert“ an Abteilungs- und Bereichsgrenzen und wird daadurch langsamer.
In dem Mass, in dem Schnelligkeit wichtiger wird als Stabilität, wird auch die Ablauforganisation wichtiger.
Für die große Mehrzahl heutiger Organisationen kann man zusammenfassen: Ablauf vor Aufbau; dies hat hat weitreichende Auswirkungen auf Entscheidungsstrukturen und Mahctverteilung.
Reinertsen's Heuristiken für Flow
Agil – und Lean – stellen einen ganzheitlichen, stetigen Fluss einer durchgängigen Entwicklung („from concept to cash“) in den Mittelpunkt. Als wichtigstes Element der Bewertung gilt der erzielte Wert. Im Unterschied dazu tendiert das traditionelle Projektmanagement dazu, den Prozess stärker in den Mittelpunkt zu stellen. Die Wertschöpfung entsteht dabei quasi nebenbei.
Im Zentrum eines effektiven Produktentwicklungsflusses stehen einige wenige zentrale Prinzipien [Reinertsen 2009]. Sie erleichtern eine Bewertung, wie spezifische Ziele erreicht werden können und wie diese an die Kultur und die Umgebung der Firma angepasst werden muss.
Don Reinertsen hat die wichtigsten Heuristiken als neun Regeln zusammengestellt. Viele dieser Heuristiken finden sich in Kanban und SAFe wieder.
#1: Nimm einen ökonomischen Standpunkt ein
Baue ein explizites Entscheidungsframework für den spezifischen Kontext auf. Das muss auf den verschiedenen Ebenen separat erledigt werden: auf Teamebene, auf Programmebene oder auf Unternehmensebene.
Dieses Entscheidungsframework muss auf einem Verständnis der gesamten Wertschöpfungskette beruhen und sich auf die Optimierung des zukünftigen Flusses konzentrieren. Es bildet die Grundlage dafür, dass Entscheidungen lokal getroffen werden können, denn es sichert ein konsistentes Zielsystem.
Reinertsen beschreibt fünf typische Elemente eines solchen Frameworks:
- Entwicklungskosten – Die Kosten, eine Entscheidung zu entwickeln oder eine Fähigkeit zu erwerben
- Zykluszeit – Die Zeit zur Umsetzung der Entscheidung
- Kosten – Die Kosten für Herstellung, Auslieferung und Betrieb
- Wert – Der Wert der Entscheidung für die Firma und für die Kunden
- Risiko – Die Erhöhung oder Reduzierung von Unsicherheit oder der technischen Tragfähigkeit der Lösung
Wenn eine Maximierung der Wertschöpfung erreicht werden soll, muss man spezifisch darauf achten, die wichtigsten Tätigkeiten zuerst zu erledigen. Insbesondere bedeutet das, Aktivitäten mit hohem Risiko und geringen Kosten vorrangig zu erledigen.
Einen besonderen Platz nehmen dabei Opportunitätskosten ein (cost of delay). Reinertsen empfiehlt, diesen Gesichtspunkt als ersten zu betrachten.
#2: Denke in Systemen
Einen besonderen Platz nimmt die Integration des Systemdenkens ein, wie es William Edwards Deming formuliert hat [Deming 2000]. Deming fordert immer wieder, eine Gesamtsicht auf ein System zu entwickeln und eine längerfristige Perspektive einzunehmen. Die wichtigsten Thesen aus dieser Sicht sind:
- Ein System muss eine Intention haben, um zielgerichtet zu funktionieren.
- Eine Optimierung eines Teils muss nicht das Gesamtsystem optimieren.
- Ein System kann sich nicht schneller als sein langsamster Integrationspunkt bewegen.
- Wende einen kontinuierlichen Verbesserungsprozess an.
Diese Sichten werden auf das entwickelte System angewendet, d.h. auf das Produkt und ebenfalls auf die Firma als System.
Eine weitere These Demings wird in SAFe ebenfalls an grundlegender Stelle eingebaut: Nur das Management kann ein System verändern [Deming 1993]. Daher wird das Management bei SAFe für die Entwicklung und für die Strukturierung von Leadership (Führung) und Firmenkultur explizit in die Pflicht genommen.
#3: Erwarte Variabilität – bewahre Optionen
In der Fertigung versucht man Variabilität so weit wie möglich zu reduzieren, um vorhersehbare Resultate, Effizienz und Qualität zu erreichen. Dies kann in der Softwareentwicklung nicht das Ziel sein, denn wir haben keine Serienproduktion, sondern „Einzelfertigung“ und starke innovative und kreative Elemente. Variabilität ist also unvermeidlich und zum Teil notwendig.
Stattdessen sollte man Systeme konstruieren, die mit Variabilität umgehen können, und sie, wenn möglich, nutzen. Das hilft dabei, Entscheidungen später zu treffen und Optionen offenzuhalten, bis mehr Informationen zur Entscheidungsfindung vorliegen.
In der agilen Entwicklung kennt man die verwandte Forderung „embrace change“ und die zentrale Aktivität der regelmäßigen Priorisierung im Entwicklungsverlauf, die diesen Gegebenheiten Rechnung tragen.
#4: Entwickle inkrementell mit schnellen integrierten Lernzyklen
Schnelles Feedback erreicht man durch kurze Planungszyklen. Mit „Spikes“, also gezielten prototypischen Implementierungen, kann man zu große Unsicherheit vermeiden und mehr Wissen generieren. Sie sind ein Teil der Bemühungen, ungewünschte Unsicherheit durch gezieltes schnelles Feedback zu reduzieren.
In der agilen Entwicklung sind solche Feedbackzyklen auf den verschiedensten Ebenen eingebaut:
- Agiles Testen, Testautomation, kontinuierliche Integration
- Daily Scrum
- Sprint-Review, kurze Iterationen und regelmäßige Releases
- Lernen auf Team- und Programmebene durch die Retrospektiven und Inspect & Adapt-Meetings
Bei einer skalierten agilen Entwicklung muss man explizit solche Feedback- oder Integrationspunkte für das Gesamtsystem einplanen (siehe auch #5).
#5: Lege Meilensteine basierend auf einer objektiven Bewertung laufender Systeme fest
Phasenbasierte Meilensteine erlauben nur begrenzt eine objektive Messung des tatsächlichen Entwicklungsfortschritts. Die Spielräume bei einer Bewertung sind zu subjektiv und zu groß. Im negativen Fall spielt Wunschdenken eine zu große Rolle bei der Auswertung.
Mit Meilensteinen, die auf lauffähiger Funktionalität eines Systems aufbauen, werden viele dieser Unwägbarkeiten ausgeschlossen und durch objektiv messbare Fortschritte ersetzt (d.h. durch die Fertigstellung von Epics, Features und User Stories). Das macht es auch leichter, Alternativen offenzuhalten, Experimente zur Erweiterung des Wissens aufzusetzen und ggf. Funktionalitäten zu ersetzen.
#6: Visualisiere und begrenze WIP-Limits, reduziere Losgrößen und manage die Länge von Warteschlangen
Lange Warteschlangen sind verantwortlich für längere Zykluszeiten, höhere Risiken, schlechtere Qualität und weniger Motivation. Warteschlangen müssen aktiv gesteuert werden, um vorhersehbare kurze Wartezeiten zu erreichen.
Die wichtigsten Werkzeuge zur Kontrolle von Warteschlangen sind kleine Losgrößen und die Begrenzung der gleichzeitig bearbeiteten Themen (Work-in-Progress oder WIP-Limit).
Die Warteschlangen auf den verschiedenen Ebenen von SAFe sind die Backlogs der Teams, der Release Trains und des gesamten Portfolios.
#7: Nutze Kadenzen und synchronisiere über Bereichsgrenzen hinweg
Die Werkzeuge, um den Entwicklungsfluss unter Unsicherheit zu kontrollieren, sind Kadenz und Synchronisation.
Kadenz bedeutet, in einem vorhersehbaren, regelmäßigen Rhythmus (wie dem Sprint) zu entwickeln, der hilft, unvorhersehbare Ereignisse in vorhersehbare Entwicklungen zu transformieren. Durch Kadenzen werden Wartezeiten vorhersehbar, Transaktionskosten niedriger und die Zuverlässigkeit der Produktentwicklung steigt.
Regelmäßige Synchronisation erlaubt es, die Varianz und Abstimmungsprobleme in ein einzelnes Intervall zu kapseln. Regelmäßige systemweite Integration hilft dabei, zuverlässige Systemtests und eine objektive Bewertung des Projektstatus zu erreichen. Regelmäßige Synchronisation unterstützt die Abstimmung konkurrierender Ziele und den Informationstransfer mit hoher Bandbreite und damit die Fokussierung auf ein globales Optimum.
#8: Entwickle die intrinsische Motivation von Wissensarbeitern
Wissensarbeiter sind Individuen, die oft mehr über ihre Arbeit wissen als ihre Vorgesetzten. Eine sinnvolle Kontrolle der Resultate ist im Allgemeinen ohne ihre aktive Mitwirkung nicht möglich.
Das hat tiefgreifende Konsequenzen für die Art – und die Notwendigkeit – der Motivation: Sie muss von innen kommen, intrinsisch sein. Wissensarbeiter funktionieren in der Regel am besten, wenn sie eine herausfordernde Aufgabenstellung und weitgehende Freiheiten bei der Umsetzung haben. Gleichzeitig hat das eine weitere Notwendigkeit zur Folge: Sie müssen mehr über die Ziele und die globale Optimierung des Systems wissen, um zielführende Entscheidungen fällen zu können. Daraus ergeben sich erheblich andere Anforderungen an den Stil und das Agieren des Managements.
#9: Dezentralisiere Entscheidungsfindung
Während einer Entwicklung müssen kontinuierlich Entscheidungen getroffen werden. Verzögerungen in der Entscheidungsfindung verschlechtern die Qualität der Entscheidung durch neue Erkenntnisse in der Zwischenzeit oder Veränderungen in den Rahmenbedingungen.
Teams müssen die Kompetenz erhalten, Entscheidungen zu treffen sowie schnell und effektiv zu handeln. Dazu müssen sie aber auch bereit sein. Hier gibt es enge Querbeziehungen mit den Prinzipien #2 (Systemdenken) und #8 (intrinsische Motivation).