Liefere früh und oft Mehrwert. Hole Feedback ein, bevor es zu spät ist, den Kurs zu ändern.
XP setzt sich für kleine, häufige Releases ein. Das war 1999 radikal, als jährliche Releases normal waren. In vielen Organisationen ist es immer noch radikal.
Vorteile kleiner Releases:
Schnelleres Feedback: Kunden sehen echte Software früher. Sie können dir sagen, was falsch ist, bevor du zu viel vom Falschen gebaut hast.
Reduziertes Risiko: Jedes Release ist eine kleine Wette. Wenn es fehlschlägt, hast du Wochen verloren, nicht Monate. Du kannst schnell korrigieren.
Schnellere Wertlieferung: Fertige Features werden genutzt. Ein heute veröffentlichtes Feature ist besser als ein Feature, das auf ein großes Release in sechs Monaten wartet.
Verbesserte Moral: Das Team sieht, wie seine Arbeit genutzt wird. Ausliefern ist befriedigend. Lange Release-Zyklen zehren an der Motivation.
Bessere Qualität: Kleinere Releases bedeuten kleinere Änderungen. Kleinere Änderungen sind einfacher zu testen, einfacher zu debuggen und verursachen seltener Probleme.
Minimum Viable Everything
XP erfand das Minimum Viable Product (MVP), bevor der Begriff existierte. Kent Beck nannte es „das kleinste Release, das Sinn macht".
Die richtige Release-Frequenz hängt vom Kontext ab, aber strebe kleinere und häufigere Releases an, als sich komfortabel anfühlt.
Frequenz-Beispiele:
Jeder Schritt kleiner ist besser, bis zu dem Punkt, an dem der Release-Overhead dominiert. Wenn ein Release einen ganzen Tag manuelle Arbeit erfordert, ist tägliches Releasen unpraktisch. Verbessere zuerst den Release-Prozess.
Anzeichen, dass du zu selten releast:
Kleine Releases erfordern technische Investitionen:
Automatisierte Tests: Du kannst nicht häufig releasen, wenn Testen Wochen dauert. Schnelle, umfassende automatisierte Tests sind essenziell.
Continuous Integration: Code muss reibungslos integrieren. Langlebige Branches sind mit häufigen Releases unvereinbar.
Deployment-Automatisierung: Releases müssen per Knopfdruck erfolgen. Manuelle Deployment-Schritte verlangsamen dich und führen zu Fehlern.
Feature Flags: Unvollständige Features können gemergt, aber vor Nutzern verborgen werden. Das ermöglicht kleine Releases, selbst wenn Features mehrere Iterationen umfassen.
Datenbank-Migrationsstrategie: Schema-Änderungen müssen deploybar sein, ohne bestehenden Code zu brechen. Normalerweise bedeutet das vorwärtskompatible Migrationen.
Monitoring und Rollback: Wenn etwas schiefgeht, musst du es sofort wissen. Und du musst schnell zurückrollen können.
Das sind nicht per se XP-Praktiken – es sind moderne DevOps-Praktiken, die XPs ursprüngliche Vision von Continuous Delivery ermöglichen.
Das Team released jeden Dienstag in Produktion. Der Prozess ist automatisiert und dauert 10 Minuten. Feature Flags verbergen unvollständige Arbeit. Rollback erfolgt mit einem Klick.
Releases erfolgen quartalsweise. Jedem Release geht ein „Code Freeze" und 2 Wochen manuelles Testen voraus. Der Release-Tag umfasst 10 Personen und dauert 8 Stunden. Rollback erfordert das Wiederherstellen von Datenbank-Backups.
Das logische Extrem kleiner Releases ist Continuous Deployment: Jeder Commit, der Tests besteht, geht direkt in Produktion.
Das klingt beängstigend. Aber mit den richtigen Praktiken ist es tatsächlich sicherer als große Releases:
Continuous Deployment erfordert:
Nicht jedes Team ist dafür bereit. Aber jedes Team kann sich in Richtung kleinerer, häufigerer Releases bewegen. Beginne damit, doppelt so oft zu releasen. Dann wieder doppelt so oft. Schau, wie weit du kommst.
Wenn Continuous Deployment unmöglich erscheint, frage warum. Die Hindernisse, die du identifizierst, sind normalerweise Dinge, die du ohnehin beheben solltest: langsame Tests, manuelle Prozesse, fragiler Code.