Die Magie schneller Softwarebereitstellung
Unvorhersehbare Ereignisse wie die Pandemie können schnelle Markteinführungen und kurzfristige Anpassungen der Produkte eines Unternehmens an neue Marktbedingungen und Kundenbedürfnisse erforderlich machen. Unternehmen, die nicht in der Lage sind, auf Marktveränderungen zu reagieren, geraten schnell ins Hintertreffen: Trotz gründlicher Planung und agiler Methoden dauern Projekte doppelt so lange und werden dreimal so teuer wie ursprünglich erwartet. Software erreicht erst nach monatelanger Entwicklungszeit die Marktreife – und ist trotzdem noch voller Bugs. Der Markt – und damit die Konkurrenz – scheint doppelt so schnell zu sein wie die eigene Organisation. Der Marktdruck ist enorm. Kommt Ihnen das bekannt vor? Frustrierend, nicht wahr?
Warum schaffen es einige Unternehmen, Software schneller zu entwickeln und einzusetzen als andere – bei deutlich besserer Softwarequalität? Ein genauerer Blick auf die historische Entwicklung der Software-Engineering-Praktiken liefert einige wertvolle Erkenntnisse: Immer wieder gab es Durchbrüche mit drastischen Verkürzungen der durchschnittlichen Softwareentwicklung. Dank der Bewegung für agile Softwareentwicklung in den frühen 2000er Jahren dauerte es beispielsweise plötzlich nur noch Monate statt Jahre bis zur Marktreife. Mit der weit verbreiteten Einführung von Cloud-Technologien in den 2010er Jahren sanken die Bereitstellungszyklen von sechs Monaten auf wenige Wochen.
Wenn es jedoch um die Häufigkeit der Softwarebereitstellung geht, klafft bei vielen Unternehmen immer noch eine große Lücke zwischen Wunschdenken und der harten Realität. Warum gelingt es Ihrem Unternehmen trotz der Verfügbarkeit von Cloud-Technologien und agilen Praktiken nicht, voranzukommen? Und warum schafft es Ihre Konkurrenz, mit Warp-Geschwindigkeit zu fliegen, sich an Marktveränderungen und Kundenfeedback anzupassen und gleichzeitig Funktionen in extrem kurzen Zyklen zu entwickeln und fehlerfrei bereitzustellen?
Liegt es daran, dass Ihre eigenen Entwickler nicht gut genug sind? Brauchen Sie mehr Rockstar-Ninja-Entwickler in Ihrem Team? Arbeiten zu wenige Leute an dem Projekt? Ist das Altsystem so schlecht?
Hier können wir Sie beruhigen: Es liegt nicht an den Entwicklern und auch nicht an den Altsystemen. In den allermeisten Fällen liegt es einfach an der falschen Herangehensweise an Entwicklungsprozesse oder oft auch an der konkreten Anwendung agiler Methoden.
Fast jedes Unternehmen setzt heute agile Methoden in der Softwareentwicklung ein. Allerdings werden diese Methoden nicht immer richtig verstanden. Wir beobachten immer wieder, dass Scrum starr – fast biblisch – nach dem Regelwerk angewandt wird, ohne die zugrunde liegende Denkweise zu würdigen. Das führt dazu, dass die Zeremonie wichtiger wird als die Ergebnisse. In anderen Fällen werden Scrum-Methoden wie Stand-ups mit traditionellen Wasserfallmodellen kombiniert: Große Projekte werden in Phasen geplant und durchgeführt, wobei jede einzelne Phase aufeinander aufbaut und in einer festen Reihenfolge abläuft. Gerade größere, traditionelle Unternehmen mit starken Hierarchien neigen dazu, dem Wasserfallmodell zu folgen.
Die Methode ist nicht das Ziel, sie ist ein Hilfsmittel, um das Ziel zu erreichen. Sprints und Stand-ups allein machen Organisationen nicht auf magische Weise agil. Unternehmen müssen ihre Team- und Kommunikationsstrukturen so entwickeln, dass sie agile Prozesse überhaupt erst ermöglichen. Das Conway'sche Gesetz besagt: Die Kommunikationsstruktur einer Organisation spiegelt sich strukturell immer in den Systemen wider, die sie entwickelt. Dieser Zusammenhang zwischen den Eigenschaften einer Organisation und der Architektur des von ihr geschaffenen Produkts wurde in zahlreichen Studien nachgewiesen. Um echte Agilität zu erreichen und Produkte möglichst schnell und fehlerfrei zu entwickeln und einzusetzen, müssen Unternehmen ihre Team- und Organisationsstrukturen so gestalten, dass das Entwicklungsteam schnelle Feedbackschleifen und größtmögliche Handlungsspielräume erhält.
Dies kann nur mit dem DevOps-Mindset und dem "Team First"-Ansatz erreicht werden: Das Entwicklungsteam muss sich selbst organisieren können - und es muss alle Fähigkeiten und Rollen umfassen, die für die Entwicklung (Dev) und den Betrieb (Ops) des Produkts erforderlich sind - es gilt das Mantra "you build it, you run it".
Natürlich gibt es je nach Branche feste Punkte, die das Team während des Entwicklungsprozesses berücksichtigen muss, wie etwa Compliance- und Sicherheitsaspekte. Davon abgesehen muss das Team aber in der Lage sein, nach dem Best-Practice-Ansatz eigenständig zu entscheiden, welche Elemente eines Produkts auf welche Weise und in welcher Reihenfolge gebaut werden. Dies hilft zu vermeiden, dass Teams an starren Architekturen, organisatorischen Zwängen und eingebrannten Spezifikationen arbeiten, anstatt praktische Lösungen für ein gewünschtes Feature zu finden.
Die zweite Säule der modernen agilen Softwareentwicklung ist das schnelle Feedback sowie die kontinuierliche, testgesteuertes Deployment und die häufige und konstante Auslieferung von Code in inkrementellen kleinen Schritten. Im Gegensatz zu traditionellen Methoden, bei denen der Code erst nach monatelanger Entwicklungszeit bereitgestellt wird, erfolgt die Bereitstellung von Code für die Produktion heute stündlich oder sogar minütlich. Voraussetzung dafür ist eine stabile und automatisierte Entwicklungs- und Testinfrastruktur, die es dem Team ermöglicht, das Produkt kontinuierlich zu testen und das gewonnene Feedback direkt in den Entwicklungsprozess einfließen zu lassen. Diese Methode erhöht nicht nur die Geschwindigkeit, mit der Software ausgeliefert werden kann, sondern hat auch erhebliche Auswirkungen auf deren Qualität. Durch die testgetriebene Entwicklung können kleinste Fehler im Code sofort erkannt und vom Team korrigiert werden. Auf diese Weise entwickelte Softwareprodukte und -funktionen erreichen nicht nur viel schneller die Marktreife, sie sind auch wesentlich stabiler, zuverlässiger und sicherer.
Wer mit den rasanten Marktveränderungen Schritt halten und der Konkurrenz einen Schritt voraus sein will, kommt an der DevOps-Mentalität nicht vorbei. Kein Wunder, dass dieser Ansatz in den letzten Jahren enorm an Popularität gewonnen hat. Stand-ups und Sprints allein reichen nicht aus, um einen schnellen Fluss von der Entwicklung bis zur Bereitstellung zu ermöglichen. Es braucht auch die richtige Organisationsstruktur, die es dem Entwicklungsteam ermöglicht, sich selbst zu organisieren, schnell auf Feedback zu reagieren und Software-Updates in häufigen und kleinen Schritten zu liefern.
Die gute Nachricht ist, dass jedes Unternehmen und jedes Team so organisiert und geschult werden kann, dass es das volle Potenzial des DevOps-Ansatzes und der Cloud-Technologien ausschöpfen kann. Doch so herausfordernd dies auch klingen mag, es bedeutet auch ein Umdenken und ein Abschiednehmen von altbekannten Methoden.