Trim the Tail
Heute geht es um einen ganz speziellen Begriff, den ihr vielleicht noch nie gehört, aber mit Sicherheit schon in Projekten erlebt habt. Wir sprechen auch von einer Performance Metrik, die zur Optimierung von Releasezyyklen genutzt werden kann.
Begriffszusammenhang
Der Tail (tail length) ist in diesem Zusammenhang die Zeit vom Feature Freeze bis zur wirklichen Lieferung des Produktes an den Kunden. In dieser Zeit beschäftigen sich Projekte oft mit Folgendem: Beta testen, Regressionstesten, Produktintegration, Integrationstests, Dokumentation und Defekte beheben.
Den unglaublich klingenden Tail, den wir einmal erlebt hatten, waren 16 Monate! 16 Monate vom letzten Feature zum Produktrelease, indem sich mit Qualität und Dokumentation beschäftigt wurde. Das ist tatsächlich ein immenser Wettbewerbsnachteil.
Es gibt natürlich Unternehmen, die diese Zeit nahezu auf Null gebracht haben. Diese benutzen kontinuierliche Lieferungen und kontinuierliches Bereitstellen (Continuos Delivery) und befinden sich fast ausschließlich in Softwarebereich, ohne langwierige Werkzeugproduktion oder etwaige Hardware- oder Mechanikanpasssungen.
In mechatronischen Systemen haben wir typische Releasezyklen von etwa einem Jahr, wovon ca. drei Monate als Tail zu Buche schlagen. Für solche Projekte wird es nicht möglich sein auf einen Tail von Null zu kommen. Dennoch sollte das Ziel sein, diesen zu reduzieren. Ein Tail von einem Monat zu erreichen ist durchaus möglich, wenn kontinuierlich an diesem Ziel gearbeitet wird. Wir haben es erlebt und können euch dabei unterstützen.
Wie kann das nun gelingen?
Das Zauberwort heißt Continuos Integration. Das Ziel von agilen Teams ist es, in jeder Iteration eine lieferbares Produkt zu erzeugen. Diese fällt natürlich nicht vom Himmel. Es müssen Kapazitäten und Budget bereit gestellt werden um daran zu arbeiten. Die Teams müssen lernen, wie sie eine kontinuierliche Integration umsetzen können.
Automatisierung ist dabei der Schlüssel zum Erfolg. Bei Software sollte auf Unittestebene die Abdeckung am höchsten sein. Denkt an die Testpyramide. Im besten Fall etabliert ihr Test Driven Development (TDD). Das Ergebnis sollte eine erhöhte Automatisierung von Tests sein, die euch in jeder Iteration die Testzeit reduziert. Gerade Integrations und Regressionstests kommen hier zu kurz. Diese sollten ebenfalls automatisiert werden. Hier gibt es eine Vielzahl an Möglichkeiten und Frameworks. Wichtig ist, keine separaten Strukturen zu schaffen, sondern cross funktional im einem Team an dem Thema zu ziehen. Damit sind nicht nur Testkompetenzen gemeint, sondern auch Dokumentationskompetenzen. Wir sprechen explizit von Kompetenzen und nicht von Rollen. Systematisch Refactoring zu betreiben, um technischen Schulden und Defektbehebungszeit zu reduzieren benötigt kontinuierliches Investment.
Wenn Continuos Integration ein zu großer Schritt ist, versucht in kleineren Schritten Verbesserungen einzuführen. Führt eine DefinitionOfDone (DoD) ein, um Features auch wirklich abzuschließen und nicht etwaige Dokumentation oder Tests in das Tail zu schieben.
Achtet bei neuen Features strikt darauf, dass die Tail Zeit durch manuelle Systemtest oder Dokumentation am Ende nicht ausarten und die hart erkämpften Erfolge zu nichte machen.
Fazit
Um die Agilität in Eurer Organisation zu messen, ist der Tail eine einfache und mächtige Metrik. Diesen zu optimieren sollte eines Eurer Ziele sein. Auch kleine Verbesserungen reduzieren den Tail um Tage und bringen Euch einen Wettbewerbsvorteil.