Das Cynefin-Modell von Dave Snowden zeigt sehr schön, dass es nicht ausreicht, als einziges Werkzeug einen Hammer zu haben und damit jedes Problem zu einem Nagel zu machen. Er nennt neben einfachen und komplizierten auch komplexe und chaotische Probleme. Und je nach Kontext brauchen wir unterschiedliche Methoden, Technologien und Praktiken, um ein Problem zu lösen.

Cynefin ist ein walisisches Wort (Snowden ist Waliser) und bedeutet so ungefähr „ein Platz, um zu sein“. Das Cynefin-Modell liefert eine Typologie von Kontexten, um Probleme, Situationen und Systeme zu beschreiben.

Wenn wir einem Problem gegenüberstehen, sind wir geneigt zu glauben, wir müssten nur alle Lösungsoptionen analysieren, die beste auswählen und dann ausführen. Wir gehen also gerne davon aus, dass es klare Ursache-Wirkung-Beziehungen gibt, dass also eine bestimmte Handlung eine klar definierbare Auswirkung nach sich zieht. Oder auch anders herum; wenn wir von einer bestimmten Auswirkung ausgehen, können wir eindeutig deren Ursache erkennen.

Es gibt Systeme, in denen wir Ursache-Wirkung-Beziehungen feststellen können, aber eben auch solche, in denen das nicht möglich ist. Dave Snowden nennt diese beiden Arten von Systemen geordnete und ungeordnete Systeme.

In geordneten Systemen ist das Verhalten vorhersagbar, die Ursachen sind entweder erfahrungsbasiert offensichtlich oder durch Analyse ableitbar. Im ersten Fall handelt es sich um ein einfaches, im zweiten Fall um ein kompliziertes System.

In offensichtlichen Kontexten können sowohl die Anforderungen, die das Problem beschreiben, als auch die Anforderungen, die die Lösung beschreiben, im Voraus spezifiziert werden. Bei komplizierten Problemen ist dies typischerweise mittels Analysetätigkeit möglich.

In ungeordneten Systemen gibt es keine linearen Ursache-Wirkung-Beziehungen. Einige dieser Systeme sind stabil, sie entwickeln sich basierend auf den Interaktionen ihrer Komponenten in eine bestimmte Richtung. Kausalität kann aber immer nur rückwirkend festgestellt werden, das Verhalten solcher Systeme kann nicht per Analyse vorhergesagt werden. Diese Systeme nennen wir komplex. Andere ungeordnete Systeme sind nicht stabil, ihr Verhalten ist zufällig, sie sind chaotisch.

Systeme, die noch nicht in eine dieser 4 Kategorien eingeordnet sind, nennt Snowden durcheinander (disordered). Der Zustand eines Systems kann sich im Laufe der Zeit natürlich auch ändern, ein stabiles System kann z.B. instabil werden.

Diese 5 Domänen (offensichtlich, kompliziert, komplex, chaotisch und noch nicht eingeordnet) bilden das Cynefin Framework.

In der offensichtlichen Domäne wissen wir, was zu tun ist, da wir die entsprechende Art von  Problemen schon oft gelöst haben. Die Aktivitäten, die wir dabei durchführen, sind nach Snowden erkennen (sense), klassifizieren (categorize) und beantworten (respond). Dies ist die Domäne der „bekannten Bekannten“, hier haben rigide Pläne und rezeptartige Vorgehensweisen ihren Platz.

In der komplizierten Domäne (die „bekannten Unbekannten“) wissen wir nicht, was passiert, aber wir wissen, dass wir analysieren können, was passiert ist, und wir können daraus eine Ursache-Wirkung-Beziehung ableiten. Wir führen die Aktivitäten erkennen, analysieren und beantworten durch. Hier finden Good Practices ihre Anwendung.

In der komplexen Domäne gibt es keine lineare Ursache-Wirkung-Beziehung mehr, wir können nicht wissen, welche Ursache welches Ergebnis hervorrufen wird; wir können aber Experimente durchführen und prüfen, ob sie uns in die richtige Richtung führen. Hier prüfen, erkennen und beantworten wir. Wir bewegen uns in der Domäne der „unbekannten Unbekannten“, und damit in der Domäne der agilen Praktiken.

Eine chaotische Umgebung (die „unerkennbaren Unbekannten“) ist nicht stabil. Wenn wir nicht warten können, in der Hoffnung, dass es besser wird, müssen wir sofort handeln, also führen wir hier die Aktivitäten handeln, erkennen und beantworten durch.

Das menschliche Gehirn bevorzugt die einfachen und schnellen Antworten (Daniel Kahneman: Schnelles Denken, langsames Denken.). Wir glauben sehr oft, dass wir die Antwort kennen und merken erst sehr viel (Zeit und Geld) später, dass dem doch nicht so war. Wenn wir uns nicht sicher sind, in welche der Cynefin-Kategorien unser Problem fällt, tun wir sicher gut daran, erst mal vom schlimmeren Fall auszugehen.

Geordnete Systeme, z.B. ein Fahrrad oder ein Auto, können wir auseinanderbauen und wieder zusammensetzen, und sie funktionieren dann wie zuvor (bei mir zwar nicht, aber das ist eine andere Geschichte). Für ungeordnete Systeme, z.B. ein Omelett, gilt dies nicht.

In welche Kategorie fällt Softwareentwicklung?

Softwareentwicklung ist wohl eher ein komplexes Problem, und muss mit unvollständigen, widersprüchlichen und sich ändernden Anforderungen umgehen können. Auch die Organisationen, in denen Software entwickelt wird, sind selbst wieder komplexe Systeme. Sie sind hoch dynamisch, verschiedene Individuen handeln auf verschiedenen Ebenen nach unterschiedlichen Prämissen. Organisationen sind somit ebenfalls nicht-linear und ihre Reaktionen unvorhersehbar. Bei komplexen Problemen ist damit der in einer klassischen Requirements Engineering-Welt verbreitete Versuch, die Anforderungen im Voraus in einer umfangreichen Spezifikation (vertraglich) zu fixieren, nicht nur Verschwendung, sondern wahrscheinlich sogar kontraproduktiv.

Es ist viel zielführender, das Verständnis einer gemeinsamen Vision (ein Aufgabengebiet des Requirements Engineerings) zu erarbeiten, und dann als Partner zusammenzuarbeiten, und über schnelles Feedback Probleme zu adressieren. Komplexe Probleme werden über kontinuierliche Zusammenarbeit und kontinuierliches Feedback gelöst. Einfache und komplizierte Systeme lassen sich noch leidlich über Hierarchien beherrschen, komplexe nur über Netzwerke und adaptive Prozesse.

Das Cynefin-Modell erlaubt es uns also, die Realität zu verstehen und zu beschreiben, und Techniken und Praktiken zu wählen, die in der jeweiligen Domäne am ehesten zum Ziel führen. Es hilft zu verstehen, dass agil und traditionell keine Gegensätze sind, sondern Orte auf einem Kontinuum, und warum, je nach Kontext, manche Praktiken funktionieren und manche nicht.