Trunk Based, aber was ist mit unfertigen Features?

Die häufigste Frage bei Trunk Based ist: "Was, wenn mein Feature erst Sinn macht, wenn es komplett fertig ist, kann ich das überhaupt mergen?"
Meine Antwort inzwischen: ja, merge es, aber schalte es ab. Feature Toggles oder Flags erlauben es, unfertige Pfade im Code zu haben, ohne dass sie aktiv sind.
Was ich als größten Effekt sehe: - Der Rest der Anwendung muss mit Feature an und aus funktionieren, dadurch fallen Inkompatibilitäten früher auf. - Tests können gezielt gegen beide Zustände laufen. - Rollout wird steuerbar: pro Umgebung, pro Nutzergruppe, schrittweise Aktivierung, manuell für Tester.
Ein weiterer Vorteil, der oft unterschätzt wird: Release und Deployment werden zwei unterschiedliche Dinge. Wenn ich steuern kann, wann ein Feature aktiviert wird, kann ich Code unabhängig vom Feature Go Live deployen. Deployment wird damit ein rein technischer Vorgang. Der eigentliche Release kann dann an Test Reife gekoppelt werden oder an Business Anforderungen, zum Beispiel Kampagnen, Support Kapazität, Marktfeedback.
Seit ich so arbeite, empfinde ich das als massiven Produktivitätsboost.
Nutzt ihr Feature Flags? Was war bei euch der größte Stolperstein beim Einstieg in Feature Toggles?
Mehr Einblicke
Im Blog finden Sie weitere Praxiserfahrungen aus Projekten.