Scrum, Kanban oder Lean

Warum agile Softwareentwicklung wirklich hilft

15.02.2018 von Matthias Rauber
Agile Methoden sind bei der Projektarbeit inzwischen etabliert. Doch sind sie tatsächlich das Wundermittel zur Organisation von Projekten? Was waren die Beweggründe für deren Entstehung?

Scrum, Kanban und Lean sind, zumindest in der Softwareentwicklung, die Vorgehensmodelle der Stunde. Wer heute nach klassischer Wasserfallmethodik entwickelt, hat die Zeichen der Zeit verschlafen - so scheint es. Viele namhafte Unternehmen haben ihre über Jahrzehnte eingesetzten Verfahren umgestellt oder sind dabei wie etwa BMW. Sogar in klassisch geprägten Branchen wie zum Beispiel dem Finanzsektor sind Scrum- und Kanban-Projekte auf dem Vormarsch.

Agile Methoden kommen immer häufiger zum Einsatz. Zu Recht, wenn man die Grundsätze professioneller Softwareentwicklung nicht außer Acht lässt.
Foto: Gorodenkoff - shutterstock.com

Ist dieser Hype rund um "agil" begründet oder werden wir irgendwann eher nüchtern auf die aktuelle Phase zurückblicken?

Um die Frage zu beantworten, lohnt sich ein Blick auf die Beweggründe für die Entwicklung von Scrum und Co. und damit auf die negativen Erfahrungen, welche oftmals mit der klassischen Wasserfallmethodik und den darauf aufbauenden Unternehmens- und Projektstrukturen einhergehen.

Dokumentation vor Software

Bevor in einem Wasserfall-Projekt die erste Zeile Code entsteht, werden umfangreiche Konzepte geschrieben, diskutiert, reviewed, geändert und wieder reviewed bis zur Abnahme - des Dokuments wohlgemerkt.

Leider krankt dieses Verfahren erstens daran, dass es Fachbereichsmitarbeitern schwerfällt, eine Anwendung detailliert mit Worten zu beschreiben, und zweitens sind notwendige Änderungen der Anforderungen während der Realisierungsphase zu erwarten, sodass die spätere Software zwar dem Konzept, aber nicht unbedingt den Bedürfnissen der Benutzer entspricht.

In agilen Projekten liegt der Fokus auf dem zu erstellenden System. Die Anforderungsbeschreibungen sind kurz und knapp aus Anwendersicht formuliert und im Rahmen eines Backlogs priorisiert. Potenzielle fachliche oder technische Änderungen fließen stetig in die früh beginnende Entwicklung ein. Mit jeder Iteration (Sprint) entsteht ein Stück System, das von den Stakeholdern bewertet und gegebenenfalls korrigiert werden kann. Auf diese Weise verliert das für SW-Projekte typische "Moving Target" seinen Schrecken; Änderungen führen nicht zu umfangreichen Change Requests mit den damit zwangsläufig verbundenen Kosten.

Horizontale Schnitte

Ein auch heute noch beliebtes Modell für klassische Projektorganisationen ist die Teilung der Teams analog der Schichten der zu erstellenden Anwendung, in beispielsweise Frontend, Business Funktionen und Backend (sogenannter horizontaler Schnitt). Neben den meist ohnehin anzubindenden benachbarten Systemen resultieren zusätzliche Schnittstellen zwischen den Teams und deren Code. Dadurch sind nicht nur unnötige Abstimmungen, sondern auch aufwändige Integrationsmaßnahmen erforderlich. Die Projekte dauern zwangsläufig länger und haben mit Qualitätsproblemen zu kämpfen.

In einem nach Scrum-Methodik durchgeführten Projekt sind die Teams crossfunktional organisiert, das heißt alle für die Realisierung der SW benötigten Rollen sind vertreten (vertikaler Schnitt) - idealerweise an einem Ort und in einem gemeinsamen Projektraum, sodass die Kommunikation vereinfacht wird.

Darüber hinaus existieren aufgrund der Entwicklung der fachlichen Anforderungen gleichzeitig über alle Schichten keine zusätzlichen Schnittstellen; jedes Inkrement der Anwendung ist lauffähig und testbar.

Kleines Scrum-Glossar
Kleines Scrum-Glossar
Was meint eigentlich Scrum, Product Owner oder Backlog? Wir stellen Ihnen die wichtigsten Begriffe und ihre Bedeutung vor.
Scrum
Der Begriff stammt aus dem Rugby und bedeutet wörtliche "Gedränge". In der Softwareentwicklung bezeichnet er ein Vorgehensmodell der agilen Softwareentwicklung, das 1995 von Ken Schwaber, Jeff Sutherland und Mike Beedle veröffentlicht wurde.
Das Scrum-Team
Aufgabe des Teams ist es, die Anforderungen der Fachabteilung umzusetzen. Es bietet drei Rollen:
1. Rolle: Product Owner
Er vertritt den Auftraggeber, also die fachliche Seite. Also zeichnet er für die Priorisierung der Anforderungen verantwortlich und letztlich auch für den Nutzen, den das Projekt dem Unternehmen bringt.
2. Rolle: Scrum-Master
Er ist quasi der Herr über die Prozesse. Er sorgt dafür, dass die Scrum-Regeln im Projekt eingehalten werden, er fördert die Transparenz, unterstützt das Team bei der Beseitigung von Hindernissen und sucht ständig nach möglichen Verbesserungen.
3. Rolle: Die Entwicklergruppe
Sie besteht idealerweise aus sieben Entwicklern.
Sprint
Mit diesem Begriff bezeichnet Scrum einen Iterationszyklus, innerhalb dessen ein Scrum-Teams eine Anforderung umsetzt. Ein Sprint dauert mindestens zwei Wochen und maximal einen Monat.
Backlog
So heißt in Scrum die priorisierte Anforderungsliste für das zu entwickelnde Produkt. Sie wird vom Product Owner verantwortet und gepflegt.
Definitionen von fertig
Dabei handelt es sich um die Kriterien, unter den ein Produkt als umgesetzt akzeptiert wird.

Späte Integration

In klassischen Projekten erfolgen die Integration und der Test über alle Module und Systeme in einem Abschnitt gegen Ende der geplanten Zeit. Erst dann zeigt es sich, ob die Absprachen mit Schnittstellenpartnern eingehalten wurden. Oftmals werden die Komplexität und der zeitliche Aufwand für diese Phasen maßgeblich unterschätzt.

Eine Maxime der agilen SW-Entwicklung ist es, mit jeder Iteration (Sprint) ein potenziell lieferfähiges Produktinkrement zu erhalten. Das impliziert die frühe Integration mindestens über alle Bestandteile des eigenen Projektes. Idealerweise werden auch Partnersysteme frühzeitig in die Realisierung einbezogen und miteinander getestet. Diese Arbeiten zeigen Probleme und Schwachstellen rechtzeitig auf und verhindern Überraschungen gegen Projektende.

Zu wenig Zwischenziele

In einem Wasserfallprojekt werden Meilensteine meist entlang der Phasen Konzeption, Design, Realisierung, Test und Abnahme definiert, auch wenn diese weit auseinander liegen. Neben der Problematik, dass im Zuge dessen erst spät Software entsteht, führen Meilensteine in einer eher fernen Zukunft zum Verlust des Fokus.

Es liegt in der Natur des Menschen, dass er sich auf kurzfristige Ziele konzentriert und sich dabei gerne in Details verliert, während das große Ganze außer Acht gerät. Je weiter Meilensteine auseinander liegen, desto größer ist die Wahrscheinlichkeit, dass gegen Ende Wesentliches fehlt und die Zeit knapp wird.

Bei einem Scrum-Projekt liegt der nächste Meilenstein maximal eine Sprintlänge in der Zukunft - mit klarem Fokus auf die Umsetzung und Validierung der vereinbarten fachlichen Funktionen (User Stories). Umfangreichere Produktinkremente werden in größeren Abständen synchron zum Sprintraster definiert, sodass diese Zwischenziele einen zusätzlichen Anreiz bilden.

8 Vorteile von Scrum
Schneller als Plan-Build-Run
Die Anforderungen an Software verändern sich im Laufe der Entwicklung oft erheblich - anders als bei einem Auto zum Beispiel. Dem tragen agile Methoden wie Scrum Rechnung.
Besseres Ineinandergreifen
Bei traditioneller Softwareentwicklung greifen Zahnräder oft nicht ineinander, sondern sie rotieren nebeneinander vor sich hin. Scrum sorgt für nahtlosere Prozesse.
Jeder spricht mit jedem
Bei vielen Softwareprojekten mangelt es an gelungener Kommunikation, bei Scrum ist regelmäßiges Feedback für alle Beteiligten Pflicht.
Mehr Qualität
Mit Hilfe von Scrum entwickelte Software ist in der Regel besser als andere, weil hier frühzeitig das Feedback der Kunden integriert wurde.
Chaos führt nicht zu Panik
Chaotisch ist Scrum insofern, als sich der damit verbundene Prozess nicht einfach mit einem Pfeil beschreiben lässt, der links auf dem Blatt Papier anfängt und irgendwo rechts aufhört. Sondern er ist mehrdimensional. Wenn sich alle an bestimmte Regeln halten, läuft trotzdem nichts aus dem Ruder.
Im Mittelpunkt: Der Mensch
Scrum heißt Gedränge. Und es bedeutet, den Menschen in den Mittelpunkt zu stellen in dem Sinne, dass ihm die Methode ermöglicht, effizient und gleichzeitig kreativ zu arbeiten.
Automatisierte Tools statt Selbstgestricktes
Oft verwendet jede Abteilung eigene Anwendungen, um Entwicklungsschritte zu dokumentieren, zum Beispiel Excel. Automatisierte, vor allem einheitliche Tools beschleunigen hier die Abläufe erheblich.
Nicht nur am Ende testen
Zeitgemäße Entwicklungsumgebungen erlauben es, auch einzelne Module zwischendurch zu testen, um immer auf dem neuesten Stand zu sein.

"Agil" ist kein Wundermittel!

Angesichts derartiger Vorteile ist in der Tat ein Wechsel von Wasserfall zu Scrum,Kanban oder ähnlichen Methoden zu empfehlen. Doch Vorsicht! Agil zu arbeiten bedeutet nicht, die Grundprinzipien der professionellen Softwareentwicklung zu vernachlässigen. Wesentliche Aspekte müssen weiterhin Beachtung finden, um unliebsame Konsequenzen zu vermeiden.

Fachliche Prozesse definieren und berücksichtigen

Auch wenn in einem agilen Projekt Beschreibungen kurz und knapp sein sollten, ist es von entscheidendem Vorteil, Prozessdokumentationen zu erstellen und hieraus die Anforderungen in Form von Epics, Features und User Stories abzuleiten.

Insbesondere bei komplexen Vorhaben verhindert diese deduktive Vorgehensweise die Entwicklung von potenziell überflüssigen Systembereichen und sorgt für die Integrations- und Ablauffähigkeit auch über mehrere Anwendungen hinweg.

Fokussierung auf das Wesentliche statt Goldene Henkel

Eine Möglichkeit herauszufinden, ob eine fachliche Funktion oder ein ganzes System nützlich sein könnte, ist die Beschreibung und die Kalkulation des Business Case. Bei einzelnen Anforderungen im Sinne eines Eintrags im Backlog genügt oftmals die Kategorisierung in T-Shirt-Größen (S, M, L, XL) und die Erkenntnis des Product Owners, auf welche Funktionen er/sie gegebenenfalls verzichten muss, weil Zeit und/oder Budget ausgereizt sind.

Bei umfangreicheren Themenstellungen hilft den Stakeholdern die Gegenüberstellung der konkreten Kosten bei Realisierung der Anforderung oder Aufrechterhaltung des Status quo. Bei Letzterem sind unbedingt die Prozesskosten zum Beispiel für Personal bei manuellen Tätigkeiten zu berücksichtigt.

Feedback und Retrospektive in Scrum-Projekten
Retrospektive und Feedback in Scrum-Projekten
Scrum Manager haben die Möglichkeit, den Projekterfolg durch die Analyse des Sprints zu verbessern. Zielführend sind dabei die Retrospektive und das Feedback der Teammitglieder - ein Vorgang, den der Scrum Manager mit Diplomatie moderieren muss. Folgende Methodik mit Arbeitsblättern hat sich bewährt.
Feedback - Schritt 1
Für die Retrospektive erhält jedes Teammitglied ein vorbereitetes Blatt mit seinem Namen und zwei Fragen: "Was kann man von mir erwarten?" und "Was erwarte ich vom Team?"
Feedback - Schritt 2
Der Feedback-Bogen wird um zwei Bereiche ergänzt: "Was ich an Deiner Arbeit schätze ..." und "Was ich Dir wünsche, das Dir besser gelingt ..."
Feedback -Schritt 3
Der Feedback-Bogen wird an den Tischnachbarn weitergegeben, von diesem ausgefüllt und so lange weitergegeben, bis jeder Teilnehmer wieder sein persönliches Blatt vor sich liegen hat – jetzt mit dem schriftlichen Feedback aller beteiligten Teammitglieder.
Selbstreflexion
Zwei weitere Bereiche kommen hinzu – sie dienen der eigenen Reflexion des erhaltenen Feedbacks: "Darauf bin ich stolz ..." und "Das nehme ich mit ..."
Vorgehensmuster
Nach diesem Grundmuster lassen sich Retrospektiven zu einem späteren Zeitpunkt erneut wiederholen.

Performance früh im Fokus behalten

Eine nicht nur in agilen Projekten gerne vernachlässigte nicht-funktionale Anforderung betrifft die Performance des zukünftigen Systems. Es ist keine gute Idee, erst kurz vor dem geplanten Livegang Last- und Performancetests durchzuführen.

Unter Umständen sind beachtliche Aufwände für Korrekturen erforderlich, weil Basisbereiche, zum Beispiel Datenbankzugriffe/Datenmodelle, angepasst werden müssen und dies Auswirkungen auf weite Teile des Systems hat. Daher ist eine frühzeitige Betrachtung von Last- und Performanceaspekten inklusive prototypischer Realisierungen angeraten.

Migrationsarbeiten berücksichtigen

Die Mehrheit der heutigen Software-Projekte löst Legacy-Systeme durch moderne Implementierungen ab. Die meist über Jahre oder Jahrzehnte entstandenen Daten werden in den seltensten Fällen nicht mehr benötigt, sondern sind in die neue Welt zu migrieren. Auch hier ist es sinnvoll, frühzeitig mit den Arbeiten zu beginnen.

Diese sind nicht nur technisch durch die Datenbank getrieben; vielfach beeinflusst die Migration die fachliche Realisierung und umgekehrt. Um in agilen Projekten der Volatilität der entstehenden Systeme Rechnung zu tragen, können ETL-Werkzeuge (Extract, Transform, Load) hilfreich sein. Dabei werden Transformationslogiken grafisch modelliert, welche im Bedarfsfall relativ einfach anpassbar sind.

Scrum in zwei Tagen
Scrum in Two Days
Agiles Projekt-Management erlebten die Teilnehmer des Workshops bei der Karls­ruher Diva-e Netpioneer GmbH.
Minecraft als Parabel auf die Projektwelt
Das Besondere: Die Teilnehmer müssen Aufgaben im Open-World-Spiel Minecraft erledigen und organisieren sich dabei nach der Scrum-Methode.
Unser Ziel
Der Investor Ultimative Green Car will in einer unberührten Landschaft eine Fabrik bauen, die nachhaltige Autos produziert und Mitarbeitern wie Anwohnern Raum für Freizeitaktivitäten bietet.
Scrum-Coach Björn Radon ...
... brachte uns als Scrummaster die agilen Grundprinzipien nahe.
Zwei wichtige Scrum-Prinzipien
Crossfunktionales Team: In ihm sind nicht nur Entwickler, sondern auch Designer, Tester oder Business Analysten vertreten. Alle, die für die Entwicklung eines Produkts nötig sind. Timeboxing oder der Zeitplan ist heilig. Sind für einen Sprint 10 Tage eingeplant, darf er nur zehn Tage dauern.
Daily Stand up
Auch im Workshop-Format tauschten sich die Teilnehmer während eines Sprints im Stand up aus. Das half Probleme nicht nur zu erkennen, sondern auch eine Lösung dafür zu finden.
Wie lange dauert es, eine Empfangshalle zu bauen?
Nach dem ersten Sprint und einer gewissen Entwicklungs­erfahrung wissen die Teilnehmer, dass sie eine Stunde gebraucht haben, um ein Firmenschild mit grünem Logo auf weißem Grund zu bauen. Aufgrund dieser Erfahrung geben sie ihre Einschätzung ab, um wie viel aufwendiger es ist, die Empfangshalle zu bauen.
Zum Glück gibt es Schokolinsen ...
Die Schale leerte sich zusehends, als das Scrum-Team in einem Sprint nicht alle Aufgaben schaffte, da sich plötzlich die Rahmenbedingungen änderten. In der Minecraft-Welt waren es die Monster, die es zu bekämpfen galt.
Zusammen sind wir stärker
In komplexen Projekten fällt es dem Einzelnen oft schwer, den Überblick zu behalten. Arbeitet das Projektteam nicht Hand in Hand und hilft sich gegenseitig, etwa indem erfahrene Spieler ihr Wissen an ­Einsteiger weitergeben, ist das Scheitern programmiert.

Personal dediziert einsetzen

Der Mensch ist nachweislich nicht für Multitasking-Tätigkeiten geeignet. Zwar mögen Frauen diesbezüglich über evolutionsbedingte Vorteile gegenüber Männern verfügen. Sicher ist, dass beide Geschlechter schnellere und bessere Ergebnisse erzielen, wenn sie sich auf eine Aufgabe konzentrieren können.

Viele Firmen neigen jedoch dazu, ihre Mitarbeiter aufgrund von Ressourcenengpässen und Kopfmonopolen gleichzeitig in mehreren Projekten zu platzieren - mit entsprechend negativen Konsequenzen. Bei dediziert eingesetztem Personal dankt es jeder Einzelne mit größerer Zufriedenheit und höherer Motivation, wovon nicht nur das Projekt, sondern das ganze Unternehmen profitiert.

Fazit

Um die eingangs gestellte Frage zu beantworten: Ja, der Hype um agile Vorgehensmodelle ist absolut begründet und eine Umstellung ist rentabel, wenn man nicht allein auf die Methode vertraut, sondern weiterhin die Grundsätze professioneller Softwareentwicklung berücksichtigt.

Unternehmen, die mit dem Gedanken zur Umstellung ihrer Projektprozesse spielen, sollten sich bewusst sein, dass die Einführung von Scrum und Co. für viele Menschen einen ausgeprägten kulturellen Wandel zur Folge hat, der nicht von heute auf morgen vollzogen werden kann (siehe auch: Radikales Umdenken nötig).

Entgegen der klassischen Methoden bedeutet agiles Arbeiten mehr Eigenverantwortung, Selbstorganisation, ständige Reflexion und vor allem Transparenz bezüglich der Tätigkeiten jedes einzelnen und das zu jeder Zeit. Wer dies in seinen Projekten berücksichtigt und die Menschen aktiv an den Change-Prozessen beteiligt, wird mit zufriedeneren Mitarbeitern und besseren Projektergebnissen belohnt. (hal)