Mehrere Feature-Teams, aber keine Versionskontrolle; Wie kann man die Lieferung skalieren?

OK; Dies ist eher eine reale Frage als ein theoretisches Konstrukt.

Kontext : Multinationales Unternehmen, das mit skaliertem Agile und/oder Nexus flirtet. Wir haben derzeit 3 ​​große agile Programme mit jeweils über 200 Entwicklern. Das ausgereifteste Programm hat 20 Feature-Teams und 6 dieser Feature-Teams wurden ausgewählt, um Nexus zu pilotieren.

Problem : Die Teams waren ursprünglich um Produktfunktionssätze (Telekonferenzintegration, digitale Transformation, Verkaufs-/Kundenkontakthistorie) herum strukturiert, die wenig bis gar keine Abhängigkeit zwischen den einzelnen Teams hatten.

Der Wechsel zu Nexus bedeutet, dass alle Teams alle Storys mit der höchsten Priorität priorisieren sollten, obwohl dies bedeutet, dass alle Teams beginnen, innerhalb derselben Codebasis zu arbeiten (d. h. alle arbeiten an der Integration von Telefonkonferenzen).

Curveball : Die Technologie, an der wir arbeiten, ist nicht sehr ausgereift und hat derzeit keine Versionskontrolle. Es kommt in den nächsten 12 Monaten. Im Wesentlichen sperrt ein Entwickler ein Codierungsobjekt, bis es in der nächsten Umgebung bereitgestellt wird, was zu Verzögerungen bei anderen Entwicklern und Teams führt.

Frage Wie lässt sich die Bereitstellung am besten skalieren? Ist es Sache aller Teams, an den Elementen mit der höchsten Priorität zu arbeiten (à la Nexus-Anleitung), auch wenn Abhängigkeiten die Bereitstellung verlangsamen? Oder ist es besser, die Feature-Sets auf Teams aufzuteilen, damit sie unabhängig arbeiten und die Inkremente in einem längeren Zyklus integrieren können?

Ich suche nach Gedanken aus der agilen Community; Ich habe meine eigene Meinung, aber ich möchte sehen, wie andere Nexus und die Lösung für dieses Problem interpretiert haben.

Wie man die Bereitstellung skaliert, wenn die Technologie keine Versionskontrolle hat. Arbeiten Sie an separaten Funktionen oder alle Teams arbeiten an den Elementen mit der höchsten Priorität, selbst wenn dies bedeutet, dass die Codebasis gesperrt/abhängig wird.
Nexus ist ein Artefakt-Repository, kein SCM. Sie sind nicht orthogonal; Sie lösen verschiedene Probleme. Du brauchst wirklich beides.
@CodeGnome Ich glaube, dass sich "Nexus" in der Frage auf das skalierte Scrum-Framework namens Nexus und nicht auf das Software-Repository namens Nexus bezieht .
Kommentare sind nicht für längere Diskussionen gedacht; diese Konversation wurde in den Chat verschoben .

Antworten (1)

TL;DR

Bei Nexus geht es um Integration. Es ist sehr schwierig, die Integration ohne eine angemessene Toolchain gut durchzuführen, aber die Befolgung des Nexus-Frameworks sollte es Ihnen ermöglichen, die Integrationsfähigkeit Ihres Unternehmens iterativ zu verbessern. Ihre größte Herausforderung scheint entweder zu sein:

  • Ein Missverständnis darüber, wie die Nexus Product Backlog-Elemente teamübergreifend verfeinert, visualisiert und ausgewählt werden.
  • Fehlende Product Backlog-Elemente im Zusammenhang mit der Entwicklung der Fähigkeiten, die für die tatsächliche Integration des integrierten Inkrements erforderlich sind.

In beiden Fällen kann die Prozessseite des Problems während der Nexus Refinement- und Nexus Sprint Planning-Veranstaltungen angesprochen werden.

Den Product Backlog effektiv in Nexus nutzen

Das Folgende ist eine Wiederholung Ihrer Interpretation von Nexus in Bezug auf Ihre Situation:

Ein Wechsel zu Nexus bedeutet, dass Teams die Storys mit der höchsten Priorität auswählen sollten, selbst wenn dies bedeutet, dass alle Teams mit der Arbeit am selben Code beginnen, dh alle Teams würden gleichzeitig an der Integration von Telefonkonferenzen arbeiten.

Dies ist eine verständliche Fehlinterpretation, die auf der gängigen Scrum-Praxis basiert. Es ist jedoch aus drei Gründen falsch. Die Gründe sind:

  1. Es wird erwartet, dass Scrum-Teams innerhalb von Nexus um Subsysteme herum strukturiert sind.

    Obwohl dies im Leitfaden nicht klar angegeben ist, enthält das Framework dennoch diese Anleitung:

    In dem Maße, in dem Anforderungen, das Wissen der Teammitglieder und Code-/Testartefakte denselben Scrum-Teams zugeordnet werden, kann die Abhängigkeit zwischen Teams verringert werden.

    Wenn die Softwareentwicklung mit Scrum skaliert wird, sollten diese Abhängigkeiten von Anforderungen, Domänenwissen und Software-/Testartefakten die Teamorganisation vorantreiben.

    Denken Sie daran, dass es bei Nexus nur um Integration geht und nicht um das Hinzufügen weiterer Ressourcen zu denselben Aufgaben. Die Strukturierung Ihrer Scrum-Teams um Feature-Sets oder Subsysteme herum, die integriert werden müssen, mit dem Ziel, teamübergreifende Abhängigkeiten zu minimieren, ist ideal.

  2. Das Nexus-Framework erfordert, dass das Nexus-Integrationsteam das Product Backlog verfeinert, um Abhängigkeiten zwischen Teams zu beseitigen oder zu minimieren.

    Das Product Backlog muss zerlegt werden, damit Abhängigkeiten identifiziert und entfernt oder minimiert werden. Product-Backlog-Elemente werden in dünn geschnittene Funktionsteile verfeinert, und das Team, das wahrscheinlich die Arbeit erledigen wird, sollte so früh wie möglich identifiziert werden ... Nur wenn die Product-Backlog-Elemente ausreichend unabhängig sind, können sie ausgewählt und ohne übermäßige Konflikte zwischen Scrum bearbeitet werden Teams in einem Nexus.

    Hier geht es nicht wirklich darum , Teams Arbeit zuzuweisen . Vielmehr unterstützt es die Vorstellung, dass die Teams an lose gekoppelten Bereichen arbeiten sollten, die täglich in den Nexus integriert sind. Dies ist viel einfacher, wenn Teams um Feature-Sets oder Subsysteme herum gebildet werden.

  3. Das Product Backlog in Nexus soll nicht in streng linearer Reihenfolge bearbeitet werden.

    Anstelle einer streng linearen oder sequentiellen Reihenfolge soll ein Nexus-Produkt-Backlog zusätzliche Informationen enthalten, um die Auswahl von Elementen während der Nexus-Sprint-Planung zu leiten. Betrachten Sie die folgenden Aussagen:

    • Während die Product Backlog-Elemente verfeinert und fertig gemacht werden, werden Indikatoren dafür, welches Team die Arbeit innerhalb eines Sprints erledigen wird, sichtbar gemacht.

    • Product-Backlog-Elemente werden in dünn geschnittene Teile von Funktionen verfeinert, und das Team, das wahrscheinlich die Arbeit erledigen wird, sollte so früh wie möglich identifiziert werden.

    • Der erste Teil des teamübergreifenden Refinements sollte damit verbracht werden, Product Backlog-Elemente in genügend Details zu zerlegen, um zu verstehen, welche Teams sie in welcher Reihenfolge in den kommenden Sprints liefern könnten.

    Während der Nexus-Sprint-Planung wählt jedes Team die Arbeit für den Nexus auf Scrum-ähnliche Weise aus, aber die Teams sollten die obersten Backlog-Elemente auswählen, die ihr spezifisches Sprint-Ziel innerhalb des übergeordneten Nexus-Sprint-Ziels unterstützen. Jede zusätzliche Verfeinerung oder Neuordnung kann vom Product Owner bei Bedarf spontan vorgenommen werden.

Indem Sie sicherstellen, dass Ihre Scrum-Teams funktionsübergreifend, aber so locker wie möglich mit anderen Teams gekoppelt sind, erreichen Sie mit größerer Wahrscheinlichkeit Größe. Ihre Nutzung des Product Backlogs muss diese Organisationsstruktur unterstützen und für teamübergreifende Verfeinerung und Integration optimiert sein.

Fügen Sie dem Product Backlog fehlende Integrationsgeschichten hinzu

Das Ziel von Nexus ist es, Scrum für die Integration zwischen Subsystemen zu skalieren. Wenn Ihr Prozess oder Ihre Toolchain keine Integration unterstützt, müssen Sie iterieren, bis dies der Fall ist.

Die Rolle des Nexus-Integrationsteams besteht darin, zu ermitteln, was getan werden muss, um die Integration zu erleichtern. Wenn die Integration schwierig ist, weil Ihnen die Tools oder die Infrastruktur für eine ordnungsgemäße Integration fehlen, sollte das Nexus-Integrationsteam mit den Scrum-Teams und dem Product Owner zusammenarbeiten, um Integrationselemente im Product Backlog zu erstellen und zu priorisieren.

Dies ist nicht nur ein Ideal; es ist eigentlich eine Anforderung des Nexus-Frameworks. Der Leitfaden sagt ausdrücklich:

Das Nexus-Integrationsteam übernimmt alle Integrationsprobleme. Es ist verantwortlich für die erfolgreiche Integration aller Arbeiten aller Scrum-Teams in einem Nexus. Die Integration umfasst die Lösung aller technischen und nicht-technischen teamübergreifenden Einschränkungen, die die Fähigkeit eines Nexus beeinträchtigen können, ein konstant integriertes Inkrement bereitzustellen.

Wenn der Product Owner oder die Stakeholder keine Priorisierung der Integration zulassen, wird die Nexus-Implementierung wahrscheinlich scheitern. Nexus als eine Möglichkeit zu behandeln, Ressourcen zu skalieren, ohne sich mit der Integration zu befassen, verfehlt den gesamten Sinn des Frameworks.

Danke @CodeGnome; Was Sie geschrieben haben, entspricht sehr genau meiner eigenen Interpretation, wie wir vorankommen können. Jetzt brauche ich die Zustimmung der Interessenvertreter. Danke für eine ausgezeichnete Antwort.