Loading...

Agilität - Das Yin und Yang aus Methodik und Entwicklung

Fokus - Ablenkung vermeiden will gelernt sein

Agilität - Das Yin und Yang aus Methodik und Entwicklung


Was bedeutet es, "agil" zu arbeiten? Agilität lässt sich in vier Dimensionen fassen, die sich auch im Agilen Manifest wiederfinden:
• Geschwindigkeit,
• Anpassungsfähigkeit,
• Kundenzentriertheit und
• Mindset.

Das Agile Manifest ist die Grundlage für agiles Arbeiten in komplexen Umgebungen. Verabschiedet wurde es 2001 von Softwareentwicklern, die nicht nur eine agile Methodik, sondern auch eine "agile Entwicklung" zum Ziel hatten. Methodik und Entwicklung sind somit ein "Yin und Yang": zwei Kräfte, die sich ergänzen. Wir haben uns gefragt, wie sich die agilen Prinzipien auf die Entwicklung anwenden lassen.

Geschwindigkeit

Im Agilen Manifest wird Geschwindigkeit im iterativen Vorgehen erreicht: Eine "frühe und kontinuierliche Auslieferung" der Software ist "regelmäßig innerhalb weniger Wochen oder Monate" gewünscht. Geschwindigkeit und Effizienz hängen zusammen. Das Agile Manifest benennt die "effizienteste (…) Methode" Informationen zu übermitteln im Gespräch von "Angesicht zu Angesicht". Im besten Falle sind die Entwickler also auf einer Fläche und sprechen miteinander. Auftraggeber, Entwickler und Benutzer sollten ein "gleichmäßiges Tempo auf unbegrenzte Zeit" für eine "nachhaltige Entwicklung" halten können. Bei aller Geschwindigkeit ist "technische Exzellenz und gutes Design" nicht zu vernachlässigen, sie fördern vielmehr Agilität.

Für eine schnelle Entwicklung braucht es ein Team, das sich in verschiedenen Teilbereichen gut auskennt, wie DevOps, Datenbanken, Programmieren (je nach Anforderung). Zu Beginn der Produktentwicklung sollte die Überlegung stehen, wie eine lokale Entwicklungsumgebung aussehen kann. Damit kann sichergestellt werden, dass das Team inkl. Neuzugänge einfach, schnell und automatisiert das Produkt auf die lokale Entwicklungsmaschine installieren und starten kann.

Für eine schnelle Entwicklung ist eine größtmögliche Automatisierung notwendig, welche bereits in der lokalen Entwicklermaschine beginnt. Bevor das Programmieren starten kann, sollte die CI/CD Pipeline durchdacht werden. Wie können z. B. automatisierte Tests (Unit, RSpec, Cucumber) aussehen? Je besser die Automatisierung, umso eher kann das Entwickler-Team darauf vertrauen, dass sie die Tests bei der Entwicklungsarbeit unterstützen, statt nur den Standard für den Kunden (wie z. B. „Testabdeckung 100%“) zu erfüllen.

Viele moderne Frameworks haben hochoptimierte Testsysteme, die nicht den kompletten Test bei jedem Speichern durchlaufen lassen, sondern nur die Tests, bei denen der Code geändert wurde. Der Entwickler findet schon beim Speichern Bugs, statt erst später in der Pipeline. Hiermit kann die Geschwindigkeit und die Effizienz enorm gesteigert werden.

Anpassungsfähigkeit

"Heiße Anforderungsänderungen selbst spät in der Entwicklung willkommen", heißt es im Agilen Manifest. Das ermöglicht einen Wettbewerbsvorteil, weil dem Kunden früher ausgeliefert und der höchst mögliche Nutzen damit erzielt werden kann. Nicht nur Anforderungen sollten anpassbar sein, auch das Team. So sollte es in regelmäßigen Abständen das Verhalten reflektieren und bei Bedarf kollaborative bzw. organisatorische Änderungen ausprobieren. Fachexperten und Entwickler sollten "täglich zusammenarbeiten", um Fachlichkeit und Technik aufeinander abzustimmen.

Wenn Teams schneller entwickeln möchten, muss die Software anpassungsfähig bleiben. Mit den weiter oben beschriebenen Testautomatisierungen sind Anpassungen am Code unkompliziert möglich, da die automatisierten Tests auf der lokalen Entwicklungsumgebung kontinuierliches Feedback liefern, welche Auswirkungen sie am Produkt- Inkrement haben.
Empfehlenswert ist es dazu, Tests vor dem Code zu schreiben, damit die Schichten, Werkzeuge und das Mocken besser vorbereitet und die Tests somit schneller durchlaufen werden können. Darüber hinaus können zum Beispiel Aspekte wie Domain Driven Design – , mit oder ohne Microservices – die Qualität der Entwicklung von Produkten wesentlich verbessern. Dazu muss sich auch das Mindset der Teams von der reinen Umsetzung von User Stories, hin zu "echter" Selbstorganisation und Mitbestimmung wandeln.

Kundenzentriertheit

Grundsatz der Agilität ist außerdem, nie den Kunden aus den Augen zu verlieren. Kontinuierliches, direktes Kundenfeedback hilft, die erarbeiteten Inkremente und zukünftige Anforderungen zu hinterfragen, zu adaptieren und ggf. neu auszurichten. So werden kontinuierlich Kundenwerte geschaffen. Das Prinzip der "Einfachheit" hilft dabei, "die Menge, nicht getaner Arbeit zu maximieren".

Kundenzufriedenheit sollte messbar sein, erst dann kann sie wirklich beurteilt werden. Der PO sollte den Kundenwunsch am besten kennen. Doch nicht immer ist der PO gleich der Kunde, sodass Tools eingesetzt werden sollten, welche die Zufriedenheit des Anwenders messen können, wie A-B Test’s, Analyse Tools und Monitoring Tools.

Das Team sollte bestenfalls gemeinsam mit dem Kunden KPIs zur Messbarkeit des Erfolgs der Applikation und damit der Arbeit des Teams definieren. Haben Entwickler auch Einfluss auf die Kundenzufriedenheit? Ja! Sie können die technische Umsetzung so anwenderfreundlich wie möglich gestalten, um die Anforderung nicht nur fachlich korrekt, sondern auch ansprechend umzusetzen.

Mindset

Ohne ein agiles Mindset können auch die anderen Dimensionen nicht erfüllt werden. Vertrauen im Team muss dabei groß geschrieben werden. Dazu muss den Teams die Freiheit gewährt werden, sich selbst organisieren zu können. Selbstorganisiertes Arbeiten schafft "motivierte Individuen", welche in der Regel auch mehr Spaß am Entwickeln haben. Laut des Agilen Manifests entstünden so "die besten Architekturen, Anforderungen und Entwürfe".

Eine agile Vorgehensweise in der Softwareentwicklung wird nur dann den versprochenen Nutzen von Schnelligkeit, Flexibilität und Kundennähe erreichen, wenn auch die Entwicklung den Agilen Prinzipien folgt. Entwickler sind nicht nur für die Umsetzung der User Stories verantwortlich.

Auch in einem Dienstleisterverhältnis ist die gemeinsame Erarbeitung von technischen Strategien z. B. zum Aufbau einer (lokalen) Entwicklungsumgebung, der CI/CD Pipeline und der (Test-)Automatisierung vor Implementierung der fachlichen Anforderungen maßgebend. Agilität als iterative Entwicklung mit größtmöglichen Umsetzungsspielraum, frühem Anwenderfeedback und der Chance, von Sprint zu Sprint besser zu werden, soll nicht zuletzt Spaß machen. Das gelingt, wenn Entwicklung und Methodik im Gleichklang sind.

Kontakt

Michael Henninger

Michael Henninger

Scroll to Top