Ich arbeite viel in großen Unternehmen. Wenn wir dort mit agilen Gedanken beginnen oder auch in einer agilen Transformation stecken, kommt immer wieder ein Thema nach oben: Abhängigkeiten. Ich persönlich finde das Thema sehr interessant und spannend, weil das grundlegende Muster sehr einfach ist und man sich diesem klar sein muss, denn es tritt immer und immer wieder auf.
Abhängigkeiten
Bei einer Abhängigkeit in Scrum brauchen wir immer die Zuarbeit oder Mitgestaltung von etwas anderem: Das kann ein Team sein, eine Person oder auch in der Infrastruktur liegen.
Die Muster der Abhängigkeiten können wir recht einfach in drei typische Kategorien unterteilen. Diese habe ich dir im folgenden Bild einmal genauer dargestellt und diese besprechen wir nun in den folgenden Abschnitten jeweils einmal genauer.
Zeitliche Abhängigkeiten
Die zeitlichen Abhängigkeiten weisen den Bedarf von einem bereits erstellen Inkrement auf.
Abhängigkeiten im Sprint
Abhängigkeiten im Sprint beschreiben Zuarbeiten, die alle innerhalb des Sprints bleiben und gelöst werden.
Abhängigkeiten außerhalb vom Sprint
Abhängigkeiten außerhalb des Sprints, ohne ein Inkrement aus dem sie beruhen.
Abhängigkeiten, die die Zeit betreffen
Die meisten Abhängigkeiten sind zeitlicher Natur. Das bedeutet im Grunde immer, dass wir ein Inkrement erzeugen. Dieses hat eine gewisse Funktionalität und diese wird später noch einmal benötigt. Meistens setzen dann Funktionen darauf auf, werden verbessert oder ähnliches. Dabei merkst du schon recht schnell: Diese Abhängigkeit ist erstmal in Ordnung, denn eine Funktion ohne vorherige Grundlage ist nicht zu erreichen.
Damit diese Abhängigkeit aber wirklich im Bereich dessen liegen, womit wir in Scrum arbeiten wollen ist es wichtig, dass wir eines verstehen. Wir brauchen in Scrum immer die iterative und inkrementelle Vorgehensweise. Also benötigst du zwingend ein Inkrement am Ende deines Sprints.
Auf diesem Inkrement können wir dann aufbauen und damit haben wir dann auch kein Problem mit zeitlichen Abhängigkeiten.
Abhängigkeiten, die den Sprint betreffen
Jetzt gibt es natürlich auch Abhängigkeiten, die nicht auf einem Inkrement basieren, sondern innerhalb des Sprints auftreten. Das können unterschiedliche Dinge sein, die sich oft in einer Definition of Done finden. Nehmen wir Entwicklungstätigkeiten und auch Testtätigkeiten, dann sind die abhängig von einander. Ohne die Entwicklung kein Test und je nach Technik auch ohne Test keine Entwicklung. Wichtig hierbei ist aber auch, dass diese Abhängigkeiten innerhalb des Sprints aufgelöst werden. Auch dann haben wir kein Problem für unser Inkrement.
Abhängigkeiten, die über den Sprint hinaus gehen
Jetzt können wir uns natürlich auch noch einen weiteren Fall vorstellen. Wir haben einen Sprint, in diesem Sprint erreichen wir aber die Definition of Done nicht (oder vielleicht haben wir auch keine) und erzeugen auch kein Inkrement am Ende des Sprints.
Wir haben nun also eine Abhängigkeit über die Sprints hinaus. Und genau das birgt immer eine Gefahr, wenn wir mit Scrum entwickeln. Denn genau hier laufen wir nun in das Problem, dass wir am Ende des Sprints nicht vorstellen können und mehrere Sprints in Anspruch nehmen. Viele laufen dabei in eine Pseudoagilität.
Was kannst du bei Abhängigkeiten tun?
Zunächst einmal ist es relativ einfach - es gibt nämlich nur zwei Möglichkeiten, wenn wir Abhängigkeiten betrachten. Du kannst die Abhängigkeiten entweder verwalten oder vermeiden.
Abhängigkeiten verwalten
Wenn du Abhängigkeiten besitzt und auch nicht verhindern kannst, dann hast du nur die Möglichkeit diese zu verwalten. Dabei musst du dann mit den Auswirkungen der Abhängigkeiten und der Aufgaben für die Verwaltung derer kümmern.
Abhängigkeiten vermeiden
Wenn du Abhängigkeiten vermeiden kannst, dann hast du natürlich keinerlei Aufgaben, die sich mit der Verwaltung von Abhängigkeiten befassen. Es fallen damit keine Aufgaben an, ob es immer möglich ist, steht auf einem anderen Blatt.
Wie ist das Produkt geschnitten?
Immer wieder wird gerne vergessen, dass agile Teams langfristig an einem Produkt arbeiten. Ebenso verwechseln wir Projekt- und Produktarbeit. Wenn wir das alles (und noch einige Faktoren dazu) ignorieren, dann werden wir langfristig zu keinem guten Produktschnitt kommen. Der richtige Produktschnitt ist aber genau die Möglichkeit zu einem weitestgehenden abhängigkeitsfreien System zu kommen.
Ich sage nicht, dass du alle Abhängigkeiten vermeiden kannst. Ich sage aber, dass du stets reflektieren und deine Strukturen in Frage stellen sollst. Arbeitest du in einer agilen Skalierung und hast große Boards mit Abhängigkeiten, dann ist das eines. Diese aber von Sprint zu Sprint zu akzeptieren ist etwas ganz anderes und wahrscheinlich nicht der beste Weg.
Was du aber alleine mit einer gute Produktdefinition erreichen kannst ist, dass du mehr Abhängigkeiten innerhalb eines Sprints hast und diese damit auch besser lösen kannst. Ist deine Produktdefinition nicht so gut, dass geht es mehr darum, dass die Abhängigkeiten entstehen, die dann außerhalb des Teams / Produktes liegen.
Diese Muster von Abhängigkeiten helfen dir in der Reflexion deiner Arbeit mit Scrum, in der Skalierung und Organisation allgemein.