Produktivität steigern mit Micro-Feedback Loops


prozesse teams produktivität
Start Blog Produktivität steigern mit Micro-Feedback Loops

Kleinvieh macht auch Mist. Mit Micro-Feedback Loops in der Softwareentwicklung sind auch kleine Verbesserungen von Nutzen, wenn diese sich aufsummieren.

Das Konzept der Micro-Feedback Loops lernte ich über den Artikel Maximizing Developer Effectiveness kennen. Dieser stellt dar, wie sich einfache Verbesserungen bei Aufgaben, die Entwicklerinnen dutzende oder vielleicht sogar hunderte Mal pro Tag erledigen, in Summe auf die Gesamtproduktivität auswirken.

In meinem Beitrag hier gehe ich das Thema aus Sicht einer möglichen Analyse an. Welche Fragen können gestellt werden rund um die acht Schlüsselpunkte, die im oben zitierten Artikel identifiziert wurden? Und Deine Antworten zeigen Dir potenzielle Hebel für erste Verbesserungen.

In einem neuen Team produktiv werden

Wie lange dauert es in Deinem Unternehmen, bis ein Softwareentwickler produktiv im Projekt oder am Produkt arbeiten kann?  

Es gibt Unternehmen da draußen, die darauf zielen, dass neue Entwicklerinnen am ersten Tag ihren ersten eigenen Code in die Produktionsumgebung deployen.

In meiner Zeit in einer Dienstleistungsfirma war unser Ziel, neue Entwickler nach spätestens drei Tagen produktiv im Projekt mitarbeiten zu lassen.

Und ich kenne Firmen, die neue Entwicklerinnen vermeintlich erst monatelang aufgleisen müssen, bevor irgendwas herumkommt.

Welches Signal senden bei der Einarbeitung etwa diese Punkte:

  • Der Arbeitsrechner ist bislang nicht verfügbar  
  • Nötige Systemzugänge fehlen
  • Es gibt keinen erfahrenen, motivierten Menschen für Orientierung und Einarbeitung
  • Die Einrichtung der Umgebungsentwicklung gleicht schwarzer Magie
  • Die Dokumentation? Welche Doku?

Dazu im Vergleich diese Möglichkeiten:

  • „Hallo, ich bin XYZ und ich begleite Dich bei Deiner neuen Aufgabe. Du kannst mich jederzeit alles fragen …“
  • „… und hier ist Deine komplette Ausrüstung.“
  • Die Einrichtung der Entwicklungsumgebung ist durch ein Skript automatisiert
  • Im Zweifelsfall stehen die nötigsten Schritte auch im Wiki. Zudem ist der neue Entwickler explizit aufgefordert, diese Onboarding-Doku unbedingt und umgehend zu verbessern, wenn etwas auffällt.
  • „Wir bauen auf Dich als Teammitglied und vertrauen Dir.“
  • Jeder kann deployen und das Vorgehen muss keine Angst machen
  • „Wir legen Wert darauf, Verbesserungen für die Kundin so schnell wie möglich zu liefern.“

Teamänderungen kommen immer wieder aus den unterschiedlichsten Gründen vor. Entsprechend ist die Notwendigkeit eines guten Onboardings keine Seltenheit.

Und eine effektive und effiziente Einarbeitung hat einen positiven Einfluss auf die Teamproduktivität und die Motivation jedes Teammitglieds.

Antworten finden auf interne Fragen

Wie lange dauert es in Deinem Unternehmen, bis ein Softwareentwickler eine Antwort auf eine interne Frage bekommt?  

Kann die Entwicklerin das Thema innerhalb des Entwicklungsteams klären? Wenn nein, wieso eigentlich nicht? Welchen Teil ihrer Arbeit hat das Team hier nicht unter der eigenen Verantwortung?

Wenn die Frage außerhalb des Teams beantwortet werden muss:

  • Auf wie vielen Kanälen und über wie viele Hierarchieebenen muss es probiert werden?
  • Wie oft muss nachgehakt werden, bis überhaupt eine Reaktion kommt?
  • Kommt nur eine Antwort oder im Zweifelsfall gleich eine Alternativlösung?  
  • Kommt überhaupt eine Antwort?
  • Wie brauchbar oder umsetzbar ist die Antwort? Sind zusätzliche Rückfragen nötig?
  • Und wie lange dauert denn nun die Antwort?

Produkt- und prozessbezogene sowie technische Fragen wird es in der Softwareentwicklung natürlich immer geben. Die Frage ist, wie lange die Klärung dauert.  

Antwortzeiten bringen Verzögerungen bei der Fertigstellung mit sich. Sie führen zu Unterbrechungen, somit zu Taskwechseln und damit zu zusätzlichen geistigen Rüstzeiten.

Und diese „Verlustleistung“ kann reduziert werden, um die Teamproduktivität zu steigern.

Lokal prüfen, ob eine Änderung funktioniert

Wie lange dauert es in Deinem Entwicklungsteam, bis ein Entwickler prüfen kann, ob seine lokale Codeänderung funktioniert?

Reden wir von wenigen Sekunden? Geht es in den Minutenbereich? Noch länger? Oder wird am Ende gar nicht validiert?

Woran es liegen könnte und wo Verbesserungsmöglichkeiten bestehen:

  • Wie sicher sind die Entwicklerinnen im Umgang mit ihren Entwicklungswerkzeugen?
  • Bonusfrage: Hatten die Entwickler die Möglichkeit, ihre Werkzeuge selbst zu bestimmen? Wenn nein, was brauchen sie?
  • Wie können potenziell lange Compile-Zeiten verringert werden? Wieder eine Frage des Tooling? Oder tatsächlich einfach mal neue Hardware draufwerfen?
  • Bonusfrage 2: Wie lange müssen Entwickler warten und welche Prozesse durchlaufen, um neue Arbeitsrechner zu bekommen?      
  • Erfolgen die Tests manuell oder automatisch?  
  • Wenn manuell validiert wird, wie sieht das Vorgehen aus? Arbeit mit einem Debugger? Oder doch Hand aufs Herz: irgendwas zwischen printf und console.log?  
  • Wenn automatisch getestet wird, wie lange braucht ein lokaler Testlauf?

Dauern die Validierungszyklen bei Änderungen länger, besteht einmal mehr die Gefahr einer Unterbrechung, die den Fokus raubt.

Ein paar Sekunden oder wenige Minuten hin oder her klingt nach wenig. Doch die Summe dieser Unterbrechungen kann die Nadel in Hinblick auf die Gesamtproduktivität bewegen.

Validieren der Integration von Komponenten

Wie lange dauert es in Deinem Unternehmen, bis ein Entwicklungsteam die Integration von Komponenten prüfen kann?

Sind es wenige Stunden? Oder zieht es sich Tage bis Wochen hin?

Die möglichen Ansatzpunkte für Verbesserungen decken sich viel dem vorhergehenden Punkt zu lokalen Tests und gehen natürlich noch darüber hinaus:

  • Wie sicher sind die Entwicklerinnen im Umgang mit ihren Werkzeugen?
  • Bonusfrage: Welchen Einfluss haben die Entwickler auf die Ausgestaltung der Integrationsumgebung?
  • Bonusfrage 2: Wie wird Wissen rund um die Integrationsumgebung und für darauf laufende Validierungen weitergegeben?
  • Erfolgen die Integrationstests manuell oder automatisch?
  • Wenn manuell validiert wird: wieso?! 😰
  • Wenn automatisch getestet wird, wie lange braucht ein Testlauf? Wie stabil sind die Tests?
  • Wie sieht es mit der Kopplung und (Un-)Abhängigkeit von Komponenten im System aus? Hier lehne ich mich auch gar mehr weiter aus dem Fenster. Bitte sprich bei diesem Thema mit einer Softwarearchitektin Deines Vertrauens 😅
  • Wenn andere Komponenten von anderen Teams verantwortet werden, wie sieht es dann mit der Zusammenarbeit aus?

Wie mit Tests auf allen Ebenen der Testpyramide gilt auch beim Thema Integration: Je früher es knallt, umso besser. Denn andersherum: Je später es raucht, desto teurer wird es.

Und bei Verbesserungsmöglichkeiten aus diesem Blickwinkel wird es dann auch mit der Produktivität – zumindest als ein Baustein unter vielen.

Validieren nichtfunktionaler Anforderungen

Wie lange dauert es in Deinem Entwicklungsteam, bis es prüfen kann, ob eine Änderung die nichtfunktionalen Anforderungen an die Lösung erfüllt?

Bewegen wir uns hier im Bereich von Tagen? Wochen? Oder sprechen wir eher von Monaten?

Und ihr habt diese Non-Functional Requirements (NFRs) doch irgendwo erfasst, oder? (Das ist eine sehr ernst gemeinte Frage, denn mir begegnen diese erschreckend selten explizit niedergeschrieben.)

Hier eine kleine Auswahl an Fragen, um die Produktivität des Teams aus dem Blickwinkel der NFRs zu betrachten:

  • Wie lange braucht eine ggf. vorhandene Architektur-Instanz, um Änderungen abzusegnen?
  • Wurde die Bedienbarkeit bereits während der Entwicklung vertestet?
  • In welcher Umgebung kann zum ersten Mal getestet werden, wie sich das System unter Last verhält?
  • Wurde Security von Anfang an gelebt oder braucht es eine nachträgliche Prüfung? Kann diese Prüfung innerhalb des Unternehmens geleistet werden?
  • Welche weiteren Governance-Themen können eine Veröffentlichung von Änderungen verzögern oder sogar verhindern?

Spätestens jetzt wird deutlich, dass die Verbesserung eines Entwicklungsteams nicht an den Teamgrenzen enden sollte. Denn die Devs können noch so schnell entwickeln – wenn das gefertigte Artefakt dann hinten raus stecken bleibt, hat niemand einen Wert davon.

Ein gutes Team kann möglichst vieles selbst erledigen. Und niemand sagt, dass punktuell nötige Rollen und wichtige Expertise nicht auch kurzfristig und kurzzeitig in das Team aufgenommen werden können. Okay, doch, das wird gesagt und lasse Dich davon nicht aufhalten, es trotzdem zu tun.

Einführen eines neuen Dienstes in die Produktion

Wie lange dauert es in Deinem Unternehmen, bis ein Entwicklungsteam einen neuen Service auf der Produktionsumgebung einführen kann?

Geht das innerhalb von Tagen? Oder dauert es mehrere Monate?

Einige Denkanstöße, um das Thema „Release auf Prod“ zu analysieren:

  • Die drei vorhergehenden Kapitel befassen sich mit der Validierung auf verschiedenen Ebenen. Da lohnt nochmal ein Blick, insofern Tests ein Hindernis sein sollten.
  • Wer ist verantwortlich für das Release? Wieso ist es nicht das Entwicklungsteam selbst?
  • Kann jede Entwicklerin im Team releasen? Wie sicher sind die Entwickler im Umgang mit den Werkzeugen für ein Deployment?
  • Wie viel Handarbeit ist nötig, um einen neuen Service in die Systemlandschaft ein- und an abhängige Komponenten anzubinden?
  • Wie läuft das Release? Manuell? Automatisch? Endet die Build Pipeline „vorzeitig“?

Auch hier wird wieder deutlich, dass es an und hinter den Teamgrenzen viel Raum für Produktivitätsverbesserungen gibt. „Done“ ist eine Aufgabe eben erst wirklich dann, wenn sie live ist, genutzt werden kann und Wert schafft.

Finden der Ursache eines Fehlers

Wie lange dauert es in Deinem Unternehmen, bis ein Entwicklungsteam die Ursache für einen Fehler in der Produktivumgebung findet?

Einen Tag oder weniger? Oder eher eine Woche?

Hier eine Auswahl an Fragen, um dieses Thema näher zu beleuchten:

  • Gibt es ein zentrales Monitoring? Oder baut jeder Entwickler sein eigenes Dashboard?
  • Gibt es ein aggregiertes Protokoll? Oder finden sich die nötigen Informationen für eine Analyse in verteilten Töpfen?
  • Unter wessen Herrschaft stehen Monitoring und Logging?
  • Wie sicher sind die Entwicklerinnen im Umgang mit den Werkzeugen für die Systemüberwachung?
  • In welchem Verhältnis stehen echte Alarme und Fehlalarme?
  • Kommen Hinweise/ Tickets über Fehler von außerhalb direkt zu den Entwicklern? Was braucht es, um diese bereits im Vorfeld qualifiziert zu lösen oder mit nötigen Daten anzureichern?
  • Welche Hürden gibt es, um mit Fehlermeldenden in direkten Kontakt zu treten?
  • Beginnen die Entwicklerinnen freudig ihren Arbeitstag oder schwingt Angst mit, den Rechner anzumachen? Wieso?
  • Wie reagieren die Entwickler auf die Aussage „you build it, you run it“? Wer ist für die 24/7-Bereitschaft zuständig?
  • Wie oft gibt es eigentlich Meldungen bzw. Alarmierungen der Produktivumgebung? Wie kann diese Menge sinnvoll reduziert werden?

Natürlich wäre es schön, wenn produktiv einfach alles laufen würde. Doch wir wollen ja realistisch bleiben 😉

Und die Fragen oben bringen potenzielle Ansätze ans Licht, um die Produktivität eines Entwicklungsteams in Hinsicht auf den Betrieb zu steigern.

Bestätigen, dass Kunden einen Nutzen haben

Wie lange dauert es in Deinem Unternehmen, bis ein Entwicklungsteam Rückmeldung von Kunden oder echten Anwenderinnen bekommt?  

Einen Monat oder weniger? Ein halbes Jahr? Versackt die Information an anderer Stelle im Unternehmen? Oder gibt es am Ende überhaupt kein Feedback?  

Hat die Lösung ein Problem behoben? War sie nützlich? Wurde eine interne Hypothese bestätigt oder widerlegt?  

Für die vergangenen zwei Jahrzehnte kann ich vermutlich an einer Hand abzählen, in wie vielen Projekten meine Teams tatsächlich Austausch mit echten Anwendern hatten.  

Eines der prominentesten positiven Beispiele ist ausgerechnet eine Behörde. Vor vielen Jahren war ich an mehreren Entwicklungsabschnitten eines Projekts für ein Bundesamt beteiligt. In zarten Schritten haben wir dort eine Vorgehensweise eingeführt, die heute als „agil“ bezeichnet würde.  

Ein Baustein davon: regelmäßige Zwischenreleases, statt eines Big Bang. Und unsere Ansprechpartner im Fachbereich taten alles dafür, dass für die Tests dieser Releases Friendly User bereitstanden aus dem Pool von Menschen, die das System später auch tatsächlich im Echtbetrieb nutzen werden. Das war pures Gold!  

(Es gab lustigerweise übrigens auch fleißige „Unfriendly User“ im laufenden Betrieb, die nicht müde wurden, auf die Fehler und Probleme hinzuweisen – wobei sie dabei meist sachlich blieben. Hat das genervt? Ja. War das wertvoll? Absolut!)  

Alle vorherigen Kapitel bezogen sich auf den ersten Blick auf das Thema Effizienz.

Doch Produktivität dreht sich zentral auch um die Effektivität. Es braucht beide Sichtweisen. Die Kernfrage ist: tun wir das Richtige richtig?

Und der keinesfalls zu vernachlässigende Aspekt dabei sind diese Fragen: braucht das eigentlich wer? Wie gut ist unsere Lösung? Schaffen wir einen Wert und verdient das Unternehmen damit Geld?

Denn ohne echte, unmittelbare und ungefilterte Antworten auf diese Fragen kann man sich alles Vorherige auch sparen.

Fazit

Dieser Artikel liefert Dir Fragen zur Analyse und neue Sichtweisen auf acht Alltagsaufgaben eines Softwareentwicklungsteams:

  • Produktiv werden im neuen Team
  • Antworten auf eine interne technische Anfrage finden
  • Validierung einer lokalen Codeänderung
  • Validierung der Integration von Komponenten
  • Validierung nichtfunktionaler Anforderungen
  • Einführung eines neuen Dienstes in die Produktion
  • Suche nach der Ursache für Systemfehler
  • Bestätigen, dass eine Änderung für den Kunden nützlich ist

Diese Micro-Feedback Loops erlauben Deinem Team möglichst schnell zu lernen. Der Effekt bei Verbesserungen wirkt sich dabei v.a. in der Summe aus – Viele kleine Schritte bringen ein Team eben auch weiter. Zudem betrachten die Micro-Feedback Loops nicht nur Aspekte der Effizienz, sondern auch die Effektivität.

Und schlussendlich zahlen diese Punkte ebenso auf die gefühlte Wirksamkeit und damit auf die Zufriedenheit der Entwicklerinnen und Entwickler ein.

Buchen Sie jetzt eine kostenlose Teamanalyse und wir finden gemeinsam heraus, wie ich Sie am wirkungsvollsten unterstützen kann.

Vorheriger Beitrag Nächster Beitrag