Skip to main content

Wenn Sie an eine leistungsstarke Organisation denken, haben Sie sich schon einmal gefragt, welche Best Practices sie befolgen, um diesen Status zu erreichen? Setzen sie auf agile oder DevOps-Ansätze?

Um ihre Ziele zu erreichen, verlassen sich diese Organisationen häufig auf eine Mischung aus agilen Werkzeugen zur Verwaltung von iterativer Entwicklung und adaptiver Planung, sowie auf DevOps-Tools, die Automatisierung, kontinuierliche Integration und Bereitstellung optimieren.

Das Ziel eines Entwicklungs- und Betriebsprozesses ist es, dem Unternehmen zu helfen, seine Anforderungen zu erfüllen, den Teammitgliedern Zusammenarbeit zu ermöglichen und Silos aufzubrechen, um Probleme zu lösen und schließlich die Projekte/Funktionen abzuschließen, an denen sie arbeiten, damit sie ihre täglichen oder monatlichen aktiven Nutzer erhöhen können – oder im Fall von Unternehmensanwendungen – die Funktionalitäten ihrer Anwendungen erweitern.

Want more from The CTO Club?

Create a free account to finish this piece and join a community of CTOs and engineering leaders sharing real-world frameworks, tools, and insights for designing, deploying, and scaling AI-driven technology.

This field is for validation purposes and should be left unchanged.
Name*

Wenn Teams in Silos arbeiten, entstehen Kommunikationslücken, die wiederum zu Chaos führen. Wenn Teams dagegen im Einklang zusammenarbeiten, sind sie effektiver. 

Im Rahmen dieses Artikels werde ich agile und DevOps-Ansätze, Beispiele für den Einsatz spezifischer Methoden sowie die Auswirkungen auf das Testen in diesen Szenarien erläutern. 

Agile Softwareentwicklungspraktiken

Im Vergleich zum Wasserfallmodell legt agile Entwicklung Wert auf eines der Kernprinzipien, nämlich die Kunden frühzeitig im Prozess und durch kontinuierliche Auslieferung zufriedenzustellen. Kontinuierliche Auslieferung ist nur möglich, wenn das Qualitätsteam frühzeitig in den Prozess eingebunden und regelmäßig mit ihm kommuniziert wird. 

Agiler Softwareentwicklungsprozess.

Aktuell befinden sich einige kleine bis mittelgroße Unternehmen in einem Zustand, in dem sie weder einen agilen Ansatz noch das Wasserfallmodell komplett verfolgen, sondern eine Mischung aus beidem. Diese sogenannten agilen Teammitglieder konzentrieren sich so sehr auf detaillierte Prozesse wie 30-minütige Stand-ups und 60-minütige Retrospektiven, dass sie den Return on Investment aus den Augen verlieren, was dazu führt, dass viele Fehler erst in der Produktion entdeckt werden. 

Upgrade your inbox with more tech leadership wisdom for delivering better software and systems.

Upgrade your inbox with more tech leadership wisdom for delivering better software and systems.

This field is for validation purposes and should be left unchanged.
Name*

Hat die Branche wirklich von der Wasserfallmethode zum agilen Ansatz gewechselt? 

Waren Sie schon einmal Teil einer Organisation (von der Sie dachten, dass sie agile Softwareentwicklungsprozesse verfolgt), nur um festzustellen, dass das Qualitätsteam erst nach Abschluss der Entwicklung für Tests zuständig ist? 

In diesem Beispiel wurde es trotzdem als agil bezeichnet, weil die Entwickler an mehreren Branches (oder Funktionen) zugleich iterativ gearbeitet haben. Doch wenn es darum ging, die Funktionen zu testen, warteten sie, bis die gesamte Entwicklung abgeschlossen war – was dem Kern der Wasserfallmethode entspricht. Allerdings möchten Unternehmen schneller vorankommen, um ihre Kundenbasis zu erweitern, wodurch Teams häufig technische Schulden anhäufen. 

Die beste Lösung für dieses Problem besteht darin, das eigene Unternehmen vollständig agil zu machen und eng mit dem Qualitätsteam iterativ zusammenzuarbeiten. Dazu gehört, alle Beteiligten zu überzeugen, die Konsequenzen eines fehlenden Umstiegs zu verstehen und wie sich dies auf das Endbenutzererlebnis auswirkt. 

Agile Frameworks und deren Varianten

Im Rahmen dieses Artikels gehe ich auf zwei der beliebtesten agilen Frameworks ein:

  1. Scrum
  2. Kanban

Scrum ist eine agile Methodik in der Softwareentwicklung, die auf iterativen und inkrementellen Prozessen basiert. Es sieht eine zeitlich fixierte Entwicklungsphase vor, die als Sprint bezeichnet wird. Die Dauer eines Sprints variiert je nach Organisation und reicht von wöchentlich bis monatlich oder vierteljährlich.

Es gibt eine Sprint-Planungssitzung, gefolgt vom Sprint, in dem Umsetzung und Tests stattfinden (einschließlich täglicher Stand-ups), und schließlich endet alles mit einer Retrospektive. 

Scrum-Methodik.

Scrum wird meistens in Produktentwicklungsteams eingesetzt, bei denen die Teammitglieder ihre Arbeit zeitlich begrenzen müssen, um Kundentermine einzuhalten. Es findet vor allem in B2C-Anwendungen Anwendung, da neue Funktionen nicht mehr neu wären, wenn man zu lange wartet – jemand anderes könnte sie inzwischen schon umgesetzt haben! 

Bei B2B-Anwendungen, die in der Regel von großen Unternehmen eingesetzt werden, ist eine angepasste Version der agilen Methodik namens SaFe - Scaled Agile Framework weit verbreitet. 

Die meisten Projekte in großen Unternehmen fallen in eine der folgenden Kategorien:

  1. Team-Ebene
  2. Programmebene
  3. Portfolio-Ebene

Team-Ebene-Projekte sind funktionsbasierte Entwicklungen, bei denen jedes Teammitglied für sein Projekt und seine Prozesse verantwortlich ist. Diese Teams verwenden je nach Art ihrer Arbeit meist Scrum oder Kanban.

Wenn die Teams Forschungs- & Entwicklungsorganisationen oder Testautomatisierung angehören, ist es zwingend erforderlich, dass sie sich an Kanban halten, das weniger streng ist; das Ziel besteht eher darin, die aktuelle Aufgabe zu beenden, als sich von der nächsten "glänzenden" Aufgabe ablenken zu lassen! Wenn die Teams zur Produktentwicklung gehören, tendieren sie dazu, Scrum-Prozesse zu nutzen. 

Programmebene-Projekte umfassen mehrere Teams, die auf ein bestimmtes Ziel hinarbeiten, wie eine AWS-Migration. Obwohl dieses Projekt auch in die Kategorie Portfolio-Projekt fallen könnte, würde ich behaupten, dass es nicht zwingend Auswirkungen auf HR- oder Buchhaltungsteams hätte.

In diesem Fall könnte das Projekt "AWS-Migration" sich aufgrund unvorhersehbarer Probleme über Monate hinziehen, sodass der Fokus darauf liegt, die AWS-Migration erfolgreich abzuschließen, während sie in begründbare Sprints aufgeteilt wird. 

Portfolio-Ebene-Projekte beziehen verschiedene Organisationen innerhalb des Unternehmens mit ein; ein Beispiel wäre die Implementierung von JIRA. Jede Organisation benötigt individuell auf ihre Bedürfnisse zugeschnittene JIRA-Workflows. Personalabteilungen benötigen kein Testen; der Schwerpunkt liegt hauptsächlich darauf, spezifische Anforderungen der Mitarbeitenden zu erfüllen, und sobald dies erfolgt ist, wird die Aufgabe als „abgeschlossen“ markiert.

Agile-Methoden sollten von Organisationen übernommen werden, die dafür bekannt sind, sich stetig zu verändern. Aber auch diese Änderungen müssen getestet und Bugs behoben werden, wobei das Testen nicht zwangsläufig automatisiert ist – was zu längeren Prozesszeiten führen kann.

Schließlich, wenn die Features bereit zur Bereitstellung sind, werden sie an das Build/Ops-Team übergeben. Das Testen erfolgt daher iterativ im Vergleich zum Wasserfallmodell, verschiebt sich aber nicht viel weiter nach links, da der Fokus nicht auf kontinuierlichem Testen und Liefern liegt. Daher ist der DevOps-Ansatz notwendig! 

DevOps-Ansatz

Der DevOps-Ansatz konzentriert sich auf Aspekte, die über Entwicklung und Testen hinausgehen, und setzt auf eine vollständig automatisierte CI/CD-Pipeline inklusive Überwachung. Während Agile Veränderungen begrüßt, fokussiert sich der DevOps-Ansatz darauf, kontinuierliches Testen und Bereitstellen zu etablieren, um sicherzustellen, dass häufige Releases bei den Endbenutzern erfolgreich sind. 

Das Ziel des IT-Betriebsteams ist es, den Softwareentwicklungsprozess so zu skalieren, dass das Schreiben und Aktualisieren von Code beschleunigt wird, der für die Erstellung neuer Anwendungen und Services sowie für die Aktualisierung von Features im IT-Team verantwortlich ist.

Auch bezüglich der Teamstruktur arbeiten heutzutage Qualitäts- und IT-Betriebsteams oft in der gleichen Organisation, um eng zusammenzuarbeiten. Tatsächlich wurde eine neue Rolle namens TestOps eingeführt, die sich speziell auf das Einrichten von CI/CD-Pipelines konzentriert, in denen automatisierte Tests gegen Pull Requests ausgeführt werden und somit dem Entwicklungsteam direktes Feedback geben.

Automatisiertes Testen ist entscheidend, um Testaufwände zu skalieren, aber sein Wert geht verloren, wenn es nicht Teil von kontinuierlichem Testen und einem kontinuierlichen Release-Deployment-Zyklus ist. Daher sind TestOps-Mitarbeiter stets mit der Wartung der automatisierten Testinfrastruktur beschäftigt.

Dies stellt sicher, dass die Mitglieder des Betriebsteams sich darauf konzentrieren, eine erstklassige Infrastruktur für die Softwareentwicklung bereitzustellen, ohne durch Testinfrastrukturen abgelenkt zu werden. 

Der DevOps-Ansatz.

Es gibt heutzutage viele Tools und DevOps-Praktiken, die den Gesamtprozess optimieren. 

  • Eine Terraform-State-Datei beschreibt einen Infrastruktursatz, der als eine Einheit definiert und verwaltet wird – so werden verschiedene Test- und Entwicklungsumgebungen definiert und gehandhabt. Terraform hilft bei der Konfiguration von Servern, aber wir benötigen eine Infrastruktur, um diese Server zu betreiben. 
  • AWS stellt die Infrastruktur über EC2-Instanzen bereit, die derzeit die kostengünstigste Möglichkeit sind, diese Server zu konfigurieren und zu betreiben. Einen Schritt weiter: Wenn dein Tech-Stack viele Microservices umfasst, kannst du mit Docker Compose mehrere Docker-Umgebungen für Container definieren und betreiben.
  • Ansible automatisiert die Einrichtung von Maschinen, um beliebige Prozesse oder Server laufen zu lassen. 
  • Kubernetes hilft dabei, einen Cluster dieser EC2-Instanzen als Pod zu verwalten und plant Container so ein, dass sie basierend auf den verfügbaren Rechenressourcen auf diesem Cluster ausgeführt werden. 

Sollten Sie Agile oder DevOps verwenden?

Während die Debatte um Agile Softwareentwicklung vs. DevOps-Ansatz in Unternehmen ständig geführt wird, ist es am sinnvollsten, sich anhand folgender Fragen zu orientieren:

  • Wie anpassungsfähig ist unsere Organisation, wenn es um neue Technologien geht? 
  • Können wir unseren Wettbewerbern in Bezug auf die Qualität unserer Produkte entgegentreten? 
  • Werden die Kunden unsere Produkte voraussichtlich nutzen, weil sie deren Erwartungen erfüllen? 

Wenn die Antworten auf die obigen Fragen eine Art Verneinung beinhalten, dann ist es an der Zeit, mehr auf eine Kombination beider Ansätze zu setzen und diese individuell anzupassen.

Die ideale Softwareentwicklungsmethodik

Der entscheidende Unterschied zwischen auf agilem und auf DevOps--basierten Softwareentwicklungsprozessen besteht darin, dass erstere sich stärker auf die Möglichkeit ständiger Veränderungen konzentriert, während letztere auf kontinuierliches Testen, Ausliefern und Bereitstellen abzielt. Die Zusammenarbeit zwischen Entwicklungs- und Betriebsteams ist entscheidend, damit das Dev-Team nicht blockiert wird. 

Meiner Meinung nach sollte ein idealer Softwareentwicklungsprozess Folgendes umfassen:

  • Umgang mit Kunden-/Nutzer-Personas und Einbindung von Kundenfeedback
  • Fokussierung auf Best Practices, um die Ansammlung technischer Schulden zu vermeiden
  • Kontinuierliche Verbesserung, kontinuierliches Testen, kontinuierliche Integration, kontinuierliche Auslieferung, kontinuierliche Bereitstellung und Überwachung

So würde der Prozess aussehen:

Kundenzentrierte, KI/ML-basierte Methodik.

Der Umgang mit verschiedenen Kunden-Personas ist nicht auf Produktmanagement-Teams beschränkt. Am Ende des Tages: Warum entwickeln wir diese Produkte? Was ist der Zweck dieser Produkte, wenn sie nicht von Kunden genutzt werden? 

Nehmen Sie das klassische Beispiel von Nokia – sie häuften technische Schulden an, weil sie mit den Markttrends, insbesondere Apples Innovationen, nicht Schritt hielten. Sie konzentrierten sich darauf, strikte Sprint-Zyklen durchzuführen, nur um am Ende vergessen zu werden! 

Alle Unternehmen sollten verstehen, warum ihre Features entwickelt werden und welche Kundengruppe sie damit ansprechen. Das stellt sicher, dass wir nutzerzentrierte Funktionen entwickeln. 

Wenn ein neues Produkt veröffentlicht wird, egal ob mobile Anwendung oder Webanwendung, sollte es immer einen Weg für Kunden geben, Feedback zu hinterlassen. Nicht alle Unternehmen verfolgen einen strikten Prozess, bei dem eng mit dem Kundensupport zusammengearbeitet wird. 

CI/CD

Setzen Sie schließlich auf KI/ML-basierte kontinuierliche Integration und kontinuierliche Auslieferung. Wenn ein Projekt fehlschlägt, bedeutet das nicht zwangsläufig ein fehlendes Skillset im Team, sondern eher fehlende Tests und das Versäumnis, Fehler frühzeitig in der Entwicklung zu erkennen.

Aber manchmal treten trotz ausreichender Tests und Automatisierung Probleme auf – wenn also ein Empfehlungssystem existieren würde, das feststellt, wann ein Release erfolgen sollte und wann nicht, könnten unter Umständen solche katastrophalen Fehler vermieden werden.

Häufige Iterationen helfen dem Entwicklungsteam zu verstehen, was funktioniert und was nicht, und unterstützen dabei, über Skalierbarkeit nachzudenken. Der Haken daran: Es ist zeitintensiv! Wenn ein weiteres Empfehlungs-/Vorhersagesystem in der Lage wäre, Kundendaten zu sammeln und vorherzusagen, ob ein bestimmtes Feature voraussichtlich Anklang findet oder bereits vor dem Entwicklungsbeginn scheitert, könnte dies den Prozess zur Erstellung eines hochwertigen Produkts von Tag 1 an optimieren! 

Das übergeordnete Ziel ist es, dass sich Geschäftserfolge schneller vervielfachen, wenn diese Best Practices in den Entwicklungsprozess integriert werden. 

Abschließende Gedanken

Am Ende spielen sowohl Agile als auch DevOps entscheidende Rollen in der modernen Softwareentwicklung, doch die richtige Wahl hängt von den Zielen, der Teamstruktur, den Preisoptionen und den Projektanforderungen Ihrer Organisation ab.

Agile konzentriert sich auf iterative Entwicklung und Flexibilität, während DevOps kontinuierliche Auslieferung, Automatisierung und die Zusammenarbeit zwischen Entwicklung und Betrieb betont. Viele Unternehmen erzielen Erfolge, indem sie beide Ansätze kombinieren, um Effizienz und Qualität zu maximieren. Unabhängig davon, welchen Weg Sie wählen, ist es entscheidend, Ihre Tools und Prozesse entsprechend auszurichten, um Innovationen voranzutreiben und Mehrwert schneller zu liefern.

Um weitere Einblicke zur Optimierung Ihrer Entwicklungsabläufe zu erhalten und stets am Puls der Branche zu bleiben, abonnieren Sie den Newsletter des CTO Clubs.