Die Kosten hoher Auslastung in der Softwareentwicklung


prozesse produktivität projektmanagement
Start Blog Die Kosten hoher Auslastung in der Softwareentwicklung

Selbst in der Wissensarbeit herrscht noch der Glaube vor, dass eine hohe Auslastung zu höherer Produktivität führt. Das Gegenteil ist der Fall.

In dieses Thema steige ich ja gerne ein mit diesem alten Witz: „Wie nennt man eine Autobahn mit 100 % Auslastung? Einen Parkplatz.“ Natürlich gibt es noch mehr Beispiele, bei denen eine hohe Auslastung zu Verzögerungen führt: die Kasse im Supermarkt, der Einlass ins Stadion oder die Essensausgabe in der Kantine.

Sprich: wir kennen eigentlich alle die entstehenden Probleme und laufen im Berufsleben trotzdem in die Auslastungsfalle. Und in diesem Artikel werfen wir einen Blick auf die Auswirkungen im Rahmen der Softwareentwicklung.

Eine sehr kurze Begriffsklärung

Im Folgenden taucht vielfach der Begriff „Warteschlange“ (in Englischen „Queue“) auf.

Mit Fokus auf die Softwareentwicklung beschreibt eine solche Warteschlange die Aufgaben innerhalb eines Entwicklungsprozesses, die in Bearbeitung und noch nicht abgeschlossen sind. Also Arbeit, die auf Fertigstellung wartet.

Eine sehr grobe Annäherung bzw. Analogie für eine Warteschlange kann die bekannte Bezeichnung „Work in Progress“ sein.

Auswirkungen und Kosten einer hohen Auslastung

In The Principles of Product Development Flow bringt Donald G. Reinertsen das Problem so auf den Punkt:

Schauen wir uns an, wie sich unsere derzeitigen Überzeugungen gegenseitig verstärken. Wenn wir zum Beispiel die Überzeugung, dass Effizienz gut ist, mit der Blindheit gegenüber Warteschlangen kombinieren, werden wir unseren Entwicklungsprozess mit einer hohen Kapazitätsauslastung betreiben. Schließlich erscheint ungenutzte Kapazität als Verschwendung. Eine hohe Kapazitätsauslastung kann zu Warteschlangen führen, aber diese Warteschlangen haben keine offensichtlichen Kosten. Diese beiden Überzeugungen führen also zu einer verhängnisvollen Kapazitätsauslastung. Dies wiederum führt zu langen Warteschlangen.

Hand aufs Herz: Wer kennt diese Denkweise nicht? Wir wollen unsere Arbeitszeit mit möglichst viel Inhalt füllen und erzeugen somit Kosten, die nicht unmittelbar sichtbar sind.

Dabei sind Warteschlangen die Ursache für viele wirtschaftliche Probleme in der Softwareentwicklung:

  • Warteschlangen erhöhen die Durchlaufzeit. Es dauert einfach länger, den Anfang einer langen Schlange zu erreichen als den Anfang einer kurzen Schlange.
  • Warteschlangen verstärken die Gefahren eines Produktentwicklungsprozesses. Wenn sich die Durchlaufzeit verlängert, sind wir weniger flexibel für Änderungen der Kundenanforderungen, anfälliger für die Einführung von Konkurrenzprodukten oder können schlechter auf technologische Veränderungen reagieren.
  • Warteschlangen erhöhen die Variabilität unseres Entwicklungsprozesses. Wenn wir unseren Entwicklungsprozess stark auslasten, befinden wir uns an einem Punkt, an dem die Variabilität tendenziell zunimmt. Damit verschlechtert sich die Vorhersagbarkeit.
  • Warteschlangen erhöhen die Kosten für unseren Prozess. Je mehr Projekte wir in Bearbeitung haben, desto mehr Projekte müssen wir verfolgen und über deren Status berichten.
  • Warteschlangen verringern die Qualität, indem sie das Feedback von nachgelagerten Prozessen verzögern. Wenn eine Entwicklerin eine falsche Annahme über ein Protokoll macht und nur einen Tag später eine Rückmeldung erhält, wird sie diese falsche Annahme nicht mehr machen. Dauert das Feedback länger, wird diese falsche Annahme Einzug in sehr viel mehr Code halten.
  • Warteschlangen haben eine negative psychologische Wirkung. Sie untergraben die Motivation und Initiative. Je länger es dauert, die Wirksamkeit unserer Arbeit zu erkennen, umso weniger motiviert sind wir von unserer Arbeit.

Und natürlich wollen wir diese Probleme vermeiden und uns die daraus entstehenden Kosten sparen. Was ist nun ein guter Zielwert für die Auslastung eines Entwicklungsteams?

Herleitung einer gesunden Auslastung

In der Kurzfassung: maximal 80 % Auslastung ist die klare Empfehlung.

Wie kommt es zu dieser Zahl? Einen Blickwinkel liefert die Warteschlangentheorie. Begreifen wir einen typischen Entwicklungsprozess als eine Warteschlange, so hat diese die folgenden Eigenschaften:

  • Die Ankunftszeit neuer Aufgaben ist wahrscheinlich eher kurz als lang. An neuen Features und leider auch Bugs mangelt es in der Softwareentwicklung wahrlich nicht. Entsprechend hoch ist die Eingangsfrequenz.
  • Auch für die Bearbeitungszeit gilt, dass diese wahrscheinlich eher kurz ist als lang. Zumindest sollte es so sein, dass Aufgaben klein genug für eine schnelle Fertigstellung geschnitten sind.
  • Es gibt eine Einheit bzw. ein Team zur Umsetzung.
  • Es gibt keine Obergrenze für die Kapazität der Warteschlange. In Zeiten digitaler Boards kann (leider) sehr viel gesammelt werden.

In der sog. Kendall-Notation wird solch eine Warteschlange mit M/M/1/∞ beschrieben.

Unter der Annahme einer M/M/1/∞-Warteschlange lässt sich mit der Formel ρ^2 / (1 - ρ) die Größe der Warteschlange berechnen, wobei ρ die Auslastung angibt. Das ergibt dann folgendes Bild:

Das Verhältnis von Auslastung zur Größe der Warteschlange

Anhand dieses Diagramms ist zu erkennen, wie schnell die Anzahl der Aufgaben bei einer hohen Auslastung steigt. Bei einer Steigerung von 60 % auf 80 % wird die Größe der Warteschlange ungefähr verdreifacht! Beim Schritt von 80 % auf 90 % erfolgt wieder mehr als eine Verdopplung.

Fazit

Eine hohe Auslastung in der Softwareentwicklung führt nicht zu höherer Produktivität, sondern verursacht kostspielige Warteschlangen und damit Verzögerungen.

Die Empfehlung lautet daher, die Auslastung eines Entwicklungsteams auf maximal 80 % zu begrenzen, da darüber hinaus die Probleme exponentiell zunehmen. Dies minimiert Risiken und hält den Entwicklungsprozess flexibel und effizient.

Um nachhaltig erfolgreich zu sein, sollte die Balance zwischen Effizienz und freier Kapazität im Fokus stehen. Weniger ist hier tatsächlich mehr.

Schnapp Dir die 7 Fragen für hochproduktive Entwicklungsteams und buche Deine kostenlose Teamanalyse und wir finden gemeinsam heraus, wie ich Dich am wirkungsvollsten unterstützen kann.

Vorheriger Beitrag