Agile Softwareentwicklung zeichnet sich im Kern dadurch aus, dem Kunden möglichst schnell eine erste, bereits lauffähige Version der Software bzw. zentraler Funktionen zur Verfügung zu stellen. Typische Vorgehensweisen sind hierbei ein direkter Einstieg in die Code-Entwicklung, das starke Einbeziehen des Kunden sowie fortlaufende Tests und Weiterentwicklungen des Produkts.
Mit Hilfe des Kunden-Feedbacks
(Inspect & Adapt) werden dann in kurz aufeinanderfolgenden Abständen weitere Versionen entwickelt (iteratives Vorgehen), die sich dem wunsch-Zustand immer mehr annähern. So lernen alle Beteiligten eines Teams direkt aus den gemachten Erfahrungen und können die Entwicklungsgeschwindigkeit realistisch einschätzen. Anders als bei klassischen Entwicklungsmethoden werden die einzelnen Funktionen sowie das spätere Aussehen der Software also nicht im Voraus detailliert geplant und im Pflichten- und Lastenheft niedergeschrieben, um das Produkt dann schließlich in einem Zug zu entwickeln. Es wird bei der agilen Methode vielmehr davon ausgegangen, dass die Anforderungen zu Beginn des Projekts 1. gar nicht vollständig bekannt sind und sich 2. im Laufe des Projekts sowieso meist noch ändern. Der Kunde gibt also zu Beginn lediglich einzelne Kernfunktionalitäten vor – und das Projekt kann starten.
Wird im Projektverlauf festgestellt, dass bestimmte Änderungen an der Software notwendig sind oder neue Anforderungen hinzukommen, können diese durch die
iterative Vorgehensweise ganz einfach in die nächste auszuliefernde Version mit aufgenommen werden. Die Devise ist hier: Änderungen sind stets willkommen.
Die Struktur und Arbeitsweise agiler Teams unterscheidet sich insofern von der herkömmlicher Entwicklerteams, als dass sie zum einen relativ
autonom agieren, also kaum abhängig von anderen Teams sind und ihr Arbeitsergebnis von Ende-zu-Ende (Anforderungsanalyse, Design und Entwicklung, Testen, Deployment, Betrieb) verantworten. Hierfür müssen sie
interdisziplinär mit allen erforderlichen Kompetenzen und Berechtigungen ausgestattet sein, um Problemstellungen
selbstorganisiert lösen zu können. Zum anderen haben agile Teams meist eine recht
überschaubare Größe, um schnell auf sich verändernde Umstände reagieren zu können und unbürokratisch und handlungsfähig zu bleiben. Die Kommunikation erfolgt zeitnah, direkt und zielgerichtet, was sich nicht zuletzt darin bemerkbar macht, dass Entwickler besser nachvollziehen können, was der Kunde sich von der Software erhofft, gleichzeitig aber auch das Verständnis seitens des Kunden wächst, falls eine Abschätzung mal korrigiert werden muss oder etwas noch nicht so funktioniert, wie es geplant war.
Und wie wird das agile Arbeiten unterstützt und umgesetzt? Hierzu gibt es verschiedene Prinzipien und Praktiken wie zum Beispiel
Scrum und
Kanban. Wenn von einem Scrum-Prozess die Rede ist, sind damit meist bestimmte Regelmeetings wie u. a. „Sprint-Planning“ und „Daily Standup“ gemeint, die den Lernprozess maximieren sollen, indem immer wieder hinterfragt wird, wie gut die bisherige Lösung mit den Kundenanforderungen übereinstimmt, wie gut das technische System ist und wie effektiv die Prozesse innerhalb der Teams ablaufen.
Ohne das richtige Mindset wird die Einführung agiler Entwicklungsmethoden jedoch kaum den erhofften Effekt bringen: für das erfolgreiche Arbeiten mit dieser Methode sind zwei Dinge unumgänglich: das Verabschieden alter Gewohnheiten und das Zulassen einer dauerhaften, aber kreativen Unsicherheit.