Agile Entwicklung: Das steckt dahinter!

Die agile Software-Entwicklung ist nun schon seit längerem nichts Neues mehr und auch in anderen Arbeitsbereichen haben sich agile Methoden längst etabliert. Für viele ist der Begriff aber immer noch nicht ganz klar. Ab wann handelt man in seinem Unternehmen nach agilen Aspekten? Und was ist eigentlich doch nur traditionelle Arbeit, die fälschlicherweise mit einem Buzzword aufgewertet werden soll?

Bereits in 1990er-Jahren haben Teams von Software-Entwicklern angefangen, mit Methoden zu arbeiten, die man heutzutage zum Agile Software Development zählen kann. Bis zum Ende des 20. Jahrhunderts setzten verschiedene Software-Entwickler und Teams vieles daran, Programmierarbeit leichtgewichtiger zu gestalten, und so wurde die Methode vor allem unter dem Stichwort „lightweight“ bekannt. In dieser Zeit sind auch die Methoden Scrum und Kanban entstanden, die man damals noch nicht unter dem Begriff „agile Produktentwicklung“ zusammenfassen konnte, denn diesen Ausdruck gab es noch nicht.

2001 schließlich fand eine klare Zäsur statt: Im heute als Snowbird-Meeting bekannten Zusammentreffen (nach dem Namen des Ski-Resorts in Utah, in dem das Treffen stattfand) haben 17 Entwickler das Agile Manifest erstellt: Sie alle brachten ihre jeweiligen Erfahrungen im Software Development und im Umgang mit Teams zusammen, fanden Lösungen, legten Prinzipien fest und fassten alles unter dem Begriff zusammen, der heute gleichbedeutend mit moderner Arbeitsweise ist – agile Software-Entwicklung.

Was ist agile Software-Entwicklung?

Als man zunächst im Kleinen anfing, die Methoden der Software-Entwicklung zu hinterfragen und schließlich mit dem Agilen Manifest versuchte, eine neue Art der Projektarbeit zu etablieren, hatte man immer das Ziel, flexibler, kreativer und produktiver agieren zu können. Statt wie bei traditionellen Methoden – z. B. dem Wasserfallmodell – einem durchgeplanten, linearen und bürokratischen Prozess zu folgen, bricht man das Projekt auf. Dafür misst die agile Software-Entwicklung dem Team der Programmierer sehr viel mehr Verantwortung zu.

Zusätzlich verabschiedet man sich mehr oder weniger von riesigen Projekten: Statt Monate oder gar Jahre an der Fertigung eines Produkts zu sitzen, verbringen agile Teams nur wenige Wochen in einer Arbeitsphase. Am Ende steht ein fertiges Produkt, ein Update oder ein Programmteil, der dem Kunden präsentiert werden kann. Damit dies gelingt, hat man sich im Agilen Manifest auf zwölf Prinzipien und vier Werte geeinigt.

Fakt

Bei agiler Software-Entwicklung handelt es sich in erster Linie um einen Sammelbegriff. Er fasst verschiedene agile Methoden zusammen, die jeweils genauere Anleitungen für den Arbeitsablauf bieten.

Werte

Die Werte der agilen Software-Entwicklung geben den Fokus vor, den Teams bei der Entwicklungsarbeit immer im Auge behalten sollten. Sie sind als Gegensatzpaare notiert; beide Aspekte sind wichtig, doch der eine wird in der agilen Entwicklung dem anderen übergeordnet:

  • Individuals and interactions over processes and tools: Die beteiligten Personen und ihre Zusammenarbeit untereinander sind wichtiger als die Frage nach einem bestimmten Prozess oder Werkzeug.
  • Working software over comprehensive documentation: Im Mittelpunkt steht ein funktionierendes Endprodukt. Die Dokumentation der Arbeit ist dagegen zweitrangig.
  • Customer collaboration over contract negotiation: Agile Produktentwicklung ist mehr darauf bedacht, dem Kunden und seinen Anforderungen entgegenzukommen, als Vertragsverhandlungen zu führen.
  • Responding to change over following a plan: Man geht davon aus, dass Software-Entwicklung auf ständige Veränderungen eingehen muss. Dabei kann es erforderlich sein, einen vorher festgelegten Plan umzuwerfen.

Diese Werte sind wie ein Mantra zu verstehen. Sie bieten keine genaue Anleitung, sondern sind dazu da, Entwicklern immer wieder die wirklich wichtigen Aspekte bei der Produktion ins Gedächtnis zu bringen: Arbeitet im Team; fokussiert euch auf die Software; denkt an den Kunden; seid flexibel für Änderungen! Alle anderen, zweifelsohne ebenfalls wichtigen Facetten haben sich diesen Punkten unterzuordnen.

Prinzipien

Mehr in die Richtung von konkreten Anweisungen gehen die zwölf Prinzipien des Agilen Manifests. Diese liefern zusätzliche Informationen und weiten die Ideen der Werte aus. Doch auch hierbei handelt es sich nicht um eine tatsächliche Anleitung – diese will das Manifest nicht liefern. Die Prinzipien sind weit gefasst und dienen dazu, agile von nichtagilen Methoden abzugrenzen.

  • Kundenzufriedenheit: Durch frühe und stetige Veröffentlichung – im Sinne von Continuous Delivery – soll der Kunde jederzeit zufrieden gestellt werden.
     
  • Flexibilität: Agile Teams bewerten Änderungen grundsätzlich als etwas Positives, selbst wenn diese erst spät im Entwicklungsprozess auftauchen. Folgt man dem Agilen Manifest, bringen Anpassungen an geänderte Anforderungen dem Kunden einen Wettbewerbsvorteil.
     
  • Auslieferung: Funktionstüchtige Software wird direkt ausgeliefert, und zwar in einem Zeitrahmen von wenigen Wochen oder Monaten. Ein kürzerer Zeitrahmen ist immer willkommen.
     
  • Zusammenarbeit: Entwickler und Kollegen aus dem Sales-Bereich müssen eng miteinander zusammenarbeiten. Das Agile Manifest sieht tägliche Meetings vor.
     
  • Unterstützung: Damit motivierte Individuen und kreative Teams gut arbeiten können, muss auch die Umgebung für sie stimmen. Dazu brauchen sie Unterstützung von anderen und vor allem auch das Vertrauen von Vorgesetzten.
     
  • Gesprächskultur: Um Informationen möglichst effektiv und ohne Missverständnisse zu übertragen, eignet sich die direkte Kommunikation am besten. Von Angesicht zu Angesicht miteinander zu sprechen, ermöglicht Nachfragen und vermeidet Fehlschlüsse.
     
  • Erfolge: Der Erfolg eines Teams lässt sich vor allem an der Veröffentlichung funktionstüchtiger Software messen.
     
  • Nachhaltigkeit: Es ist sinnvoll, dass die Entwicklung gleichmäßig fortläuft. Dabei sollen alle Beteiligten und nicht nur die Entwickler weiterhin an Veröffentlichungen arbeiten.
     
  • Qualität: Entwickler sollen zudem immer darauf achten, dass ihre Produkte sowohl aus technischer Sicht als auch in Bezug auf das Design höchsten Ansprüchen genügen.
     
  • Einfachheit: Man sollte die Arbeit so einfach gestalten wie nur möglich. Alles Vermeidbare wegzulassen, führt zu einem schlankeren Prozess und somit zu besseren Ergebnissen.
     
  • Organisation: Nur wenn man Teams ermöglicht, sich selbst zu organisieren, kann man außergewöhnliche Ergebnisse erwarten.
     
  • Retrospektive: Ein wichtiger Aspekt der agilen Software-Entwicklung ist, sich selbst jederzeit zu hinterfragen. Um die Arbeit des Teams stetig zu verbessern, ist es wichtig, dass die Mitglieder sich regelmäßig über die Arbeitsweise austauschen und ihr Vorgehen daraufhin anpassen.
Hinweis

Das Agile Manifest bezieht seine Werte und Prinzipien ausschließlich auf die Software-Entwicklung. Dieser Umstand ist der Zusammenstellung der Verfasser geschuldet: Entwickler haben sich zusammengefunden, um eine bessere Arbeitsweise im Software Development zu erarbeiten. Die festgelegten Punkte sind allerdings so weit gefasst, dass man sie ohne weiteres auch in anderen Arbeitsbereichen anwenden kann. Aus der agilen Software-Entwicklung wird dann agile Produktentwicklung, wobei „Produkt“ wiederum unscharf zu verstehen ist. Auch eine Dienstleistung kann somit als Produkt gesehen werden.

Techniken

Im Umfeld von agiler Software-Entwicklung haben sich einige Praktiken etabliert, mit denen man den agilen Ansatz in seinem Team oder Unternehmen umsetzen kann – „agile Entwicklung“ bildet dafür nur den Überbegriff. Viele dieser Techniken findet man in den Ausprägungen der agilen Software-Entwicklung, z. B. bei Scrum, Kanban, Extreme Programming, Feature Driven Development, Behaviour Driven Development oder Chrystal.

  • Backlog: Die Idee eines Katalogs, in dem alle Aufgaben gesammelt werden, die noch erledigt werden müssen, an denen aber derzeit nicht gearbeitet wird, ist kennzeichnend für die agile Vorgehensweise. Der Grund dafür liegt in den kurzen Arbeitsphasen. Statt sich mit mehreren Aufgaben gleichzeitig zu befassen oder in einem großen Plan jeder Aufgabe eine feste Zeitspanne zuzuordnen, hat man einen flexiblen Pool im Hintergrund. Aus diesem kann das Team die nächste Aufgabe auswählen.
     
  • Retrospektiven: Die regelmäßigen Meetings sind nicht nur als abstraktes Prinzip in den agilen Methoden vorhanden, sondern werden teilweise konkret gefordert. Besonders Scrum ist dafür bekannt, einen festen Plan für verschiedenste Meetings zu haben. Nur wenn das Team regelmäßig Herausforderungen und Probleme, aber auch Erfolge anspricht, kann es sich langfristig verbessern.
     
  • User Story: Dem Anspruch, sich auf den Kunden bzw. den Nutzer zu fokussieren, kann man mit User Stories gerecht werden. Hier wird mit einfacher Sprache kurz erklärt, was eine Funktion im Sinne des Nutzers können muss. Man notiert diese Beschreibung auf eine sogenannte Story Card und ordnet alle Karten zu einer Story Map an.
     
  • Agile Testing: In der agilen Software-Entwicklung wird Testing als integraler Bestandteil des Entwicklungsprozesses angesehen. Typischerweise wird das Produkt am Ende einer Iteration – der kurzen Arbeitsphase – im Team getestet, bevor es als ‚fertig‘ gilt und an den Kunden ausgeliefert wird. Erst dann beginnt die nächste Iteration mit einer neuen Aufgabe.
     
  • Pair Programming: Das Vier-Augen-Prinzip kommt beim Pair Programming zur Anwendung. Dabei teilen sich zwei Entwickler einen Arbeitsplatz. Während einer der beiden den Code schreibt, überprüft der andere die Eingabe. Dies kostet zwar mehr zeitlichen Aufwand (der Prüfer könnte in der Zeit selbst Code schreiben), soll aber für weniger Fehler im Code sorgen.
     
  • Timeboxing: Manche Formen der agilen Entwicklung haben strenge Zeitvorgaben. Auch hier ist Scrum ein gutes Beispiel, wo Sprints eine ganz bestimmte Länge haben. Am Ende muss das Team ein fertiges Produkt präsentieren. Das erfordert, dass man die Aufgaben passend gestaltet und auswählt.

Es gibt noch sehr viel mehr Techniken, denen man in agilen Methoden begegnet. Allen gemein ist der Anspruch, den Arbeitsablauf effektiver zu gestalten und die Qualität des Produkts zu steigern.

Vor- und Nachteile der agilen Entwicklung

Von ihren Verfechtern wird die Herangehensweise der agilen Software-Entwicklung gerne als einzige Möglichkeit propagiert, wie man heute Produkte entwickeln sollte. Doch nicht für alle Teams und Unternehmen ist die Agilität die richtige Lösung. Abhängig von der Situation des Unternehmens können die Nachteile die Vorteile überwiegen.

Vorteile

Nachteile

Flexibilität beim Umgang mit geänderten Anforderungen

Ungenaue Beschreibung der Entwicklungsmethode kann zu schwammigen Arbeitsweisen führen

Spielraum für Kreativität

Offenheit lädt zur Ausnutzung ein und unterstützt unproduktives Verhalten

Stetige Verbesserung der Arbeitsabläufe

Ohne langfristigen Plan sind Abgabetermine schwer zu treffen

Schnelle Auslieferungen

Geht von Mitarbeitern mit fachübergreifenden Fähigkeiten aus

Enger Kontakt zwischen allen Beteiligten – vor allem zum Kunden

Zusätzliche Kommunikation kostet mehr Zeit

Nachträgliche Änderungen an bereits abgeschlossenen Projekten werden vermieden

Funktioniert am besten, wenn das ganze Team an einem Ort arbeitet