Feature Branching: Der Schlüssel zu schnelleren Releases für Produktmanager

Sie suchen ständig nach Methoden, mit denen Sie neue Features schneller freigeben können.

Denn je schneller Sie neue Features veröffentlichen, desto schneller erhalten Sie Feedback aus der realen Welt von realen Usern und desto schneller können Sie zunehmend bessere Versionen Ihres Produkts ausliefern.

Natürlich gibt es eine Menge von Methoden, um Ihre Feature Releases zu beschleunigen. Zum Beispiel mit Canary Releases. Sie können während der Produktion testen oder sich für Rollbacks entscheiden. Beiden Methoden beschleunigen Feature Releases. Deshalb sollten Sie beide ausprobieren.

Wenn Sie Ihrer Feature Releases aber wirklich ernsthaft beschleunigen möchten, müssen Sie sich überlegen, wie Sie auch entwicklungsmäßig einen Schritt zulegen können. Eine der wirkungsvollsten Methoden, Features schneller zu entwickeln, ist die parallele Entwicklung, die durch eine dedizierte Feature Branching Strategie implementiert wird. 

In diesem Beitrag werden wir auf die parallele Entwicklung eingehen und erklären, warum Feature Branching eine ideale Form von paralleler Entwicklung ist, wie Sie im Rahmen von Feature Branching Fallen vermeiden und Feature Releases mit dieser Methode schneller fertigstellen können.

Warum sollten sich Produktmanager über parallele Entwicklung Gedanken machen?

Parallele Entwicklung ist ein leicht verständliches Konzept, aber schwer in die Praxis umzusetzen.

Im Wesentlichen bedeutet parallele Entwicklung, dass einige Entwickler eine Reihe von Aufgaben bearbeiten, während die anderen Entwickler an anderen Aufgabenstellungen sitzen.

Sie müssen die Entwickler nicht in zwei gleiche Gruppen aufteilen. In Ihrem Entwicklerpool können auch drei verschiedene Gruppen an drei oder noch viel mehr verschiedenen Aufgabensets arbeiten. Die genaue Anzahl ist unerheblich. Worauf es wirklich ankommt, ist Folgendes: Statt dass alle an denselben Aufgaben auf derselben Codebasis arbeiten, befassen sich verschiedene Gruppen über denselben Zeitraum mit verschiedenen Aufgaben.  

Die parallele Entwicklung beschleunigt Feature Releases in mehrfacher Hinsicht. Ihre Teams können sich auf kleinere, extrem gezielte Aufgaben konzentrieren, was in der Regel leichter zu bewältigen ist. So vermeiden Sie, dass Codeänderungen eines Teams die Arbeitsumgebung der anderen Teams stilllegen und das ganze System instabil werden lassen. Das Wichtigste ist jedoch, dass Sie die Ergebnisse der einzelnen Teams unabhängig voneinander veröffentlichen können und nicht warten müssen, bis alle Teams ihre Aufgabe erledigt haben, um Ihren Usern etwas Neues bereitzustellen. 

Dieser letzte Punkt ist ein entscheidender Faktor. Es gibt viele verschiedene Formen der parallelen Entwicklung. Wenn Sie Ihre Feature Releases beschleunigen möchten, müssen Sie sich für das sogenannte Feature Branching entscheiden.  

Wie funktioniert Feature Branching?

Beim Feature Branching organisieren Sie Ihre parallele Entwicklungsstrategie rund um die Entwicklung von Features. Sie erstellen einen neuen „Branch“ aus Ihrer Haupt-Codebasis, der sich auf ein spezielles Feature oder eine Gruppe von Features bezieht. Dann weisen Sie diesen „Branch“ einem spezifischen, unabhängigen Team zu. 

Diese feature-fokussierten Branches werden gelegentlich auch „User Stories“ genannt. Der Einfachheit halber sprechen wir in diesem Beitrag aber von Features und Branches.

Sobald ein Feature Branch fertiggestellt, getestet und überprüft ist, kann er wieder in die Haupt-Codebasis übernommen und für die User veröffentlicht werden – unabhängig davon, wie weit die Teams mit anderen Feature Branches des Produkts gekommen sind.

Feature Branching konzentriert sich auf die parallele Entwicklung und die Veröffentlichung einzelner Features – statt auf groß angelegte Releases oder monolithische trunk-basierte Entwicklung – und bietet Ihnen damit die Möglichkeit, Ihr Produkt so schnell wie möglich zu iterieren.  

Was sind die potenziellen Nachteile von Feature Branching?

Feature Branching kann Ihre Feature Releases zwar schnell beschleunigen, ist aber keine allgemeingültige Standardlösung. Beim Feature Branching kann auch einiges verkehrt gemacht werden.

Erstens kann Feature Branching aus rein technischer Sicht bereits in sich schwierig sein. Sie müssen eine einfache Methode finden, um Features völlig unabhängig voneinander zu veröffentlichen. Andernfalls können sich die fertiggestellten Features stapeln, während Sie darauf warten, dass andere Features unter Dach und Fach sind – was den Sinn und Zweck von Feature Branching komplett verfehlt und Sie wieder auf eine traditionellere Release Branching Strategie zurückgreifen lässt.   

Zweitens kann Feature Branching mühsame Merge-Konflikte verursachen. Selbst wenn Ihre Teams unabhängig voneinander arbeiten, müssen bei den individuellen Branches an denselben geteilten Elementen der Codebasis möglicherweise Änderungen vorgenommen werden. Wenn ein Team nach erledigter Arbeit das Ergebnis mit der Codebasis zusammenführt, können diese geteilten Elemente womöglich verändert werden; wodurch andere Branches zu dem Zeitpunkt inkompatibel werden, an dem sie releasefähig sind.

Nicht zuletzt kann Feature Branching eine milde Form von Abweichungen bewirken. Wenn Teams zu lange isoliert an einer Sache arbeiten, können sie den Kontakt miteinander und somit auch den Blick auf das Produkt als Ganzes aus dem Auge verlieren. Feedback wird dann nur schwer zu erhalten und zu teilen sein. Und die Zusammenarbeit kann vor dem „Aus“ stehen. Die Teams können an den Codebasis oder Features des Produkts große Änderungen vornehmen, ohne dass jemand anders davon erfährt.

 Potenziell sind das große Probleme, die sich jedoch vermeiden lassen.

 Hier finden Sie ein paar Tipps, wie diese Probleme erst gar nicht entstehen können.

Wie Sie Abweichungen beim Feature Branching vermeiden

Beginnen wir mit dem Problem, das am schwierigsten zu lösen ist – Abweichungen.

Wenn Sie eine Feature Branching Strategie umsetzen, verstricken Sie sich in ein Paradox. Einerseits geht es beim Feature Branching (und der parallelen Entwicklung insgesamt) darum, Ihre Teams zu isolieren. Andererseits beeinträchtigt zu viel Isolation den Zusammenhalt Ihres Teams und das Grundprodukt, das Sie entwickeln.

Bei parallel arbeitenden Teams können sich leicht Abweichungen einschleichen, für die es aber technische Lösungen gibt. So kann ein Team immer die Änderungen der anderen Teams abrufen, um zu erfahren, woran sie arbeiten, um gemeinsam an der Entwicklung des Features zu arbeiten und um sicherzustellen, dass ihr Branch sich nicht allzu weit von den Branches der anderen Teams entfernt. 

Doch die meisten Lösungen kommen wesentlich subtiler und „sanfter“ daher. Sie können für Ihr gesamtes Entwicklerteam Daily Standups organisieren und dafür sorgen, dass sie im ständigen Austausch stehen und jederzeit wissen, was die anderen machen. Und Sie können die Größe der einzelnen Features in der Entwicklung reduzieren, denn so muss es wieder in das Produkt (und in die Arbeit der anderen) gemergt werden, bevor es überhaupt zu einer zu großen Abweichungen kommen kann.

Abweichungen lassen sich durchaus vermeiden, aber es verlangt ein hohes Maß an täglicher Disziplin, wenn alle Branchen zusammenpassen sollen.

Wie Sie Merge-Konflikte beim Feature Branching vermeiden

Als nächstes befassen wir uns mit der meist verbreiteten Falle beim Feature Branching: Merge-Konflikten.

In der Regel startet man mit guten Vorsätzen ins Feature Branching. Die Entwicklergruppe wird in mehrere Teams unterteilt, jedem Team wird ein Feature Branch zugewiesen. Die Teams sollen dann schnell ein Ergebnis liefern und die Ergebnisse der einzelnen Teams sollen zügig wieder gemergt werden.

Doch oft sind diese Vorsätze reine Makulatur. Die Teams arbeiten auch weiter an den Features, nachdem diese im Prinzip gemergt werden sollten, und lassen auch weiterhin Änderungen einfließen, denn in der Regel sind die Teams zu sehr in ihre Arbeit vertieft. Sie möchten ein möglichst perfektes Feature liefern und tappen dabei in die Falle. In ihrem Arbeitseifer schießen sie über das Ziel hinaus. Was eigentlich als kleines neues Feature oder einfaches Update eines bestehenden Features gedacht war, wird zu einem umfassenden, komplexen Set neuer Features, das eher einem brandneuen Release gleichzusetzen ist.

In diesem Fall sind Merge-Konflikte geradezu vorprogrammiert, sobald das Team seine Arbeit in die der anderen Teams integrieren möchte.

Wie beim Problem der Abweichungen ist die Lösung auch hier vom Konzept her einfach, lässt sich jedoch schwer umsetzen. Sie müssen konsequent mit kleinen Feature Branches arbeiten, die zeitig und oft gemergt werden können. Legen Sie ein Minimum Viable Product (MVP) fest, bevor Sie den Branch erstellen. Sobald das MVP erreicht ist, führen Sie den Merge durch und veröffentlichen das Feature – so unvollkommen es auch sein mag.

Wie Sie Release-Engpässe beim Feature Branching vermeiden können

Zu guter Letzt noch das Problem, das am einfachsten zu lösen ist: die technische Fähigkeit zu entwickeln, um Features unabhängig voneinander zu veröffentlichen.

Die Lösung lässt sich in zwei Worte fassen: „Feature Flags“.

Feature Flags sind Schalter, mit denen Sie ein ganzes Feature per Knopfdruck freigeben oder zurücknehmen können. Jedem neuen Feature oder Feature-Update ist ein eigener Schalter zugeordnet. Dieser Schalter ist absolut unabhängig von allen anderen releasefähigen Features oder Updates. Sie können die abgeschlossene Arbeit eines Teams jederzeit pushen, ganz egal, wie fehlerbehaftet oder unausgereift die Features der anderen Teams zu diesem Zeitpunkt sind.

Der große Pluspunkt der Feature Flags ist ihre Flexibilität. Wenn Sie ein fertiggestelltes Feature veröffentlichen möchten, schalten Sie es einfach mit einem simplen Klick um. Wenn Sie mehrere Features auf einmal freigeben möchten, warten Sie einfach ab, bis alle Features fertiggestellt sind, um sie dann gleichzeitig freizugeben. Wenn Sie ein neues Feature veröffentlichen und auf einen Merge-Konflikt stoßen, können Sie das Feature mit nur einem weiteren Klick gleich wieder deaktivieren.

(Hinweis: Wir sind so überzeugt von Feature Flags, dass wir sie zu einer Hauptkomponente unserer Plattform Flagship gemacht haben. Erfahren Sie mehr darüber – und wie leicht sie Feature Branching machen – klicken Sie hier.)

Veröffentlichen Sie Features schneller… mit der richtigen Branching Strategie

Sie haben jetzt eine ziemlich genaue Vorstellung davon, was es mit Feature Branching auf sich hat und wie Sie es im Produktmanagement in die Praxis umsetzen können, ohne in die üblichen Fallen zu tappen.

Halten Sie die Feature Branches so klein wie möglich, um Abweichungen und Merge-Konflikte zu minimieren.

Halten Sie sich streng an diese kleinen Feature Branches und lassen Sie sich nicht in endlose Versuche verstricken, sie vor der Release perfekt zu machen.

Und optimieren Sie Ihren Release-Prozess für unabhängige Features so weit wie möglich mit der richtigen Technik.

Lassen Sie sich nicht von der Einfachheit dieser Strategie täuschen. Sobald Sie Feature Branching beherrschen, haben Sie eine wirkungsvolle Methode für schnellere Feature Releases zur Hand.

Share on linkedin
Share on Linkedin
Share on facebook
Share on Facebook
Share on twitter
Share on Twitter
Ne perdez pas le traffic de votre site sans le convertir
Construisez des expériences complètes qui convertissent, sur tous les canaux digitaux.
+250%
taux de clic
+19%
taux de conversion
+5%
panier moyen
Ils nous font confiance

Demande de démo

Don't throw away hard-earned traffic.
Make your website work overtime - so you don't have to.
+250%
click-through rate
+19%
conversion rate
+5%
average order value
Trusted by

Request a demo