Agile Entwicklung

Keine Angst vor Scrum

Jürgen Egeling ist Geschäftsführer der punkt.de GmbH in Karlsruhe. Das mittelständische IT-Unternehmen entwickelt komplexe, webbasierte B2B-Anwendungen und begleitet namhafte Kunden bei der Umsetzung digitaler Geschäftsmodelle. Jürgen Egeling ist überzeugt: „Tragfähige Online-Geschäfte lassen sich nur in kurzen Feedback-Zyklen mit den Kunden entwickeln. Die Technik dafür ist bereit; das Management nicht.“
Agile Entwicklungsmethoden wie Scrum verändern das Verhältnis zwischen Auftragnehmern und Auftraggebern: Agenturen holen ihre Kunden stärker ins Boot, weil sie für den Erfolg eines agilen Projekts auf kontinuierliches Feedback durch ihre Klienten angewiesen sind.

Methoden wie Scrum stehen und fallen mit dem intensiven Austausch zwischen den Beteiligten. Auch die Kunden müssen sich umstellen und über den gesamten Projektverlauf hinweg aktiv mitarbeiten sowie einen engagierten Ansprechpartner bereitstellen. Dann profitieren sie davon, dass sie jederzeit direkten Einfluss auf die Projektentwicklung haben und über den Stand der Arbeiten im Bilde sind. Das Dienstleistungsverhältnis zwischen Agentur und Kunde wandelt sich zu einer Partnerschaft, die dem Auftraggeber mehr Transparenz als bei herkömmlichen Entwicklungsmethoden gibt. Sie stellt zudem sicher, dass das fertige Produkt exakt seinen Vorstellungen entspricht. Die Agentur wiederum kann sich durch das zeitnahe Feedback sicher sein, dass sie nicht an den Wünschen ihres Kunden vorbei entwickelt und kein Streit um vereinbarte Leistungen aufkommt.

Agile Entwicklungsmethoden haben sich aus der Erkenntnis entwickelt, dass sich Spezifikationen in IT-Projekten nie so exakt formulieren lassen, dass kein Interpretationsspielraum bei der Umsetzung mehr bleibt. Deshalb setzen Methoden wie Scrum auf kurze Feedback-Zyklen, die verhindern, dass Auftraggeber und Entwickler aneinander vorbeireden. So können Missverständnisse schnell ausgeräumt werden und alle auf ein gemeinsames Ziel hinarbeiten.

Der Kunde bestimmt die Entwicklungsrichtung

Bei Scrum vertritt der "Product Owner" den Auftraggeber über den gesamten Entwicklungszeitraum im Projektteam. Seine Aufgabe ist es, die einzelnen Anforderungen zu benennen und zu priorisieren. Das Entwicklerteam setzt entsprechend der vom Product Owner vorgegebenen Reihenfolge nach und nach die Anforderungen in sogenannten Sprints um. Zu jedem Sprint - dieser dauert zwischen einer und vier Wochen - darf der Product Owner neue Anforderungen definieren, bestehende Anforderungen abändern oder neu priorisieren.

Die Entwicklung auf Basis von Scrum läuft in mehr oder weniger kurzen Zyklen ab und ist dadurch äußerst flexibel und agil.
Die Entwicklung auf Basis von Scrum läuft in mehr oder weniger kurzen Zyklen ab und ist dadurch äußerst flexibel und agil.
Foto: Schwaber/Beede

Nach Ende des Sprints entscheidet er, ob er die Entwicklungsergebnisse akzeptiert. Damit trägt der Product Owner einen wesentlichen Teil der Verantwortung für den Erfolg des Projekts. Denn er kann als einziges Mitglied des Scrum-Teams den Business-Wert der einzelnen Anforderungen beurteilen und muss den Kurs justieren.

Lässt sich ein Auftraggeber auf die agilen Prinzipien ein, profitiert er von der Flexibilität der Methode und kann seine neue Software wesentlich früher produktiv nutzen als bei herkömmlichen Entwicklungsverfahren. Während beispielsweise bei der Entwicklung einer Website nach einem Wasserfallmodell erst nach Abschluss des Projekts der gesamte neue Auftritt in einem großen Release freigegeben wird, ist die Website bei einer Entwicklung mit Scrum bereits einsetzbar, wenn die Kernelemente fertiggestellt sind.

Im Video: Agile Softwareentwicklung - die Phasen eines Scrum-Projekts (1/2)

(Quelle: video2brain, Trainer: Udo Wiegärtner)

Da der Product Owner steuert, welche Teile zuerst implementiert werden, stehen dem Auftraggeber nach kurzer Entwicklungszeit die Teilbereiche zur Verfügung, die für ihn den größten Wert haben. Beispielsweise können so die Start- und die Produktseiten eines neuen Webauftritts online gehen, während Serviceseiten oder Social-Media-Elemente erst in einer späteren Phase folgen. Bei der Entwicklung mit Scrum kann der Kunde so schon die gewinnbringendsten Teile nutzen, während die weniger relevanten Funktionen nach und nach ergänzt werden.

Optmierung noch im Projektverlauf

Dieses Grundprinzip - Teile fertigzustellen, sie zu testen und zu optimieren -, erlaubt es darüber hinaus, gewonnene Erkenntnisse aus den ersten Phasen eines Projekts in die spätere Entwicklung einfließen zu lassen und bei bestehenden Komponenten nachzusteuern. Das Verhalten der User lässt sich nie zuverlässig vorhersagen. Zwar kann man sich an Erfahrungswerten orientieren, aber erst der Praxiseinsatz zeigt, ob die Nutzer eine neue Funktion in dieser Form annehmen. Bei Scrum gehen die im aktuellen Projekt gemachten Erfahrungen und die daraus abgeleiteten Optimierungen direkt in die Entwicklung der noch ausstehenden Funktionen ein.

Ein weiterer Vorteil von Scrum ist die Möglichkeit, Optimierungen und Erweiterungen mit Continous Delivery zeitnah in das Live-System einzuspielen. Von den Entwicklern fertiggestellter Code wird dabei zuerst auf Testsysteme geladen und dort geprüft. Diese Testsysteme sind, soweit möglich, 1:1-Abbildungen der Live-Systeme - angefangen von identischer Hardware über versionsgleiche Software bis hin zu Verkehrsdaten beispielsweise aus SAP. Falls dies aus datenschutzrechtlichen Gründen unmöglich ist, ersetzen anonymisierte Testdaten mit identischen Eigenschaften die echten Verkehrsdaten. Nach der erfolgreichen Prüfung auf dem Referenzsystem wird der neue Code automatisch auf das Live-System überspielt. So lassen sich kontinuierlich kurze Release-Zyklen von etwa 14 Tagen erreichen.

Dieses Vorgehen ermöglicht darüber hinaus flexible Tests neuer Features oder Layouts mit echten Nutzern. Eine neue Variante wird dabei nur auf einen Teil der Server eingespielt und nur ein Teil der Nutzer kommt damit in Berührung. Sind die Ergebnisse besser als bei der alten Version, wird sie auf das ganze System übertragen und die dabei gewonnenen Erkenntnisse fließen in die noch ausstehenden Entwicklungen ein. Wenn nicht, wird eine andere Variante ausprobiert. Dadurch lässt sich das Projekt noch in der Entwicklungsphase anhand von echten Kundenreaktionen verbessern und auch nach Projektabschluss weiter optimieren. Diese Integration kontinuierlicher Verbesserungen noch im Projektverlauf ist nur in einem agilen Entwicklungsmodell möglich.

Neue Fehlerkultur

Scrum unterscheidet sich von anderen Entwicklungsmethoden auch durch seinen Kosten-Nutzen-orientierten Umgang mit Fehlern. Ebenso wie es unmöglich ist, alle Anforderungen ohne Spielraum für Missverständnisse zu definieren, sind auch Fehler bei der Implementierung unvermeidbar. Während bei anderen Entwicklungsmethoden aber große Ressourcen investiert werden, um mögliche Fehler bereits im Vorfeld zu antizipieren und diese auszuschließen, beschränkt sich dies bei Scrum auf schwerwiegende Fehler. Kleinere Bugs werden erst mal in Kauf genommen. Was aber nicht heißt, dass sie im fertigen Produkt toleriert werden.

Im Video: Scrum - Sprint, die Taktfrequenz des Projekts (2/2)

(Quelle: video2brain, Trainer: Udo Wiegärtner)

Die Erfahrung lehrt, dass bei derartigen Fehlern der Aufwand für die Korrektur, einschließlich der folgenden Tests, meist nur einen Bruchteil der Zeit beansprucht, der aufgewendet werden müsste, um den Bug von vorneherein auszuschließen. Agile Entwicklungsmethoden sind in diesem Sinne fehlertolerant, da ihr Augenmerk auf dem schnellen Beheben auftretender Fehler liegt, statt große Ressourcen in deren Vermeidung zu investieren. Eine Voraussetzung dafür, dass die Softwarequalität am Ende trotzdem stimmt, ist ein zuverlässiges Test-Management. Im Projektalltag ermöglicht das einen wesentlich offeneren Umgang mit Problemen, weil sie nicht als Versagen einzelner Beteiligter wahrgenommen werden, solange mit den Fehlern konstruktiv umgegangen wird. Viele Unternehmen haben mit Scrum die Erfahrung gemacht, dass ihr Code bei einem richtigen Test-Management am Ende trotz geringerem Ressourceneinsatz eine niedrigere Fehlerquote aufweist als bei anderen Entwicklungsmethoden.

Lässt sich ein Kunde auf die agilen Prinzipien ein, hat er davon viele Vorteile: Neben der zielgenaueren Entwicklung und der höheren Flexibilität bei der Anpassung der Anforderungen im Projektverlauf profitiert er von der gesteigerten Transparenz. Er sieht nicht nur ständig, was entwickelt wird und kann nachsteuern, sondern er sieht auch, welche Ressourcen in welche Anforderungen investiert wurden. Beispielsweise ist es möglich, die einzelnen Arbeitsschritte auf Tickets festzuhalten und alle Zeiten darauf zu buchen. So sieht der Kunde tagesaktuell, wer wann wo wie lange an einem Ticket gearbeitet hat und was gemacht wurde. Er kann exakt nachvollziehen, wie viel Geld er für welche Leistung ausgegeben hat und kann damit besser beurteilen, ob sich ein Feature für ihn lohnt oder nicht.

Wenn der Kulturwandel gelingt, profitieren beide Seiten

Scrum verändert nicht nur das Verhältnis zwischen Auftraggeber und Auftragnehmer. Es führt auch zu mehr Flexibilität und Transparenz und damit zu mehr Offenheit. Das hat den Vorteil, dass beide Seiten jederzeit wissen, woran sie sind. Es bedeutet aber auch, dass sich keine der beiden Seiten mehr hinter langen Verträgen und dicken Lastenheften verstecken kann. Wenn sich beide Seiten auf das agile Entwicklungsmodell einlassen, profitieren am Ende auch beide - nicht nur von einer angenehmeren Zusammenarbeit, sondern auch von schnelleren und besseren Ergebnissen zu einem besseren Preis-Leistungs-Verhältnis. (sh)