Agile Werte
Der agile Gedanke
„Wir entdecken bessere Wege zur Entwicklung von Software, indem wir Software entwickeln und anderen bei der Entwicklung helfen. Durch diese Tätigkeiten haben wir gelernt, dass uns
- Menschen und Zusammenarbeit mehr als Prozesse und Werkzeuge bedeuten,
- Lauffähige Software mehr als umfangreiche Dokumentation,
- Zusammenarbeiten mit Auftraggebern mehr als Vertragsverhandlungen und
- Reagieren auf Änderungen mehr als das sture Befolgen eines Plans.
Natürlich sind auch die Dinge rechts wichtig, aber im Zweifelsfall schätzen wir die linken höher ein.“
Diese Wertaussagen mögen auf den ersten Blick etwas seltsam anmuten, weil sie so gar nicht dem entsprechen, was man sich allgemeinhin unter strukturierter Softwareentwicklung vorstellt. Der Versuch, den Entwicklungsprozess zu perfektionieren, zu definieren und immer wieder neue Werkzeuge dafür zur Verfügung zu stellen; der Versuch, die „Zwischenergebnisse“ am Weg zu auslieferbaren Systemen sauber zu dokumentieren; das Absichern von Projektzielen durch Verträge und das Vorausdenken, um in Form von Plänen dem Team Handlungsanweisungen mitzugeben ist an sich richtig – sofern die Angemessenheit gegeben ist und die wirklich wichtigen Aspekte der Softwareentwicklung nicht vernachlässigt werden: Software wird nach wie vor von Menschen für Menschen entwickelt.
Das neue Wertesystem
Wie können diese Werte also nun die Zusammenarbeit aller Projektbeteiligten und die Projektabwicklung selbst positiv beeinflussen?
- Menschen und Zusammenarbeit. Je autonomer die Mitarbeiter agieren können, desto mehr steigen Engagement und Motivation. Besonders bei
selbstorganisierenden Teams ist das erfahrungsgemäß festzustellen, da neben Autonomie auch Verantwortung, Respekt und der Wille zur Veränderung
(Verbesserung) diesen Effekt fördern. In einem solch effizienten Team herrscht eine enge Zusammenarbeit, das Team ist flexibel und anpassungsfähig
und schafft es so, ein neues Problem und seine Lösung gemeinsam zu formulieren und umzusetzen. In diesem Prozess entwickelt das Team
eigenverantwortlich und selbständig ein Vorgehen, um zum Ziel zu gelangen. Es werden dabei Ideen aus der Praxis zu standardisieren versucht,
anstatt praxisferne Methoden als Standard durchzusetzen. Das Team entscheidet mit Hausverstand, was nötig und angemessen ist, um die vereinbarten
Ergebnisse zu liefern. Zudem führt das Team regelmäßige Feedbackrunden durch, um die Prozessqualität zu erhöhen.
Dies ist selbstverständlich nur möglich, wenn das Management den Mut hat, Kontrolle aufzugeben, auf Kontrollmechanismen verzichtet und Vertrauen in ein gut motiviertes Team hat. Laufende Software und positives Feedback vom Kunden sind im Übrigen ohnedies aussagekräftiger als Kontrollen.
- Lauffähige Software. Je früher und kontinuierlicher erste lauffähige Versionen (Release) ausgeliefert werden können, desto früher kann
der Kunde einen Wert generieren und einen Nutzen aus dem System ziehen. Bei einer schrittweisen Erweiterung (iterativ-inkrementelle Vorgehensweise)
wird die Software oder ein System sukzessive mit weiterer Funktionalität angereichert, wobei dem Kunden jederzeit ein operatives (produktives)
System zur Verfügung steht. So können frühzeitig Erkenntnisse aus der Anwendung erster Versionen in den weiteren Entwicklungsverlauf einfließen.
Anforderungen können konkretisiert, Risiken reduziert und die Kundenzufriedenheit gesteigert werden. Die einzelnen Iterationen werden in festen
Zeitabschnitten durchlaufen (Timeboxing), wobei bei Problemen keine Terminverschiebungen, sondern Anpassungen am Umfang der Anforderungen
durchgeführt werden. Kurze Entwicklungszyklen beruhigen zudem die Nerven, das Wachstum des Produkts lässt sich konkret erkennen und Änderungen in den
Anforderungen lassen sich rasch integrieren.
- Zusammenarbeiten mit Auftraggebern. Wesentlich für das Gelingen eines agilen Vorgehens ist, dass sich Auftraggeber und -nehmer auf gleicher
Augenhöhe begegnen – ganz gleich ob es sich um einen internen oder auch externen Dienstleister handelt. Der Kunde ist König aber noch viel mehr ein
wichtiger Projektpartner, der am gleichen Strang zieht, Visionen teilt und zu Beginn in der Regel genauso wenig Details kennt wie der
Umsetzungspartner. Ein kooperatives und vertrauensvolles Miteinander schafft ein Umfeld und die Unterstützung, damit motivierte Individuen auf
beiden Seiten das gemeinsame Ziel erreichen können. Optimalerweise (bzw. ist es in den meisten agilen Methoden eine Vorgabe) sind Mitarbeiter des
Kunden (z.B. einer Fachabteilung) auch ständige Mitglieder des Entwickler-Teams. Transparente Entscheidungen, gemeinsames Lernen, Verstehen und
Lösen von Problemen fördern das partnerschaftliche Miteinander. Je intensiver und direkter die Zusammenarbeit verläuft, desto früher können
Ergebnisse erzielt werden.
- Reagieren auf Änderungen. Dieser Wert beschreibt wohl am besten, wofür Agilität steht – nämlich rasch und flexibel auf Änderungen und Kundenwünsche einzugehen. Änderungen – auch im späteren Projektverlauf – sind üblich und nichts Außergewöhnliches. Agilität nutzt Änderungen zum Wettbewerbsvorteil des Kunden. Häufig entscheiden Kosten-Nutzen Überlegungen über die Reihenfolge in der Umsetzung (Business-First Value), oft auch kurzfristige Änderungen zugrundeliegender Annahmen (z.B. eine Berechnungslogik). In jedem Fall steht man Änderungen proaktiv gegenüber, und versucht nicht an veralteten Plänen festzuhalten. Zu Beginn jeder Entwicklungsschleife definieren Auftraggeber, -nehmer und Team gemeinsam die Inhalte der nächsten Iteration und welche Teile der Software im nächsten Schritt neu erstellt oder überarbeitet werden.
Die Zusammenfassung
Agilität ist kein Vorgehensmodell, sondern ein Rahmenwerk an „Werten“ – auf das Modelle und Methoden aufbauen. Die Kernaussagen sind
- Motivierte Mitarbeiter stehen im Mittelpunkt des Entwicklungsprozesses. Wichtiger als Regeln und Strukturen sind ein Umfeld und Unterstützung, um optimale Ergebnisse erzielen zu können.
- Selbstorganisierende Teams erbringen höherwertige Ergebnisse als unter hierarchischen Bedingungen oder einer klassischen Projektorganisation.
- Voll funktionsfähige und früh verfügbare Ergebnisse sind der primäre Maßstab für Fortschritt und Kundenzufriedenheit.
- Angemessenheit und Einfachheit – die Kunst, die Menge an Arbeit, die nicht zu tun ist, zu maximieren – ist essentiell.
- Die Grenze zwischen Auftraggeber- und -nehmer verschwinden. Es gibt ein Team, das ein gemeinsames Ziel verfolgt. Die tägliche Zusammenarbeit zwischen fachlichen Anforderern und technischen Entwicklern fördern Problemverständnis und -lösung auf beiden Seiten.
Die Anmerkungen
Agile Werte finden neben der Softwareentwicklung auch im Bereich der Produktentwicklung Anwendung. Über die Anwendung des Rahmenwerks bei „größeren“ und/ oder verteilten Teams gibt es allerdings verschiedene Meinungen. Agilität stößt aber dort auf seine Grenzen, wo Koordination und direkte Kommunikation selbstorganisierender Teams nur mehr schwer möglich ist, wo Festpreisprojekte mit vollständig spezifizierten Anforderungskatalogen dem agilen Grundgedanken widersprechen oder in Branchen in denen etwa aus Sicherheitsgründen (z.B. Pharma) strenge Richtlinien zum Entwicklungsprozess gefordert werden.
