Klassische vs. Agile Software-Entwicklung: Ein Blick auf den Wandel in der Kultur
6 schnelle Fragen an unseren Cloud-Experten zum Kulturwandel in der Software-Entwicklung
Simon: „Hey Patrick, wie hat man früher Software entwickelt?“
Patrick: „Man setzte sich mit dem Kunden (oder auch Endbenutzer) zusammen und erarbeitete in langen Verhandlungsrunden ein Lasten- bzw. Pflichtenheft. Dann verschwand man für einen verabredeten Zeitraum von 6, 12 oder noch mehr Monaten im stillen Kämmerlein und kam dann mit einem fertigen Produkt wieder raus. Wenn der Kunde unzufrieden war, pochte man auf das vereinbarte Pflichtenheft und verhandelte die nächste Runde.
Das starre Festlegen auf ein vereinbartes Ziel in (mehr oder weniger) ferner Zukunft führt zu den bekannten Effekten: Sich verändernde Anforderungen werden erst nach Abschluss des aktuellen Zyklus berücksichtigt, Missverständnisse bzw. Widersprüche werden ad-hoc ohne große Rücksprache gelöst. Beides ist nur selten im Sinne des Kunden.
Das Endergebnis ist ein langsamer Zyklus aus Releases, die den Anforderungen von vor 12 Monaten entsprechen, wie diese damals verstanden wurden. Dieses Modell betrachtet die Software-Entwickler als reine „Code-Produzenten”: Anforderungen sollen nach einem vorgegebenen Schema in Code umgesetzt werden."
Simon: „Klingt nicht allzu kommunikativ, oder?“
Patrick: „Nein, absolut nicht. Der klassische Ansatz der Software-Entwicklung hatte mehrere Mängel: Fehlende Zusammenarbeit bzw. Kommunikation zwischen den Teams, begrenzte Entscheidungsgewalt für die Teammitglieder und man fokussierte sich zu stark auf individuelle Rollen (statt interdisziplinärer Arbeit)."
Simon: „Und in der agilen Software-Entwicklung ist das anders?“
Patrick: „Das genaue Gegenteil: Der agile Ansatz betont Zusammenarbeit und Kommunikation zwischen den Teammitgliedern, hebt Silos auf und fördert interdisziplinärer Arbeit. Dieser Ansatz beinhaltet die Verschiebung der Entscheidungshoheit zum Entwicklungsteam. Technische Entscheidungen werden von den Teammitgliedern getroffen, die über die notwendige Expertise verfügen.
Indem die Entwickler befähigt werden, Entscheidungen zu treffen und Verantwortung für ihre Arbeit zu übernehmen, schafft der agile Ansatz eine Kultur der Rechenschaft und Verantwortung. Dies wiederum führt zu qualitativ hochwertigeren Produkten, die effizienter und schneller geliefert werden. Regelmäßiges Kundenfeedback wird gesucht, um sicherzustellen, dass das Endprodukt den Bedürfnissen und Erwartungen der Benutzer entspricht."
Simon: „Wie entwickelt man also Software agil?“
Patrick: „Egal, nach welchem Muster man Agilität implementiert (Scrum, Kanban etc.), alle haben eine Sache gemeinsam: Sie setzen auf kurze Zyklen und kleine, inkrementelle Updates bzw. Releases. Schon die Verkürzung der Umlaufzeit bewirkt bereits, dass veränderte Anforderungen mit kurzem Vorlauf in die Entwicklung einfließen können. Durch kompakte Zyklen und wiederholte Feedback-Runden werden Fehlentwicklungen bzw. Missverständnisse frühzeitig erkannt. Dadurch kann man auf diese direkt reagieren, ohne dass man einen langfristigen Plan über den Haufen werfen muss.
Dies setzt voraus, dass der Ablauf nicht bis ins kleinste Detail in Stein gemeißelt ist. Vielmehr ist darauf zu achten, dass eine langfristige Planung sich auf strategische High-Level Ziele konzentriert und der eigentlichen Umsetzung nicht die Flexibilität nimmt."
Simon: „Was sind die Vorteile für DevOps und Betrieb?“
Patrick: „Im traditionellen Ansatz waren Entwicklungs- und Betriebsteams oft isoliert voneinander und es gab wenig Kommunikation bzw. Zusammenarbeit. Dies führte zu einem langsamen und umständlichen Prozess für die Entwicklung und Bereitstellung von Anwendungen. Man verließ sich oft auf manuelle Prozesse und Übergaben zwischen Teams, was zu Fehlern und Verzögerungen führte. In zeitgemäßer Software-Entwicklung geht man da nun andere Wege.
DevOps unterstützt Skalierbarkeit und Flexibilität. Der moderne Ansatz betont Containerisierung und cloudbasierte Infrastruktur, was eine einfachere und effizientere Skalierung von Anwendungen ermöglicht.
Unterm Strich ermöglicht es eine höhere Kundenzufriedenheit. Mehr Zusammenarbeit, bessere Feedback-Schleifen: Entwicklerteams sind damit imstande, am Ende wertvollere Anwendungen zu liefern.
Die Umstellung auf einen modernen, agilen und DevOps-basierten Ansatz bringt erhebliche kulturelle Herausforderungen mit sich, die bewältigt werden müssen, um den Erfolg zu gewährleisten. Organisationen müssen bereit sein, Zusammenarbeit, Experimente und kontinuierliches Lernen zu fördern und sich dazu verpflichten, neue Fähigkeiten und Kenntnisse zu erwerben."
Simon: „Dein Tipp: Wie kommt man als Unternehmen von der alten Welt in die neue?“
Patrick: „Um diese Umstellung erfolgreich zu gestalten, müssen Organisationen in Schulung und Weiterbildung investieren, eine Kultur des Vertrauens und der Transparenz schaffen und einen ganzheitlichen Blick auf den Transformationsprozess werfen. Dies bedeutet, sich nicht nur auf Technologie und Tools zu konzentrieren, sondern auch auf die Menschen und Prozesse, die der Transformation zugrunde liegen. Kommunikation und Zusammenarbeit sind der Schlüssel zum Erfolg, ebenso wie die Bereitschaft zu experimentieren und zu iterieren, um herauszufinden, was am besten funktioniert."