Die agile Programmierung ist die Methode, mit der wir bei YMC wie in der Studie gefordert den gegenseitigen Wissensaustausch in Bezug auf die Aufgaben, das heisst die Umsetzung der Ziele, sicherstellen. Über die Jahre haben wir nicht nur das agile Projektmanagement verfeinert, sondern auch viele wiederkehrende Abläufe automatisiert.
Hierzu arbeiten wir seit vier Jahren innerhalb unserer Agentur und auch im Zusammenspiel mit unseren Kunden auf Basis einer von uns intern entwickelten DevOps-Umgebung. In dieser Umgebung werden alle Prozesse für die Entwicklung (Englisch “development”, also “Dev” in DevOps) und Bereitstellung (Englisch “operations”, also “Ops” in DevOps) von Software nahtlos integriert und automatisiert durchgeführt.
Mit Hilfe unserer DevOps-Umgebung haben wir auch die Kommunikation mit dem Projektmanager des Kunden und weiterer Stakeholder beim Kunden automatisiert, um dort Informationslücken zu schliessen zu Fragen, die immer wieder in Kundenprojekten oder bei einem spezifischen Projekt aufkommen.
Zum Beispiel verwalten wir unsere agilen Programmierzyklen (d.h. Sprints) in JIRA, woraus wir Kunden automatisch über Slack darüber informieren, wann ein Sprint anfängt, welche Aufgaben im Sprint abgearbeitet werden, welche Aufgaben ausserplanmässig extra hinzu kamen, und wann der Sprint endet. Er erfährt auch, falls ein neues Produktivsystem nach einem Sprint bereitgestellt oder ein vorhandenes aktualisiert wurde.
Durch diese Automatisierung per DevOps, sparen wir gut und gerne 30 Minuten Kommunikationsaufwand pro Sprint. Reibungsverluste durch unzureichende mündliche Kommunikation wird vermieden und stattdessen wird sichergestellt, dass alle Stakeholder beim Kunden alle notwendigen Informationen erhalten.
Ein weiteres Beispiel sind automatisierte Reports zu den in der Projektlösung enthaltenen Software-Lizenzen. Hierüber freuen sich die Legal-Abteilungen der Kunden, denn sie müssen im Projektverlauf nicht nachfragen, ob neue Software-Komponenten mit anderen Lizenzen hinzu kamen. Vielmehr bekommen sie diese Information proaktiv zugeschickt.
Auch Changelogs oder Release Notes werden von unserem DevOps-System automatisiert erstellt und dem Kunden zur Verfügung gestellt, damit dieser in Echtzeit über den Projektfortschritt im Bilde bleibt.
Nicht nur die Kommunikation mit unserem Kunden läuft anhand unserer DevOps-Lösung hoch effizient ab, sondern auch die Programmierung selbst, denn darin werden alle wiederkehrenden Entwicklungsaufgaben automatisiert. Zum Beispiel werden Komponenten der Software-Lösung automatisch aktualisiert, unter anderem mit Hilfe des Yarn Package Manager. Dadurch wird verhindert, dass unsere Kunden nach Jahren der Nutzung vor einer veralteten Individuallösung stehen, deren Teile nur mühsam und mit hohem finanziellen Aufwand aktualisiert werden können, zum Beispiel um Sicherheitslöcher zu stopfen.
Insgesamt ermöglicht es unsere DevOps-Umgebung damit, dass Investitionen in Projekte effektiv genutzt werden. Leider nimmt dieser Vorteil umso mehr ab, je mehr uns Kunden aufgrund interner Richtlinien unter anderem Vorgaben bei der Bereitstellung der Software (also im Operations-Bereich von DevOps) machen. Dadurch lässt sich das Ausrollen der Software nicht mehr nahtlos in unseren DevOps-Prozess integrieren, wodurch Brüche entstehen, die die Effizienz herabsetzen, wodurch die Verantwortung diffundiert, weil die Interdependenz hinsichtlich der Aufgaben denkbar gering ist und das Projekt dadurch insgesamt teurer wird.