Effizienz ist in Deutschland sehr populär. Gäbe es Japan nicht, hätten wir vermutlich die meisten Konzepte dazu erfunden. Es vergeht kaum ein Jahr, in dem Effizienz nicht aufs neue adressiert wird. In kreativen Berufen kann Effizienzstreben allerdings das Gegenteil von dem bewirken, was es beabsichtigt. Ein Plädoyer für den richtigen Umgang mit Effizienz in der Softwareentwicklung.
Effizienz versus Effektivität
Effizienz darf erst eine Rolle spielen, wenn wir sicher sind, dass die Ergebnisse der Produktion einen Wert haben. In der Softwareentwicklung besteht aber ein hohes Risiko, diese Prämisse nicht zu erfüllen. Entweder werden Produkte oder Funktionen ohne Wert entwickelt oder sie hätten einen Wert gehabt, wurden aber nicht gut genug umgesetzt. In beiden Fällen findet eine massive Verschwendung statt. Effizienz in der Produktion ist hier nachrangig. Vorrangig ist es, die richtigen Fragen zu stellen und gute Entscheidungen zu treffen.
Verschwendung versus Investition
Die Arbeit während der Entscheidungsfindung besteht unter anderem daraus, Ideen, Opportunitäten und Strategieoptionen zu erkunden und zu validieren. Viele davon landen im Papierkorb. Dennoch hatte die Arbeit – obwohl keine Software produziert wurde – den Wert der Erkenntnis. Diese ist wertvoll, weil durch eine Umsetzung noch viel mehr Verschwendung oder Schaden entstanden wäre. Einem Arzt, der nach der Untersuchung keine Behandlung für nötig hält, würde man schließlich auch nicht vorwerfen, seine Arbeit war umsonst.
Effizienz bei Entscheidungen
Wie also einschätzen, ob diese wichtige Arbeit der Entscheidungs- und Lösungsfindung effizient verrichtet wurde? So wie Führungskräfte allgemein nicht anhand der Anzahl von Entscheidungen beurteilt werden, sondern an der Auswahl und Qualität der Entscheidungen, können Produktmanager*innen, Designer*innen oder Entwickler*innen nicht anhand quantitativ messbaren Faktoren im Prozess bewertet werden. Wer kann beurteilen, ob all die Strategien, Konzepte und Lösungsideen gut oder nur mittelmäßig waren, ohne selbst vom Fach und dabei gewesen zu sein? Wie entscheiden, ob zwei schnell getroffene Entscheidungen besser sind als eine mit mehr Wert? Und was, wenn es eine noch viel bessere Option gegeben hätte, die übersehen worden ist?
Messbarkeit von Effizienz in der Softwareentwicklung
Führungskräfte mit viel Erfahrung in der Softwareentwicklung wissen, dass herausragende Mitarbeiter*innen oder Teams um Faktoren besser sein können als mittelmäßige. Aber messen kann man es mit harten, vergleichbaren Daten nicht. Kreative Arbeit kann nur durch qualitative Faktoren gemessen werden:
- Quelle herausragender Fragestellungen und Ideen
- Qualität der Entscheidungsfindung
- Gefühlte Produktivität in der Entscheidungsfindung
- Gewinnen von Vertrauen und Respekt bei wesentlichen Stakeholdern
Falsche Methoden zur Effizienzoptimierung
Trotzdem scheint der Druck vielerorts hoch zu sein, dennoch Metriken zur Effizienz zu liefern. Leider sind sie allesamt unbrauchbar. Beispiel Team Velocity: Diese beliebte Metrik misst eine relative Leistung von Teams über die Zeit. Zur Planung mag sie eine wichtige Referenz sein, als Aussage über Effizienz ist die Metrik leider nutzlos. Leistung sagt in der Softwareentwicklung nichts über das Ergebnis aus. Genauso gut kann man messen, wie viele Zeilen Code geschrieben oder wie viele Grafikpixel verschoben worden sind.
Ähnlich ist es mit anderen Ansätzen, die der gleichen Problematik unterliegen. Werden Teams auf diese Art verglichen, wird sich wahrscheinlich die gemessene Metrik ohne eine wahrnehmbare Veränderung beim Ergebnis verbessern.
Sinnvolle Methoden für Teams, um Effizienz zu steigern
Um einem Lehrling etwas beizubringen, holt man den Meister des Fachs. Den der Lehrling muss erst mal lernen. Coaching durch die Führungskraft, Mentoren, interne oder externe Experten, Weiterbildung oder bessere und erfahrenere Mitarbeiter sind die Lösung, um die Effizienz im Team deutlich zu steigern. Produktive und erfahrene Profis wissen was zu tun ist und können weniger effizienten Mitarbeiter*innen helfen. Diese Maßnahmen klingen im ersten Augenblick nicht nach Effizienzoptimierung, was die Diskussion diesbezüglich nicht einfacher macht.
Beim Bestreben nach mehr Effizienz im Zusammenspiel der Mitarbeiter im Team haben sich weitere Methoden bewährt. Sie helfen eher durch eine Bewertung der Situation als durch Vorgabe einer Lösung. Daher sind sie Mittel zum Zweck und brauchen Teams, die wissen, was für eine Optimierung zu tun ist:
Unfertige Arbeit begrenzen
Auch bekannt als WIP-Limit. Da der regelmäßige Wechsel von einer Aufgabenstellung zur Anderen nicht effizient ist, können sich Teams mit einer Limitierung an Themen eine Grenze setzen. Dadurch „zwingen“ sie sich darüber nachzudenken, wie sie effizienter arbeiten können. Abbau von Abhängigkeiten oder eine stärkere Orientierung am jeweiligen Engpass im Team geraten dadurch schneller in den Fokus.
Frequenzen und Automatisierungsgrade erhöhen
Frequenzen und Automatisierungsgrade in Lern-, Entwicklungs,-Test- und Releaseprozessen können schrittweise erhöht werden. Je höher die Frequenz dieser Prozesse, desto professioneller und effizienter müssen die Prozesse sein. Teams, die jeden Tag Software liefern und dabei eine hohe Betriebssicherheit gewährleisten, können schlicht keine ineffizienten Test- und Releaseprozesse haben. Auch Abhängigkeiten von anderen Teams oder Stakeholdern können bei hoher Frequenz nicht mehr aufrecht erhalten werden.
Technische Schuld abbauen
Technische Schuld abbauen hilft, da sie für eine steigende Ineffizienz im Verändern des bestehenden Codes sorgt. Die Ineffizienz steigt außerdem nicht linear, sondern überproportional an.
Parallele Analyse- und Konzeptphasen
Diese finden vorgelagert, unabhängig und parallel zur Umsetzung statt. Dadurch kann gewährleistet werden, dass trotz der unsicheren Dauer und Ausgang von Analysen und Entscheidungen eine konstante und ununterbrochene Umsetzung gesichert werthaltiger Arbeit ohne Unterbrechung stattfinden kann.
Dieser Beitrag gehört zur Serie Potentiale im Produktmanagement ausschöpfen.