Die Werte im agilen Projektmanagement
von Gabriella Martin
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:
- Neue Rollenverständnisse für Entwickler, Manager und Kunden
- Wenig Planungs- und Vorbereitungstätigkeiten
- Eine interaktive und iterative Entwicklung
- Begrenzte, verhandelte Funktionalität
- 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 und agile Werte hingegen legt nahe, statt vorab Anforderungen oder Lastenhefte 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
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.
Agile Werte 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 in einem Pflichtenheft 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.
Agile Werte und 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 Build-Systeme wie zum Beispiel Jenkins und Konfigurationsmanagement-Systeme wie Git und Subversion.
Weitere Informationen
Lesen Sie mehr über Agile vs. Waterfall und finden Sie mehr Informationen über agiles Projektmanagement hier.