Agile Werte

Agile Werte sind neben agilen Prinzipien und agilen Praktiken ein Baustein des agilen Projektmanagements.

Liest man das agile Manifest und Literatur darum herum, kann man zu folgender Liste kommen:

  • Selbstverpflichtung (Commitment)
  • Mut
  • Kommunikation
  • Offenheit
  • Respekt
  • Einfachheit
  • Feedback
  • Fokus

Das sind allerdings Werte, die jeder Vorgehensweise gut zu Gesicht stünden und eigentlich selbstverständlich sein sollten. Ich habe deshalb eine Liste agiler Werte aufgestellt, die den wirklichen Unterschied gegenüber klassischen Systemen ausmacht:

  1. Neue Rollenverständnisse für Entwickler, Manager und Kunden
  2. Wenig Planungs- und Vorbereitungstätigkeiten
  3. Eine interaktive und iterative Entwicklung
  4. Begrenzte, verhandelte Funktionalität
  5. Einen Fokus auf Qualität, zu erreichen durch Testen

Diese Punkte sollen im folgenden näher beleuchtet werden.

Anderes Rollenverständnis

Das agile Rollenverständnis gibt dem Team ein großes Gewicht und überlässt diesem die Auswahl und Zuweisung von anstehenden Aufgaben. Der Manager wird als Unterstützer des Teams verstanden, nicht mehr als Entscheider.  Kunden sind nicht mehr nur passive Empfänger der Entwicklungsergebnisse, sondern partizipieren aktiv am Entwicklungsprozess. In vielen Fällen haben Sie im Team auch einen Repräsentanten.

Weniger Planen und vorbereiten

Planungsarbeiten und das Erstellen von Anforderungsdokumenten beanspruchen in nicht agilen Prozessen oft erheblichen Aufwand. Die Befürworter agiler Methoden behaupten, dass die Kunden am Anfang eines Projektes oft gar nicht wüssten, was sie eigentlich wollen. Selbst wenn man plant und Anforderungen zusammenstellt, werden diese Arbeiten im Laufe des Projekts  überholt werden und vielfach geändert. Vorab Designs zu erstellen gilt als Zeitverschwendung, weil man noch gar nicht weiß, was funktionieren wird und was nicht.

Agiles Projektmanagement hingegen legt nahe, statt vorab Anforderungen zu erstellen, ständig mit dem Kunden zu interagieren. Auf diese Weise erhält das Entwicklungsteam Einsicht in die Problematik des Kunden und gleichzeitig zeitnah Rückkopplung  zum schon erarbeiteten Entwicklungsergebnis. Durch das ständige Feedback notwendig werdende Änderungen am Design werden durch „Refactoring“ erreicht.

Interaktive und iterative Entwicklung

Agiles Vorgehen ist durch die starke Einbindung des Kunden interaktiv und in feste Zeitabschnitte („Iterationen„) eingeteilt. Zu Beginn einer jeden Iteration wird eine Liste mit der gewünschten Funktionalität erstellt, aus der das Team die Aufgaben auswählt, die den höchsten Business Value bzw. Return on Invest (ROI)  versprechen.

Begrenzte, verhandelte Funktionalität

Verhandelt wird nicht der Termin, sondern der Funktionsumfang, der am Ende eines Zeitabschnitts geliefert werden kann.  Agile Entwickler halten es für unrealistisch, vorab einen Gesamtplan zu erstellen, bei dem sowohl ein Funktionsumfang wie auch ein Liefertermin für ein fertiges Produkt festgelegt werden.  Die agile Planung ist immer nur für den nächsten Zeitabschnitt verbindlich, der sich in der Regel über wenige Wochen erstreckt.

Qualität durch Testen

Qualität wird nach dem Verständnis der agilen Methodik hauptsächlich durch Testen erreicht. Einen wichtigen Platz nehmen dabei die Regressionstests ein, die sicherstellen sollen, dass sich die Software stetig verbessert. Andere Ansätze für verbesserte Produktqualität wie formale Methoden, Reviews oder Design spielen praktisch keine Rolle.

Was sind agile Werte wert?

Mehr Freiheit für die Entwickler

Scrum - Lizenz von ClipDealer

Es gibt viele Entwickler, die von der agilen Methodik mit ihren Prinzipien und dort vor allem von Scrum und Kanban begeistert sind. Das resultiert nicht zuletzt daher, dass Entwickler Code schreiben möchten und keine Dokumente. Auch ist es in der Regel unangenehmer gegen einen Plan zu arbeiten, als mehr oder weniger selbst festlegen zu können, was man in den nächsten zwei Wochen erreichen möchte.

Eingeschränkte Skalierbarkeit

Einem Team größere Entscheidungskompetenz einzuräumen kann funktionieren, wenn der Umfang des Gesamtprojekts weniger als ca. zehn Leute zur Bearbeitung erfordert. Wird das Projekt  größer, steigt die Anzahl der Schnittstellen zwischen den verschiedenen Teammitgliedern stark an und  man muss Cluster bilden, deren Schnittstellen durch einzelne Vertreter der Cluster (nennen wir sie „Manager“)  realisiert werden.  Ab diesem Moment wird mehr schriftliche Dokumentation notwendig, weil man nicht mehr davon ausgehen kann, dass jedes Teammitglied jederzeit mit jedem anderen bei Bedarf sprechen kann. Die Erfahrung zeigt, dass agile Methoden schlecht skalieren.

Gut für Weiterentwicklungen

Der Verzicht auf eine längerfristige Planung und das Erstellen von Anforderungen vor Beginn der Umsetzung ist vor allem dann effektiv, wenn Systeme sich  inkrementell  entwickeln lassen. Agiles Vorgehen bietet sich deshalb bei der Weiterentwicklung existierender Systeme an und überall dort, wo der Umbau einer existierende Lösung nicht mehr kostet, als das Sammeln von Anforderungen vorab.  Man kann sich aber leicht vorstellen, dass es nicht ratsam ist, nach dieser Methode ein Zweifamilienhaus oder eine Kathedrale zu bauen. Gleiches gilt für solche Systeme, in denen nicht nur Software sondern auch die Entwicklung von Hardware eine Rolle spielt.

Getaktete Entwicklung immer gut

Eine Entwicklung in feste Zeitabschnitte zu gliedern ist unabhängig von agiler oder klassischer Methodik eine zu empfehlende Vorgehensweise. Durch den festen Rhythmus gibt man eine Vorgabe für die Planung, bei der man sich überlegen muss, welche neue Funktionalität man in einem wenige Wochen dauernden Zeitblock realisieren kann.

Regressionstests immer hilfreich

Entwickler schreiben gerne  Code, und das Schreiben von Regressionstests kann viel Spaß machen.  Unabhängig von der Art der gewählten Methodik ist es sinnvoll, automatische Tests zu haben. Tests dienen dazu, Fehler zu entdecken. Die Wahrscheinlichkeit der Entdeckung ist immer kleiner als 100 %. Insofern ist es oft effektiver, einen Fehler zu verhindern, statt ihn später suchen zu müssen. Die Fokussierung auf die Fehlerentdeckung  anstelle von Fehlervermeidung ist deshalb nur dann zu vertreten, wenn der Aufwand für die Erstellung der Tests wesentlich geringer ist, als der Aufwand für ein sorgfältiges Design.

Die Rolle der Werkzeuge

In der Welt des agilen Projektmanagements existiert eine ganze Reihe von Scrum Software, die den Entwicklern das Leben erleichtert. Komplizierte Projektmanagement-Software wird dann  nicht mehr benötigt. Neben Scrum Tools spielen auch Hilfsmittel für kontinuierliche Integration eine große Rolle. Dazu gehören Buildsysteme wie zum Beispiel Jenkins und Konfigurations­management­systeme wie Git und Subversion.

[Gesamt:32    Durchschnitt: 4.9/5]