DevOps stellt die jüngste Weiterentwicklung im Bereich der Softwareentwicklung dar und ist eine direkte Antwort auf die Herausforderungen, die durch agile Methoden aufgeworfen wurden. Während sich der Übergang von traditionellen Wasserfallmodellen hin zu agilen Praktiken auf das Tempo und die Zusammenarbeit im Entwicklungsteam konzentrierte, geht DevOps einen Schritt weiter. Es fordert nicht nur eine Veränderung innerhalb der Entwicklungsteams, sondern auch eine stärkere Einbindung von weiteren organisatorischen Bereichen wie Betrieb, Infrastruktur und sogar Kundenbetreuung. Diese Erweiterung des Kollaborationskreises hat tiefgreifende Auswirkungen auf die Rolle des Testers und die Art und Weise, wie Tests durchgeführt werden.

Im klassischen Wasserfallmodell waren Tester für die gesamte Teststrategie und -durchführung verantwortlich. Sie entwickelten eigene Testideen, erkundeten die Software eigenständig und fanden Fehler, die sie dann berichteten. Testen war die Domäne der Tester – ihre Aufgabe, ihre Identität innerhalb des Teams. Das Team arbeitete zwar mit Entwicklern, Analysten und Designern zusammen, aber das Testen war stets eine eigenständige, klar abgegrenzte Tätigkeit.

Mit dem Übergang zu Agile wurde die Verantwortung für das Testen auf das gesamte Entwicklungsteam ausgeweitet. In einem agilen Umfeld denken nicht mehr nur Tester an Testideen, sondern das ganze Team trägt zur Entdeckung und Behebung von Problemen bei. Die Grenzen zwischen Entwicklung und Testen verschwimmen, und Tests werden zu einem iterativen Prozess, der in den kontinuierlichen Entwicklungszyklus integriert wird. Darüber hinaus verändert sich auch die Beziehung des Teams zur Geschäftsseite. Anforderungen werden zunehmend kollaborativ entwickelt, und die Bedeutung umfangreicher Tests vor der Veröffentlichung verringert sich durch die tägliche Zusammenarbeit mit den Business-Stakeholdern und das schnelle Feedback aus Iterationen.

DevOps geht noch einen Schritt weiter, indem es den Fokus auf eine noch umfassendere Zusammenarbeit ausdehnt. Tester sind nun nicht mehr nur ein Teil des Entwicklungsteams, sondern arbeiten eng mit Bereichen wie Operations, Infrastruktur und Monitoring, Kundenbetreuung und Analytics zusammen. Diese Erweiterung der Zusammenarbeit führt dazu, dass Tests nicht nur innerhalb des Teams, sondern auch mit anderen Abteilungen durchgeführt werden. Tester müssen sich zunehmend auf eine Vielzahl von externen Faktoren stützen, etwa auf Feedback aus A/B-Tests, Daten aus Monitoring-Tools oder auf die Erfahrungen der Kundenbetreuung.

Ein weiterer Aspekt von DevOps ist die Geschwindigkeit. Ziel von DevOps ist es, Software schnell, zuverlässig und kontinuierlich zu veröffentlichen. Diese Geschwindigkeit kann für Tester herausfordernd sein, da es notwendig wird, neue Features zu untersuchen, ohne den Veröffentlichungszyklus zu verzögern. Automatisierung wird oft als Lösung zur Beschleunigung des Testprozesses genannt, jedoch geht es nicht immer nur um die Automatisierung von Tests innerhalb des Entwicklungsteams. Manchmal können auch verbesserte Produktionsüberwachung und schnelle Rollbacks bei Fehlern genauso effektiv sein, um die Geschwindigkeit zu erhöhen, ohne die Qualität zu gefährden.

Die Einführung von DevOps führt zu einer grundlegenden Veränderung der Art und Weise, wie Tester ihre Arbeit angehen. Früher war das Testen eine isolierte Aktivität, die von einem klar abgegrenzten Team durchgeführt wurde. Heute ist das Testen ein integraler Bestandteil des gesamten Entwicklungsprozesses, der von verschiedenen Abteilungen und Fachbereichen gemeinsam gestaltet wird. Tester müssen in der Lage sein, schnell und flexibel auf Feedback aus unterschiedlichen Quellen zu reagieren, was ihre Arbeit sowohl herausfordernder als auch bereichernder macht.

Die fortschreitende Integration von DevOps in den Entwicklungsprozess erfordert von Testern ein breiteres Skillset. Neben den traditionellen Testfähigkeiten sind nun Kenntnisse in Bereichen wie Monitoring, Infrastruktur und Automatisierung gefragt. Tester müssen in der Lage sein, aus verschiedenen Datenquellen zu lernen und dieses Wissen in ihre Arbeit einfließen zu lassen. Dies bedeutet nicht nur ein vertieftes technisches Verständnis, sondern auch eine stärkere Kollaboration mit anderen Teams und Abteilungen. Die Grenzen des Testens werden immer weiter gesteckt – von der Softwareentwicklung hin zu Bereichen, die traditionell außerhalb der Verantwortung der Tester lagen.

Ein weiterer wichtiger Aspekt ist die Notwendigkeit, Testprozesse kontinuierlich zu optimieren. In einem DevOps-Umfeld wird Testing nicht mehr als isolierte, einmalige Aktivität betrachtet, sondern als kontinuierlicher Prozess, der sich ständig weiterentwickeln muss. Tests müssen immer schneller und zuverlässiger durchgeführt werden, und dabei dürfen die Qualität und die Genauigkeit der Ergebnisse nicht auf der Strecke bleiben. Tester sind daher gefordert, agil zu denken und ihre Strategien an die sich ständig ändernden Anforderungen des Entwicklungsprozesses anzupassen.

In dieser sich ständig wandelnden Landschaft müssen Tester lernen, mit einer Vielzahl von Tools und Praktiken umzugehen, um effektiv und effizient zu arbeiten. Dies kann von A/B-Tests über Cloud-basierte Infrastruktur bis hin zu erweiterten Analysetools reichen. Die Fähigkeit, diese Werkzeuge richtig einzusetzen und die gewonnenen Erkenntnisse schnell zu integrieren, wird zu einer Schlüsselkompetenz für Tester im DevOps-Zeitalter.

DevOps ist mehr als nur eine Sammlung von Tools oder Methoden. Es ist eine Kultur der Zusammenarbeit und des kontinuierlichen Lernens. Die Einführung dieser Kultur erfordert nicht nur Veränderungen in den technischen Prozessen, sondern auch in der Denkweise der beteiligten Teams. Tester, Entwickler und Operations-Teams müssen Hand in Hand arbeiten, um schnelle, zuverlässige und qualitativ hochwertige Software zu liefern. Diese tiefgreifende Zusammenarbeit zwischen den verschiedenen Bereichen des Unternehmens ist der Schlüssel zum Erfolg von DevOps und zur Maximierung der Effizienz des gesamten Entwicklungsprozesses.

Wie fördert man die Zusammenarbeit über Entwicklungsteams hinaus?

Die enge Zusammenarbeit zwischen Entwicklungsteams und anderen Bereichen eines Unternehmens, wie z.B. dem Support oder der Analyseabteilung, kann entscheidend für die Verbesserung des Produkts und der Arbeitsprozesse sein. In einer modernen Arbeitsumgebung, in der DevOps und agile Methoden zunehmend an Bedeutung gewinnen, sind Praktiken wie Peer Review, Debriefing, Pairing und Job-Rotation effektive Wege, um den Austausch zwischen den verschiedenen Abteilungen zu fördern und frische Perspektiven in den Entwicklungsprozess einzubringen. Jede dieser Praktiken bietet die Möglichkeit, die Qualität des Produkts zu steigern, die Kommunikation zu verbessern und letztlich den Erfolg des gesamten Unternehmens zu sichern.

Peer Review und Debriefing sind zwei verwandte, jedoch unterschiedliche Praktiken, die in vielen agilen Teams regelmäßig eingesetzt werden. Beim Peer Review handelt es sich um eine Aktivität, die vor der Durchführung einer Aufgabe oder eines Tests stattfindet. Dabei wird ein Kollege gebeten, eine Überprüfung der geplanten Tests oder Testideen vorzunehmen. Debriefing hingegen erfolgt nach Abschluss einer Aktivität und zielt darauf ab, die Ergebnisse und Erfahrungen zu reflektieren und zu analysieren. Beide Praktiken können eine neue Dimension der Zusammenarbeit eröffnen, wenn sie über die Grenzen des Entwicklungsteams hinaus ausgedehnt werden, etwa durch die Einbeziehung von Personen aus den Bereichen Betrieb, Analyse oder Support. Diese Perspektiven sind oft wertvoll, da sie tiefgehendes Fachwissen mit einem völlig anderen Blickwinkel auf die Produktentwicklung verbinden. Durch die frühzeitige Einbindung dieser Teams in den Testprozess wird das Produkt nicht nur auf einer funktionalen, sondern auch auf einer betrieblichen Ebene optimiert.

Der Nutzen von Peer Reviews und Debriefings liegt nicht nur in der Verbesserung der Qualität des Produkts, sondern auch in der Effizienz der Teamarbeit. Es wird empfohlen, diese Aktivitäten klar zu strukturieren und Zeitrahmen festzulegen, um sicherzustellen, dass sie nicht zu einer unnötigen Belastung für die Beteiligten werden. Die Initiatoren sollten zu Beginn der Sitzung ihre Ideen und Ergebnisse vorstellen und in der zweiten Hälfte der Sitzung die Möglichkeit zur offenen Diskussion bieten, um etwaige Lücken oder unzureichend behandelte Themen zu identifizieren. Dies fördert nicht nur den Austausch, sondern auch das Vertrauen und Verständnis innerhalb des Teams.

Pairing ist eine weitere effektive Methode zur Förderung der Zusammenarbeit. Hierbei arbeiten zwei Personen gleichzeitig an der gleichen Aufgabe, wobei sie ihre Ideen kontinuierlich austauschen und ihre Ansätze hinterfragen. Diese Praxis hat das Potenzial, die Kreativität und Produktivität zu steigern, da sie beide Teilnehmer dazu zwingt, sich intensiv mit der Aufgabe auseinanderzusetzen und sich gegenseitig zu unterstützen. Während einer Pairing-Session übernimmt eine Person die Verantwortung für das eigentliche Arbeiten an der Aufgabe, während die andere Person Ideen vorschlägt, Fragen stellt und Notizen macht. Durch diesen kontinuierlichen Dialog entsteht eine gemeinsame Vorstellung darüber, was zu tun ist und warum es getan wird. Pairing kann besonders produktiv sein, wenn beide Teilnehmer aus verschiedenen Abteilungen stammen und somit unterschiedliche Perspektiven und Fachkenntnisse einbringen können. So könnte ein Entwickler, der an einer neuen Funktion arbeitet, mit einem Support-Mitarbeiter zusammenarbeiten, um sicherzustellen, dass die Änderungen auch in der tatsächlichen Nutzung des Produkts gut funktionieren.

Für Teams, die das Pairing neu ausprobieren, ist es hilfreich, eine strukturierte Herangehensweise zu wählen, um sicherzustellen, dass beide Beteiligten aktiv in den Prozess eingebunden werden. Es ist wichtig, dass der Besitzer der Aufgabe während der Sitzung nicht nur die Kontrolle über das Gerät behält, sondern dass auch der andere Teilnehmer aktiv mitdenkt und sich einbringt. Ein möglicher Ablauf könnte 10 Minuten für die Einführung und Kontextualisierung der Aufgabe, gefolgt von 20 Minuten, in denen einer der Partner das "Fahren" übernimmt, während der andere Ideen einbringt, dann weitere 20 Minuten, in denen der Partner testet und Feedback gibt, und schließlich 10 Minuten für eine gemeinsame Auswertung und Dokumentation der Ergebnisse umfassen.

Job-Rotation ist eine Praxis, die in vielen Unternehmen zunehmend an Bedeutung gewinnt, insbesondere in denen, die eine DevOps-Kultur pflegen. Bei dieser Praxis wechseln Mitarbeiter aus der Entwicklung vorübergehend in den Support, um einen direkten Einblick in die Nutzung des Produkts durch die Endbenutzer zu erhalten und die Herausforderungen zu verstehen, mit denen Kunden konfrontiert sind. Unternehmen wie Automattic (die Entwickler von WordPress) und Etsy praktizieren solche Rotationseinsätze regelmäßig. Dies fördert nicht nur das Verständnis und die Empathie für die Probleme der Kunden, sondern auch eine bessere Zusammenarbeit zwischen den Teams, da die Entwickler aus erster Hand erfahren, wie ihre Produkte in der realen Welt verwendet werden. Solche Rotationen können auch dazu beitragen, Missverständnisse zu vermeiden und die Kommunikation zwischen den verschiedenen Abteilungen zu verbessern.

Es ist zu beachten, dass nicht jede Form der Zusammenarbeit zwischen den Abteilungen immer zwingend erforderlich ist, aber sie kann durchaus den Unterschied zwischen einer reibungslos funktionierenden Entwicklung und einem unvorhergesehenen Problem ausmachen. Eine gesunde und flexible Zusammenarbeit zwischen den Bereichen ist eine der Stärken, die Unternehmen in einer zunehmend agilen und dynamischen Arbeitsumgebung benötigen, um wettbewerbsfähig zu bleiben und weiterhin Innovationen zu fördern. Durch den Austausch von Wissen und die Förderung von Kommunikation über die Grenzen der Abteilungen hinweg werden neue Ideen gefördert und die Wahrscheinlichkeit von Fehlern verringert.