Agile und Agilität sind zwei Begriffe, die in der Softwareentwicklung häufig verwendet werden. Der Ursprung von Agile liegt im „Agile Manifesto“ mit seinen Werten und Prinzipien, die 2001 von einer Gruppe führender Softwareentwickler aufgestellt wurden. Diese Werte und Prinzipien haben tiefgreifend beeinflusst, wie Softwareentwicklungsteams und zunehmend auch ganze Unternehmen zusammenarbeiten, um Kunden einen Mehrwert zu bringen.
Auch wenn der Begriff Agile aus der Technologiebranche stammt, sprechen auch Führungskräfte aus Wirtschaft und Management zunehmend über die Notwendigkeit agiler Organisationen.
Für sie ist Agilität ein Managementansatz, der Organisationen dabei unterstützen kann, Maßnahmen für die digitale Transformation voranzutreiben. Für viele Unternehmen repräsentiert Agilität den Wunsch, schneller und effizienter zu arbeiten und zugleich besser auf Kundenanforderungen zu reagieren. Deshalb verwenden funktionsübergreifende Teams agile Softwareentwicklungsmethoden, um die Art und Weise ihrer Zusammenarbeit zu definieren.
Wenn von agilen Softwareentwicklungsmethoden die Rede ist, sind damit oft Ansätze mit den folgenden Merkmalen gemeint:
1) Arbeit in kurzen Iterationen
2) Häufige, aber kurze Meetings
3) Visualisierung der Arbeit
4) Zusammenarbeit zwischen Geschäfts- und Technologiefunktionen
5) Erstellen von Applikation als kleine funktionale Komponenten
Vorteile agiler Softwareentwicklung
Die traditionelle Softwareentwicklung nutzt einen „Wasserfall“-Ansatz, bei dem Teams zu Beginn eines Projekts alle Anforderungen definieren, anschließend das Projekt erstellen und es dann dem Kunden übergeben. Das Problem bei diesem Ansatz – insbesondere in unserer schnelllebigen digitalen Welt –, besteht darin, dass sich Präferenzen und Technologien oft bereits verändert haben, wenn das Produkt fertig ist, und es somit schon veraltet beim Kunden ankommt.
Im Gegensatz zum Wasserfall-Ansatz definieren agile Softwareentwicklungsmethoden die spezifischen Softwareanforderungen erst Wochen oder Tage vor der Erstellung, anstatt alles im Voraus festzulegen. Ein entsprechender Ansatz maximiert die Vorteile der agilen Softwareentwicklung, sodass das Team Änderungen und neue Ideen, die dem Kunden einen Mehrwert bieten, schnell und zu geringeren Kosten als bei traditionellen Ansätzen in das Produkt einfließen lassen kann.
Neben dem gesteigerten Kundennutzen bietet Agilität viele weitere Vorteile, die die Arbeitsweise von Teams verbessern. Agilität erfordert, dass Teams anders zusammenarbeiten als bisher. Besonders leistungsstarke Teams können die interne und externe Kollaboration verbessern und zugleich eine größere Flexibilität bei der Entscheidungsfindung erreichen. Die engere Zusammenarbeit zwischen IT- und Business-Mitarbeitern wirkt sich auch auf andere Bereiche des Unternehmens aus, was die Vorteile weiter vervielfacht.
Wann Sie agile Softwareentwicklung einsetzen sollten
Die meisten Teams profitieren unabhängig von der Art ihrer Arbeit vom Einsatz agiler Softwareentwicklungsmethoden. Besonders vorteilhaft sind diese, wenn Teams ein neues Produkt oder einen neuen Prozess entwickeln oder auch organisatorische Veränderungen vorantreiben wollen. In manchen Fällen – etwa bei der Implementierung einer Paketsoftwarelösung, bei der klar definierte, aufeinander folgende Schritte eingehalten werden müssen – kann aber auch ein traditioneller Wasserfall-Ansatz besser geeignet sein.
Jedes Team sollte sein spezifisches Fachwissen, seine Erfahrung und seine Expertise nutzen, um im Einzelfall zu bestimmen, ob ein agiler Ansatz oder ein Wasserfall-Ansatz besser passt. Wichtig dabei ist, nicht nur deshalb auf traditionelle Ansätze zurückzugreifen, weil sie einfacher oder bereits vertraut sind.
Methodik der agilen Softwareentwicklung
Nachdem wir die Vorteile beleuchtet haben, kommen wir zur Frage: Was genau meinen wir, wenn wir von agilen Softwareentwicklungsmethoden sprechen?
Teams wenden eine breite Palette von Strategien und Ansätzen an, um eine agile Softwareentwicklungsmethodik zu implementieren, und bezeichnen sich selbst als „agil“. Im Fall der Softwareentwicklung wird der Begriff jedoch häufig falsch verwendet. Oft werden die allgemein definierten Werte und Prinzipien des Agilen Manifests, die sich auf unser Verhalten beziehen, mit bestimmten Frameworks wie Scrum und Kanban verwechselt – oder auch mit kundenspezifischen Ansätzen, die nichts mit Agilität zu tun haben.
Die Besonderheit der Agilität liegt darin, dass es nicht den einen, vorgeschriebenen Leitfaden oder Framework gibt, dem digitale Teams folgen müssen, um Agilität zu erreichen. Agilität wird nicht in einem einzelnen Buch oder Schulungskurs vermittelt, der Ihr Team von heute auf morgen verändert.
Auch wenn es viele gute Frameworks und Methoden gibt, die Sie auf dem Weg zur Agilität unterstützen, können Teams ihren eigenen agilen Softwareentwicklungsprozess finden und ihn an die individuellen Anforderungen ihrer Organisationen, Branchen und Kundenbedürfnisse anpassen.
Der erste Schritt zur Agilität ist die Etablierung der richtigen Grundeinstellung. Agilität erfordert Flexibilität, Vertrauen und Aufgeschlossenheit, die auf das Ziel ausgerichtet sind, immer wieder einen Mehrwert für den Kunden zu schaffen.
Der Aufbau leistungsstarker agiler Teams
Die Zusammensetzung leistungsstarker und kundenorientierter agiler Teams ist nicht dem Zufall zu überlassen. Um erfolgreich agil zu sein, benötigen Sie zunächst Mitarbeiter mit einer entsprechenden Einstellung. Teammitglieder in einem leistungsstarken agilen Team beantworten die folgenden Fragen mit einem klaren „Ja“:
Sie sind flexibel und offen für Veränderungen?
Können Sie funktionsübergreifend zusammenarbeiten?
Können Sie sich kontinuierlich weiterbilden?
Haben Sie ein hohes Maß an Vertrauen?
Können Sie offen und ehrlich kommunizieren?
Arbeiten Sie gerne in einem Team?
Bevor Sie ein Projekt starten, sollten Sie sich die Zeit nehmen und die besten Mitarbeiter mit dieser Einstellung zu finden, um sie dann zügig in ein leistungsstarkes agiles Team zusammenführen zu können.
Sobald Sie die richtigen Personen gefunden haben, ist es wichtig, dass Sie als Gruppe und basierend auf agilen Prinzipien Ihre gemeinsamen Ziele und Ihre Arbeitsweise definieren. Mit einem solchen Framework können Teams ihre Tuckman-Phasen der Teamentwicklung beginnen.
Auf ihrem Weg durch die Phasen des Forming, Storming, Norming und Performing weisen agile Teams viele ähnliche Merkmale auf und haben Wege gefunden, um:
die agilen Werte und Prinzipien zu verstehen und umzusetzen.
selbstorganisierte Teams aufzubauen und die Mitarbeiter definieren zu lassen, wie die Arbeit umgesetzt wird.
regelmäßig innezuhalten und darüber nachzudenken, wie sie ihren Prozess, ihre Zusammenarbeit und die erreichte Qualität verbessern können.
eine Umgebung zu schaffen, in der die Zusammenarbeit geschäftliche, nicht-technische und technische Gesichtspunkte umfasst.
die Disziplin zu haben, Dinge einfach zu halten und nichts zu erstellen, was nicht benötigt wird.
Um den Schritt von der Phase des Forming zum Performing zu unterstützen, müssen agile Teams Teampraktiken wie Arbeitsweisen, technische Praktiken und Skalierungsstrategien definieren. Agile Teams verwenden hierfür häufig eines der zahlreichen bestehenden Frameworks oder definieren eigene Praktiken, um individuelle Anforderungen zu erfüllen.
Frameworks für agile Softwareentwicklung
Agile ist weder ein einzelnes Framework noch eine einzelne Methodik. Es gibt nicht das eine Buch, das Sie lesen müssen, und auch keine bestimmten Schritte, mit denen Sie „agil werden“. Darin liegt sowohl die Herausforderung als auch die Chance, mit Agile erfolgreich zu sein.
Die Umsetzung von Agilität erfordert ein umfassendes Wissen über eine Vielzahl von Frameworks, Strategien und Ansätzen. Hinzu kommt die Fähigkeit und Bereitschaft, mit neuen Arbeitsweisen zu experimentieren und aus den Experimenten zu lernen. Diese Lernergebnisse sind es, mit denen agile Teams schließlich ihre individuelle Version von Agile definieren können, die sie zum Erfolg führt.
Bei der agilen Softwareentwicklung werden viele verschiedene Methoden und Frameworks eingesetzt. Diese Frameworks helfen agilen Teams bei der Festlegung von Arbeitsweisen, technischen Praktiken und Skalierungsstrategien. Einige der am häufigsten verwendeten Frameworks für agile Teams sind Scrum, Extreme Programing (XP) und Lean Agile. Viele agile Teams verwenden – bewusst oder unbewusst – Techniken und Praktiken aus allen drei Ansätzen.
Die gängigsten Frameworks für agile Softwareentwicklung
Wenn agile Teams ihre Formierungsphase beginnen, schauen sie sich oft verschiedene Frameworks an, um ihre Arbeitsweise zu organisieren. Die Auswahl eines Frameworks als Ausgangspunkt ermöglicht es Teams, individuelle Rollen zu definieren, Arbeitspläne zu entwerfen und die Zusammenarbeit im Team zu strukturieren. Im Laufe der Zeit haben sich mehrere Frameworks für die Organisation der Arbeitsweise herausgebildet.
Die folgende Grafik aus dem 13. State of Agile Report zeigt eine exemplarische Aufschlüsselung agiler Methoden und Praktiken, die agile Teams weltweit einsetzen.
Schauen wir uns die einzelnen Frameworks kurz genauer an.
Scrum
Scrum ist ein beliebtes Framework zur Lösung komplexer Probleme und zur Bereitstellung einer Struktur für Teams, die hochwertige Softwareprodukte bereitstellen. Scrum beschreibt eine Reihe von Rollen, Ereignissen, Artefakten und Regeln, die Teams bei der Organisation und Ausführung ihrer Arbeit helfen. Scrum baut auf den folgenden Säulen auf:
1) Transparenz
2) Inspektion
3) Adaption
Zugleich werden fünf Schlüsselwerte definiert: Commitment, Mut, Fokus, Offenheit und Respekt.
Scrum ist eines der beliebtesten Frameworks für agile Teams (siehe Grafik oben). Neu gebildete agile Teams beginnen häufig mit Scrum, weil es einen leicht verständlichen Bezugsrahmen für die Definition und Organisation von Teams bietet. Der Aufbau eines leistungsstarken Scrum-Teams erfordert jedoch Zeit und Mühe. Die Prinzipien müssen genau verstanden und umgesetzt werden, um den Wert des Frameworks zu maximieren. Im Scrum Guide heißt es dazu: Scrum ist einfach zu verstehen, aber schwierig zu beherrschen.
Kanban
Kanban ist keine Methodik und kein Framework. Teams verwenden jedoch häufig Elemente von Kanban, um ihre Performance zu verbessern. Das Wort „Kanban“ kommt aus dem Japanischen und bedeutet übersetzt „Schild“ oder „Karte“. Das „Kanban Board“ wird häufig von agilen Teams verwendet, um die Arbeit des Teams zu visualisieren und transparent zu machen. In der Regel wird jedes Arbeitselement durch eine Karte dargestellt, manchmal mit einer User Story, Anforderung oder Aufgabe, und enthält spezifische Informationen über die zu erledigende Arbeit.
Der Kanban-Ansatz verwendet ein „Pull-System“, bei dem Aufgaben einen Prozess durchlaufen. So beginnt die Arbeit an einem Element erst, nachdem ein anderes Element abgeschlossen ist. Kanban legt keine feste Zeitspanne für die einzelnen Arbeitsaufgaben oder Arbeitsphasen fest.
Kanban basiert auf fünf Prinzipien: Visualisierung des Arbeitsablaufs, Begrenzung der laufenden Arbeiten, Verwaltung des Arbeitsflusses durch ein System, klare Festlegung von Prozessrichtlinien und kollaborative Verbesserungen. Neben der Visualisierung ihrer Arbeit auf einem Kanban Board konzentrieren sich Teams darauf, die laufenden Aufgaben pro Person und Team zu begrenzen. Dies soll mit Multitasking und Kontextwechseln verbundene Ineffizienzen reduzieren.
Scrumban
Wie der Name schon sagt, kombiniert Scrumban Teile von Scrum und Kanban zu einem hybriden Ansatz. Häufig beginnen agile Teams mit Scrum und wenden darauf aufbauend Kanban-Prinzipien an, um Leistung und Effizienz zu verbessern. Scrum liefert die Team-, Ereignis- und Artefaktstruktur, während Kanban Techniken für einen verbesserten Verlauf von Backlog-Elementen durch den Prozess bietet.
Die Umsetzung von Scrumban kann sehr unterschiedlich sein. Einige Teams verwenden z. B. die Team- und Artefaktstrukturen von Scrum, modifizieren aber die Ereignisse in Scrum und verzichten auf die strenge Timebox-Definition. Manche Teams entscheiden sich für traditionelle Schätzungstechniken wie Planning Poker, während andere, die außerhalb des Timebox-Konstrukts arbeiten, z. B. High-Level-Schätzungen verwenden.
Scrumban wird oft als eine natürliche Weiterentwicklung des strukturierteren Ansatzes von Scrum und der Selbstorganisation von Kanban angesehen.
Lean Agile (Lean Software Development)
Wie Kanban stellt auch Lean Agile selbst keinen Framework dar. Die Prinzipien von Lean Agile werden häufig in Verbindung mit Scrum, Kanban und anderen Techniken eingesetzt, um die Effizienz und Leistung agiler Teams zu verbessern.
Ein Hauptziel von Lean Agile ist die Verbesserung der Effizienz durch die Beseitigung von unnötigen Schritten im agilen Softwareentwicklungsprozess.
Lean Development basiert auf sieben Prinzipien:
1. Unnützes eliminieren
2. Lernen verstärken
3. Entscheidungen so spät wie möglich treffen
4. So schnell wie möglich liefern
5. Verantwortung an das Team geben
6. Integrität einbauen
7. Das Ganze optimieren
Diese Prinzipien bieten agilen Teams zusätzliche Werkzeuge, Techniken und Perspektiven für eine Verbesserung ihrer Arbeit.
Von der Anwendung von Lean-Agile-Techniken profitieren Teams auf allen Stufen des agilen Reifegrads. Für neue oder reifere Teams sind Grundsätze wie möglichst späte Entscheidungen und die Verantwortungsübergabe an das Team wichtige Grundlagen. Wenn agile Teams reifen, profitieren sie davon, unnötige Schritte zu eliminieren und Lernen zu unterstützen, um den kontinuierlichen Lernzyklus zu verstärken, der für agile Teams mit hohem Reifegrad charakteristisch ist.
Extreme Programing
Extreme Programming (XP) ist eine Entwicklungsmethodik, die sich auf die Erstellung in kurzen Entwicklungszyklen konzentriert, um die Kosten für Anforderungsänderungen zu reduzieren. XP unterstreicht die Kundenzufriedenheit und definiert Verfahren für Entwickler, um sich geänderten Kundenanforderungen anzupassen und den Wert für den Kunden zu maximieren. Vor allem legt XP Wert auf Teamarbeit und unterstützt die wichtigsten Stakeholder – Manager, Kunden und Entwicklern – bei der Zusammenarbeit, um herausragende Lösungen zu liefern.
Extreme Programming basiert auf einer Reihe von Werten, Prinzipien und Praktiken. Die fünf XP-Werte Einfachheit, Kommunikation, Feedback, Respekt und Mut bestimmen die allgemeine Teaminteraktion. Zu den XP-Prinzipien gehören Feedback, Einfachheit als Voraussetzung und Offenheit für Veränderungen. Diese Grundsätze bieten eine Anleitung für den Gesamtansatz zur Erstellung eines Softwareprodukts.
Die Zahl der agilen Teams, die ausschließlich XP verwenden, ist relativ gering. Doch viele der funktionalen und technischen Praktiken, die Kent Beck und andere in XP definiert haben, sind weit verbreitet. So verwenden agile Teams z. B. häufig Scrum, um ihre Teams, Ereignisse und Artefakte zu organisieren, und XP-Regeln, um die Produktimplementierung voranzutreiben.
Weitere agile Frameworks
Behavior Driven Development (BDD): Eine Softwareentwicklungsmethodik, die auf einer kontinuierliche Kommunikation zwischen Entwicklern, QA und Business-Stakeholdern basiert, damit alle Funktionen vor Beginn der Entwicklung gut verstanden werden. BDD wendet das Five-Whys-Prinzip auf jede User Story an, um sicherzustellen, dass jedes Geschäftsergebnis mit der Absicht der User Story übereinstimmt.
Test Driven Development: Ein Prozess, der kleine, spezifische Testfälle in kurzen Entwicklungszyklen verwendet, um Applikationen zu erstellen. Entwickler beginnen damit, Testfälle zu schreiben. Dann führen sie diese Tests aus und beobachten, was fehlschlägt. Anschließend wird der Code neu geschrieben und die Tests erneut ausgeführt. Wenn der Test erfolgreich ist, kommt der nächste Test an die Reihe. Andernfalls wird der Code so lange weiter aktualisiert, bis die Tests bestanden sind. Das Ziel dieses Ansatzes ist, dass jeglicher Code, der zur Applikation hinzugefügt wird, zunächst die entsprechenden Tests besteht.
Feature Driven Development: Ein modellgesteuerter, kurzer Iterationsprozess, der aus fünf grundlegenden Aktivitäten besteht. Nach dem Entwickeln eines Gesamtmodells wird eine Liste von Funktionen erstellt. Darauf folgt die Planung, Gestaltung und Erstellung jeder Funktion.
Hybrid / Home Grown Systems: Zusätzlich zu den oben beschriebenen Frameworks verwenden Teams eine Vielzahl weiterer Ansätze. Diese hybriden Strukturen kombinieren oft Elemente mehrerer Frameworks zu einer Methodik, die für ein Unternehmen oder ein Team spezifisch ist.
Diese hybriden Ansätze fallen oft in einige große Kategorien: eine Kombination aus traditionellem Wasserfall-Ansatz und Scrum (so genanntes „Scrumfall“), iterative Entwicklung unter Verwendung eines Wasserfall-Ansatzes (jedoch mit kürzeren Iterationszyklen) und die Dynamic System Development Method.
Der Grad, in dem diese Ansätze Agilität erreichen, hängt stark von den Fähigkeiten des Teams, der Unternehmenskultur und der Komplexität der Lösung ab.
Agile at Scale
Die ursprünglichen agilen Frameworks, Prinzipien und Methoden wurden für kleine Teams oder kleine Gruppen von Teams entwickelt. Management, Kunden und Teams haben die Notwendigkeit erkannt, die Erfolge von kleinen agilen Teams auf große Gruppen von Teams im gesamten Unternehmen zu übertragen. Um dieses Ziel zu erreichen, sind neue Frameworks für die Skalierung der agilen Softwareentwicklung entstanden. Zu diesen Agile-at-Scale-Frameworks gehören: Nexus, SAFe, Scrum at Scale, LeSS, Disciplined Agile und andere.
Viele agile Teams mögen Scrum of Scrums, Enterprise Scrum und Nexus, weil sie es ihnen ermöglichen, die vorhandenen Fähigkeiten, Schulungen und Infrastrukturen von Scrum in ihren Organisationen zu nutzen. Dennoch ist Agile at Scale ein schnell wachsendes und reifendes Segment der agilen Softwareentwicklung, in dem in den kommenden Jahren viele Änderungen erwartet werden.
Fazit
Die agile Softwareentwicklung hat sich seit 2001 weiterentwickelt, ist aber immer noch eine Disziplin, in der agile Teams kontinuierlich lernen und sich verbessern können. Worauf es ankommt, ist zu verstehen, dass das Erreichen von Agilität kontinuierliche Verbesserungen und Anpassungen an Veränderungen erfordert. Die Entwicklung eines tiefen Verständnisses Ihrer aktuellen Frameworks ist von entscheidender Bedeutung. Dabei ist jedoch nicht zu vergessen, dass das Erreichen von Agilität über das Beherrschen eng definierter Aktivitäten hinausgeht.
Um den wahren Wert von Agilität zu erschließen, müssen Teams die individuellen Qualitäten jedes Teams, jeder Organisation, jedes Produkts und jedes Projekts verstehen und darauf basierend den besten Ansatz für eine bestimmte Produktentwicklungsaufgabe bestimmen. Agile Teams müssen die verfügbaren Frameworks, Methoden und Tools umfassend betrachten und auf die aktuellen Gegebenheiten anwenden. Dabei sollte das Ziel des möglichst hohen Kundennutzens stets im Auge behalten werden.