Ist Agilität in Kundenprojekten anwendbar?

Ein agiler Ansatz der Software-Entwicklung macht aus Sicht des Entwicklers reichlich Sinn, doch lassen sich die Konzepte auch im praktischen Einsatz im Agenturalltag etablieren?

Dieser Text ist in Gemeinschaftsarbeit mit Steffen Bartsch entstanden.

In der agiler Softwareentwicklung liegt der Fokus auf den zu erreichenden Zielen (bzw. dem fertigen Produkt) und den zur Umsetzung benötigten Methoden – unnötige Bürokratie im Vorgehen und stures Abwickeln eines Projektplans werden abgeschafft, um Platz für die wirklich wichtigen Werte zu machen: Kommunikation, Feedback und der darauf aufbauenden Entwicklung eines Produkts, welches an die tatsächlichen und nicht die vor Projektbeginn geplanten Bedürfnisse angepasst ist.

Egal für welche der agilen Vorgehensprozesse man sich entscheidet, ihnen gemein ist die Entwicklung in Iterationen - das klassische Wasserfallmodell ist tot: Heutige interaktive Software ist viel zu komplex, als dass man sie konzeptionell ausgereift im Vornherein planen könnte, ohne Fehler zu machen, die das Projekt schon nach der Hälfte scheitern lassen. Aber ist agile Entwicklung der Prozess, den man einem Kunden für sein Projekt verkaufen kann?

Agilität aus Entwickler-Sicht

Der Ansatz verspricht ein Höchstmaß an Nutzbarkeit der entwickelten Software - schließlich arbeitet man granular, Schritt für Schritt implementiert und verfeinert man vom Kunden gewünschte Features, stimmt den Entwicklungspfad ständig aufs neue auf sich ergebende Veränderungen ab. Grundlage dafür ist das Feedback vom Kunden, welcher – je nach agiler Methode mehr oder weniger – fest in der Entwicklung mit involviert ist. Somit ist man nicht mehr der Gefahr ausgesetzt, ein Konzept umzusetzen, was rein auf dem Papier entworfen und nicht praktisch (iterativ) getestet wurde. Es gibt kein unnötiges Verwerfen von implementierten Funktionen, welche sich bei späterer Betrachtung als nicht mehr nützlich erweisen und somit keine Verschwendung von Ressourcen mehr.

Echt stark - doch was und wie erlebt der Kunde den Prozess?

Der Kunde ist König

… und im Allgemeinen zu konservativ eingestellt, als dass er sich seine feste Projektvorstellung nehmen lassen würde. Wer beauftragt denn auch gerne jemaden, der einem sagt „Wir werden sehen, was am Ende dabei herauskommt…“. Das ist natürlich überspitzt gesagt, könnte aber für Kunden, die zum ersten Mal mit diesem Ansatz konfrontiert werden genauso klingen.

Agilität erfordert daher großes Vertrauen auf Kundenseite, schließlich wird er bei der Hand genommen und lässt sein (vielleicht durch lange Vorarbeit erstelltes) Konzept ein Stück weit los, um die Software zu bekommen, die er wirklich braucht (davon aber noch nichts weiß ;)).

Das wahrscheinlich größte Problem dürften allerdings die Kosten sein: Bei iterativer Entwicklung gibt es keinen großen Haufen von Funktionen (a.k.a. abgeschlossenes Projekt), den man im Voraus kalkulieren und in einem – auf jeden Fall einzuhaltendem – Kostenvoranschlag zusammenfassen kann. Es gibt feste Budgets, in welche die Entwicklungskosten passen müssen und oftmals zahlt die entwickelnde Seite (z.B. die Agentur) drauf, um das vorher zu klein kalkulierte Projekt doch noch zu vollster Kundenzufriedenheit fertig zu stellen. Hier könnte die feste Einbeziehung des Kundens heilend wirken: Er lenkt das Projekt und kennt den Zeitplan, weiss somit was im Budget liegt – er kann Prioritäten setzen, unnötige Features entfernen und seine Kosten steuern.

Die Mischung machts

Die Umsetzung des Projekts findet irgendwo zwischen diesen Sichtweisen statt und die Frage nach dem warum ist nicht leicht zu beantworten: Liegt es an den Kunden, die iterative Prozesse als unkomfortabel oder nicht praktikabel (weil nicht vorweg planbar) empfinden, oder an uns Entwicklern, die den Kunden zu wenig führen und ihn nicht einfach stark genug mit einbeziehen bei der Entwicklung eines auf seine Bedürfnisse zugeschnittenen Produkts?

Meine Erfahrungen im Agenturalltag haben mir bisher größtenteils Projekte gezeigt, bei denen in Vorausplanung entstandene Konzepte umgesetzt und nur viel zu selten an sich ergebene Entwicklungen angepasst wurden. Die Gründe dafür teilen sich oftmals beide Seiten.

Von produzierender Seite wird der Kunde nach dem Motto „Der zahlt nur, was wir geplant haben und wenn wir es ihm jetzt zeigen, will er hier und da Änderungen haben“ zu wenig mit in die Entwicklung einbezogen. Agile Entwicklung fordert aber auch vom Kunden das Verständnis dafür, selbst viel Zeit zu investieren. Hier könnte dann die Devise „Sie haben doch das Konzept, da steht alles drin“ lauten.

Kurskorrekturen bleiben selbst bei mittelgroßen Projekten einfach nicht aus – solche Schritte könnten jedoch ressourcensparender (weil früher erkennbar) gemacht werden. Ein agileres Miteinander von Entwickler und Kunde ist also gefordert – den ersten Schritt dazu müssen wir Entwickler gehen, denn der Kunde weiss (noch) nicht, was er will ;).

iOS app for GitHub

iOctocat

ist GitHub für die Hosentasche - deine Projekte und das was dort passiert immer dabei mit deinem iPhone und iPod Touch.
Die App ist