Agile Entwicklung


Die Entwicklung eines Projektes braucht viel Planung – wirklich? Dabei ändern sich meiner Erfahrung nach die Anforderungen an das Ergebnis während der Realisierung laufend. Und das ist gut, denn so kann der Kunde schon früh prüfen, ob das Produkt seinen Erwartungen entspricht. Agile Methoden machen es möglich, sind aber noch lange nicht der Weisheit letzter Schluss. Ich erklär' das mal.

    22. Mai 2016

Agile Entwicklung ist der „neue heiße Scheiß“. Das bedeutet nicht, dass agile Methoden in jedem Falle zum Erfolg führen oder besser sind als altbewährte Prozesse. Viele Punkte erscheinen mir übertrieben und die Sprache, mit der die „Anhänger“ dieses scheinbaren Kults ihren „neuen Glauben“ beschreiben („Manifest“, „Werte“, „Prinzipien“), wirkt beinahe fundamentalistisch verklärt. Und doch finde ich einige Herangehensweisen in meinem eigenen Workflow wieder und weiß sie durch die Beschäftigung mit agilen Konzepten inzwischen effektiver anzuwenden. Ich möchte jetzt keine Erklärung dieser digitalen Konfession abgeben – bemüh’ dafür doch bitte Google… oder DuckDuckGo… oder so. Vielmehr möchte ich hervorheben, welche Vorteile mir agile Ansätze bringen und wie ich diese anwende.

Detaillierte Planung macht Inspiration, Innovation und Kreativität unmöglich

Wenn ich ein Angebot schreibe, dann stehen unter dem Arbeitstitel die vereinbarten Ziele. Die Webseite soll doch bitte responsive sein und unbedingt ein Kontaktformular beinhalten. Dabei muss ich aufpassen, dass ich die Anforderungen des Kunden nicht zu streng und klar definiere – und zwar zu seinem und zu meinem Vorteil. Was würde passieren, wenn sich Anforderungen während der Entwicklung ändern oder wenn gar neue Ansprüche entstehen? Muss dann ein neuer Vertrag her? Wenn sich die Wettbewerbssituation des Kunden ändert, muss dann alles umgeworfen werden, weil das Produkt solche Änderungen nicht vorsieht oder bisher nicht variabel genug konzipiert wurde? Und was passiert, wenn dem Entwickler während seiner intensiven Arbeit am Produkt Lösungen und Möglichkeiten einfallen, die das Produkt bereichern könnten? Und das passiert ständig – denn ein Programmierer ist keine Rechenmaschine, viel mehr ein kreativer Problemlöser mit viel Erfahrung im Bereich der Entwicklung und Anwendung eines Produkts. Der Entwicklungsprozess muss meines Erachtens transparent und variabel sein. Eine Planung, die nach einer gewissen Zeit wieder umgestoßen wird, ist ihre Zeit nicht wert.

Der Kunde behält die Kontrolle

Viel besser ist es, wenn ein klares Ziel formuliert wird, das in vielen kleinen Schritten erreicht werden soll. Das ist der Kerngedanke bei agiler Entwicklung. Diese kleinen Schritte nennt man „Iterationen“ (von lat. iterare ,wiederholen‘). Sie beinhalten wiederum schnell erreichbare Ziele und liefern nach jeder Iteration ein funktionsfähiges Ergebnis, das mit dem Kunden besprochen werden muss und veröffentlicht werden kann.

So wächst ein Produkt Stück für Stück mit den Anforderungen des Kunden, kann aber bereits sehr früh veröffentlicht werden. Das verschafft dem Kunden einen klaren Wettbewerbsvorteil und er kann durch fortwährende Ergebnisse zufrieden gestellt werden. Außerdem wird er eng in die Entwicklung miteingebunden und kann auf einzelne Schritte der Entwicklung korrigierend oder erweiternd reagieren. Dadurch kann das Verwerfen von komplett fertigen Arbeiten verhindert werden. Das spart Zeit und Nerven – beim Kunden und bei mir. Der Auftraggeber sieht sein eigenes Produkt wachsen, immer mehr Funktionen kommen hinzu und sind nahezu live abrufbar und anwendbar. Er entwickelt womöglich selbst durch diese Inspiration neue Ideen und Verbesserungen für seines anfängliches Konzept. Das wiederum steigert die Qualität des Produkts.

Natürlich ist auch für mich ein persönliches Meeting am effektivsten und liefert durch die unmittelbare Kommunikation die besten Ergebnisse und minimiert das Potential für Missverständnisse. Allerdings ist dies organisatorisch und räumlich nicht immer möglich. Daher entwickle ich auf einem Server, der nicht öffentlich, dem Kunden aber 24/7 zugänglich ist. Dadurch hat er dieselben Einblicke wie ich, ist immer auf dem neusten Stand und man kann einzelne Meetings durch eine Mail oder ein Telefonat ersetzen. Auch das spart wieder Zeit.

Denn Zeit ist Geld

Und dies spart der Kunde, wie bereits erwähnt, z.B. durch einen schnellen Start seines Projekts. Das gefällt nicht nur dem Kunden, das gefällt auch mir. Klingt paradox. Aber…
Durch das Arbeiten in Iterationen ist die Entwicklung kein langwieriger ermüdender Prozess mehr. Es kommen immer wieder neue Herausforderungen für mich hinzu. Der Kunde hat die Möglichkeit Ziele zu setzen und zu priorisieren. Ich bekomme kurzfrequent Feedback zu meiner Arbeit. Auch lässt sich die Arbeitszeit der einzelnen Iterationen messen und durch eigene Erfahrung im Projekt die Dauer bis zum Abschluss der nächsten Iteration realistisch vorhersagen. Es erlaubt mir als Entwickler, ohne Zeitdruck zu arbeiten und das ist ein Vorteil für den Kunden. Denn wenn man stressfrei an etwas arbeitet, hat man die Zeit für mehr Kreativität, Inspiration und schließlich Innovation. Mehr Zeit die eigene Arbeit zu reflektieren und zu verbessern. Mehr Zeit um über Probleme nachzudenken und so eine elegantere und effektivere Lösung zu entwickeln, die sich am Ende qualitativ auf die Benutzerfreundlichkeit und Anwendbarkeit des Produkts auswirkt.

Fazit

Diese Ansätze sind keine Wissenschaft, sie sind unkompliziert, leicht umsetzbar, steigern die Effizienz und Kundenkommunikation und bieten Vorteile für alle Beteiligten. So kann ich mich stets motivieren, das bestmögliche Ergebnis abzuliefern.



Beispiel


Finales Ziel:
Webseite mit Design, das zu einem noch unbekannten Logo bzw. einer Marke passt, auf der sich Menschen registrieren können, um als Redner oder Teilnehmer an einer Konferenz Ende des Jahres beiwohnen zu können.

1. Iteration:
  • Verstehen (Recherche, Interview) des Kunden (Intention, Vorgehen, bisherige Erfolge,…)
  • Verstehen der Konferenz (Thema, Zielgruppe, Abläufe,…)
  • Design mehrerer Logos, welche die oben genannten Erkenntnisse berücksichtigen und visuell ausgestalten
  • Startseite: Erste Inhalte (Logo, Name der Konferenz, Aufmacher, Zeitpunkt / -raum,…)
  • Design mehrerer Startseiten mit gleichem Inhalt passend zu den Logoentwürfen
  • Impressum

1. Meeting (auf jeden Fall persönlich):
  • Vorstellen der Ergebnisse
  • Auswahl eines Logos & Designs durch den Kunden
  • Planung der 2. Iteration und Terminierung des nächsten Meetings: Es stellt sich heraus, dass der Kunde bereits erste Keynote Redner verpflichtet hat und möglichst schnell einen „Call of Papers" auf der Seite haben möchte.

2. Iteration:
  • Aufbereitung der Inhalte bzgl. dieser Redner
  • Einbinden der Redner ins ausgewählte Design
  • Realisierung eines Formulars zur Registrierung und zum Upload von wissenschaftlichen Arbeiten („Call of Papers“)

2. Meeting (gut elektronisch möglich):
  • Vorstellen der Ergebnisse
  • Feedback des Kunden
  • Auftrag zur Veröffentlichung des aktuellen Stands
  • Planung der 3. Iteration und Terminierung des nächsten Meetings: Priorität hat ein „User Management“

3. Iteration:
  • Kleinere Anpassungen aus dem Feedback umsetzen
  • Veröffentlichung der aktuellen Webseite
  • Realisierung eines internen Bereichs auf der Webseite zur Verwaltung der bisherigen Registrierungen („User Management“)