Dieser Beitrag besteht aus zwei Teilen. Im ersten Teil haben wir uns damit beschäftigt, welche Rahmenbedingungen und kulturellen Begebenheiten sich positiv auf die Team-Performance auswirken. In diesem Beitrag zeigen wir konkrete Maßnahmen, mit der die Performance eines Teams gemessen werden kann.
Um den Erfolg und die Performance eines Teams zu messen und zu beurteilen, muss natürlich definiert werden, was darunter verstanden wird. Jedes Team ist anders, hat andere Aufgaben und eine einzigartige Team-Konstellation. Der reine Output eines Teams kann nicht als Maßstab verwendet werden, da sich ein reines Optimieren auf den Output eines Teams bekanntlich nicht positiv auf die Qualität des Produktes auswirkt. Auch die Anzahl an Features kann schon aufgrund der unterschiedlichen Größen von Teams nicht als Kriterium herangezogen werden. Die Velocity[^1] aus SCRUM kann nicht zur Messung verwendet werden, da sie als relative Größe je nach Team unterschiedlich ist. Ähnliches gilt für den Anteil der Feature-Arbeit an der gesamten Arbeitszeit. Eine Optimierung auf diese Ziel lässt vermuten, dass dadurch andere, wichtige Arbeiten, die nicht auf einzelne Features einzahlen, vernachlässigt werden.
Bei der DORA-Recherche[^2] wurden vier Metriken erarbeitet, anhand derer sich die Performance einheitlich[^3] messen lässt:
Die folgende Tabelle zeigt die Ergebnisse des State of DevOps Report 2019:
Die Teams wurden dabei in vier Gruppen eingeteilt, von der Elite bis zu den Low-Performern. Bemerkenswert sind dabei die großen Unterschiede in der Deployment Frequency, aber auch in der Change Failure Rate.
Zusätzlich ist es wichtig zu sehen, dass eine geringere Deployment Frequency nicht zu weniger Fehlern beim Deployment führt - im Gegenteil: häufigere Deployments führen zu einer geringeren Lead Time for Changes. Dieses Vorgehen ist wiederum nur mit einer stark automatisierten Deployment-Pipeline und Low-Risk-Releases durch automatisierte Tests möglich. Das führt am Anschluss zu einer geringeren Time to Restore Service und eine besseren Change Failure Rate. Durch eine Kultur ohne Angst und Mut für Neues lässt sich die Performance in einem positiven Kreislauf so immer weiter steigern. Tools zur Messung der Team-Performance Es existieren verschiedene Tools, mit denen die Messung der oben genannten Metriken durchgeführt werden kann. So können die KPIs in einem Projekt beobachtet und bei Bedarf entsprechende Maßnahmen eingeleitet werden.
Ein Projekt ist das für die Google Cloud Platform entwickelte Tool Four Keys, dessen Architektur wie folgt aufgebaut ist:
Über Event Handler werden Events im System aus unterschiedlichen Quellen gesammelt und anschließend über eine Pipeline mit Parsern zum Normalisieren der Daten in einer BigQuery-Table gespeichert. So lassen sich verschiedene Tabellen ableiten, aus denen wiederum die einzelnen KPIs ermittelt und in einem Dashboard angezeigt werden können.
Es gibt aber auch einfachere Setups. So hat bspw. gitlab die DORA key metrics in seine Pipelines integriert[^6] und auch Atlassians Jira bietet verschiedene Möglichkeiten, um sich die Metriken auf einem Dashboard zusammenzustellen.
Durch die Umsetzung von DevOps-Maßnahmen und die Etablierung einer Kultur des Lernen und Experimentierens, lässt sich die Team-Performance signifikant steigern.
Zur Messung der Performance haben sich die vier Kriterien “lead time”, “deployment frequency”, “mean time to restore” und “change fail percentage” als sinnvoll erweisen, auch um die Performance über unterschiedliche Teams hinweg vergleichen zu können. Die Metriken sind keinesfalls unabhängig voneinander sondern bedingen sich gegenseitig und sollten daher alle berücksichtigt werden.
Es existieren verschiedene Tools, mit denen die Metriken erfasst und ausgewertet werden können.
[^1] Weitere Infos
[^2] DORA research program
[^3] Auch ThoughtWorks hat die Messung dieser vier Metriken im März 2019 in den Technology Radar im Bereich ADOPT aufgenommen.
[^4] 2019-state-of-devops-report
[^5] fourkeys
[^6] Dora Key Metrics