Wie lässt sich ein agiles Team, das eine Web-App erstellt, am besten skalieren und aufteilen?


14

Ich bin vor kurzem in ein Unternehmen eingetreten, in dem ich als Scrum-Master an einem agilen Entwicklungsprojekt für eine Web-App arbeite.

Das Team ist im Begriff, die maximale Größe für ein agiles Team zu erreichen (voraussichtlich 9 in der nächsten Woche). Wir haben darüber gesprochen, das Team möglicherweise in zwei Teams aufzuteilen, nicht so sehr, um die Stand-ups zu verkürzen (was im Moment nicht übermäßig ist), sondern um zu verhindern, dass sich die Leute in Sprint-Planungssitzungen völlig langweilen (was wiederum nicht übermäßig lang ist).

Das Projekt besteht aus zwei sehr unterschiedlichen Ebenen: High-Tech-Backend-Entwickler (wie sehr komplex) und UI-Design / Build / Integration. Es sieht so aus, als würden die Leute von der Benutzeroberfläche, wenn die Backend-Leute sich technisch unterhalten, die Zone verlassen und umgekehrt. Es scheint die logische Art und Weise zu sein, das Team aufzuteilen, um Zeit zu sparen, aber ich habe einen massiven Vorbehalt dahingehend, dass alles, was ich wirklich tun könnte, darin besteht, die Zusammenarbeit und den Wissensaustausch zu reduzieren. Die beiden Teams haben einfach keine gute Vorstellung davon, was der Rest des Teams aufbaut.

Hat jemand Erfahrung im Umgang mit so etwas?


Haben die Teams Anführer?
SuperM

Es ist ein Kompromiss, mehrere Teams zu haben. Ein großes Team (sogar größer als 9) kann in Ordnung sein, verglichen mit dem Aufwand für Scrums of Scrums usw. Es erfordert nur ein wenig mehr Disziplin in den Stand-ups
Dave Hillier

Ja, beide müssten Führer haben. Derzeit würde eines der Teams jedoch nicht.
Ani Møller

Antworten:


8

Das ist bedauerlich, dass die Benutzeroberfläche sich nicht um die Details der komplexen Backend-Arbeit kümmert. Das klingt eher nach einem Diskussionsthema für eine Retrospektive. Die Aufteilung des Teams entlang der Disziplin wäre ein gefährlicher Präzedenzfall. Wie schnell würde es dauern, bis die Anforderungsbevölkerung die Zone verlässt und sich nicht mehr darum kümmert, was die Benutzeroberflächen-Leute tun und nach ihrem eigenen Team fragen.

Ich habe mich immer für vertikale Scheiben für meine Teams ausgesprochen. UI sollte zuhören, was die technischen Leute zu sagen haben, da sie genau die Leute sind, die helfen könnten, ihre Arbeit zu erleichtern (Oh, dieses Widget wird Sie dazu veranlassen, dies zu tun, was, wenn wir stattdessen dieses Widget verwenden).

Persönlich würde ich mich auf das Problem konzentrieren, dass die Benutzeroberfläche zunächst nicht mehr funktioniert. Wenn die Funktionsstörung dann behoben ist, erörtern Sie, wie Sie die Teams am besten aufteilen können. Ich versuche nicht, die UI-Leute zu verunglimpfen, vielleicht könnten die technischen Leute auch mehr tun, um ihre Diskussionen für die UI-Leute verständlicher zu machen.

Wie andere gesagt haben, sollte das Team sich selbst organisieren dürfen, um die neue Struktur zu bestimmen. Die Erfahrungen der Vergangenheit haben mich gelehrt, dass Selbstorganisation nur dann wirklich funktionieren kann, wenn sich alle um das Team und nicht um ihre eigenen Disziplinen oder Interessen kümmern.

Prost!


"Ich war schon immer für vertikale Scheiben für meine Teams" +1, ich auch! Sie können immer einige UI-Experten oder DB-Experten haben, um diese Abschnitte perfekt zu polieren, aber im Großen und Ganzen ist die vertikale Slice-Entwicklung immer meine bevorzugte Methode.
ozz

7

Es ist in der Tat eine gute Idee, die unabhängigen Teile des Teams in neue Teams aufzuteilen. Bei größeren Projekten ist es für die Entwickler fast unmöglich, mit dem gesamten Projekt vertraut zu sein, sodass die Aufteilung weiterhin formal oder informell erfolgt.

Jedes der neuen Teams sollte einen Teamleiter / technischen Manager haben, der solide Kenntnisse über den Umfang seines Teams besitzt und auch mit der Arbeit anderer Teams vertraut ist.

Danach kann jedes Team separate Scrum-Meetings abhalten und die Leiter der anderen Teams können anwesend sein. Auf diese Weise reduzieren Sie die Anzahl der "gelangweilten" Personen, aber die Teams wissen trotzdem, woran andere arbeiten, und können erfolgreich zusammenarbeiten.

Die Zusammenarbeit wird wichtiger, wenn sich die Bereiche der Teams überschneiden oder ein Team vom anderen abhängt. Aber auch hier muss nicht das gesamte Team anwesend sein - der Teamleiter kann die Zusammenarbeit koordinieren.


5

Ein zentraler Aspekt von Scrum ist die Selbstorganisation .

Ich schlage vor, dass Sie die Frage mit dem Team besprechen und es sie lösen lassen.

Ihre Bedenken sind alle begründet, aber denken Sie daran, dass es Ihre Aufgabe als Scrum Master ist, zu coachen und zu fördern. Fragen Sie sie, wie sie diese Probleme lösen können. Sie werden die Lösungen besitzen und zum Funktionieren bringen .

Ich würde hinzufügen: Im Allgemeinen sind funktionsübergreifende Teams der richtige Weg.


Dies wurde von einigen Teammitgliedern vorgeschlagen, aber ich bin mir nicht sicher, ob dies das Beste ist. Daher die Frage! Ich denke, es kommt darauf an, dass die UI-Leute sich nicht für die Details der komplexen Backend-Arbeit interessieren.
Ani Møller

4

Bei der Aufteilung von Teams denke ich immer daran, dass ein Team in der Lage sein muss, dem Kunden einen Mehrwert zu liefern. In Ihrem Fall wären sowohl Backend- als auch Frontend-Entwickler im Team.


1
In großen Projekten ist es für ein Team schwer bis unmöglich, an allen Aspekten eines Produkts zu arbeiten, und dies ist in der Regel nicht erforderlich. Daher würde ich nicht zustimmen, dass jedes Team für sich in der Lage sein sollte, dem Kunden einen unmittelbaren Mehrwert zu bieten. Kunden interessieren sich nicht für die Benutzeroberfläche oder das Backend, sie benötigen das gesamte Projekt. Auf der anderen Seite sind die Benutzeroberfläche und das Backend Teile des Produkts, und die Teams, die daran arbeiten, tragen zum Wert des Produkts bei.
SuperM

2
Nun, wir sind uns definitiv nicht einig. Die Frage war für ein agiles Team. Für mich ist der Geschäftswert für den Benutzer eines funktionierenden Backends ohne Frontend 0.0. Gleiches gilt für ein funktionierendes Frontend ohne Backend. Und was werden die einzelnen Teams beim Sprint-Review vorführen? Darüber hinaus wird es schwierig sein, die Arbeit beider Teams aufeinander abzustimmen.
Benutzer99561

3
  1. Wie weit ist das Frontend vom Backend entfernt? Vorhersehbar ist das Teilen nur dann ein guter Rat, wenn die Entfernung zu groß ist.

    • Wenn das Backend über das Datenbankschema spricht, ist dies nicht zu weit . Sowohl das Front-End als auch das Back-End müssen Diskussionen über das Datenbankschema abhören.

    • Wenn es im Backend um Sharding, Speicher-Caches, Festplattenlatenz usw. geht, ist dies etwas zu weit fortgeschritten (das Backend konzentriert sich auf mechanische Sympathie und Optimierung, während sich das Frontend auf die menschliche Ästhetik konzentriert).

  2. Gibt es eine stabile und eindeutige Programmierschnittstelle zwischen Frontend und Backend?

    • Stabil und eindeutig bedeutet dies, dass die Benutzer dieser Programmierschnittstelle (die Front-End-Entwickler) nicht mit Änderungen konfrontiert sind und keine Textmauern lesen müssen, um zu lernen, wie sie richtig verwendet werden.

    • Das Backend-Team muss frühzeitig eine gute API und eine Scheinimplementierung bereitstellen und erst danach mit der eigentlichen Entwicklung beginnen.

    • Dies bedeutet nicht, dass die API in Stein gemeißelt werden sollte. Dies ist nur eine Abschwächung der Konsequenz für die Aufteilung eines Teams in zwei.

  3. Warum empfehlen so viele agile Artikel vertikale Scheiben? Hier einige Hintergrundinformationen:

    • In den meisten agilen Artikeln wird aus Kostengründen empfohlen, Backend-Arbeiten zu vermeiden.

    • Vergessen Sie auch nicht, dass ein Teil der agilen Artikel die implizite Tendenz zu Start-up-Unternehmen aufwies.

    • Und vergessen Sie nicht die harte Realität des Marketings - die meisten Kunden zahlen nur für die Frontends.

    • Backend-Arbeiten sind in der Regel kostspielig und haben sich nur langsam ausgezahlt. Sofern ein Unternehmen nicht bereits langfristig etabliert ist und einen anständigen Gewinn erzielt, ist es besser, das Back-End auszulagern, indem man sich an die Standardtechnologie und an Open-Source-Bibliotheken hält.

    • In den meisten agilen Artikeln wird auch empfohlen, das Front-End so zu implementieren, dass es einen Back-End-Switch überlebt. Dieser Rat geht Hand in Hand mit dem vorherigen: Wenn die Standardtechnologie nicht alle Anforderungen erfüllt, versuchen Sie es mit einem anderen.

  4. Praktiken, die die schlechten Konsequenzen der Aufteilung eines Teams abmildern können

    • Stabile Backends
    • Stabile API
    • Back-End mit niedriger Fehlerrate
      • Grund: um Frust zu vermeiden
      • Wie: Komponententests
      • Bedeutet nicht: Leistung oder Optimierung; es muss nur funktionell korrekt sein.
    • Kontinuierliche Integration
    • Transparenz in Kommunikation, Fortschritt und Entscheidungsfindung
    • Fördern Sie informelle Diskussionen zwischen den beiden Teams
    • Ermutigen Sie die Teammitglieder (diejenigen, die nicht ausweichen), an den Sitzungen des anderen Teams teilzunehmen.
    • Vereinbaren Sie gelegentliche gemeinsame Treffen und gemeinsame Rückblicke
    • Andere Teambuilding-Aktivitäten

0

Wie andere würde ich definitiv vorschlagen, mit vertikalen Scheiben zu gehen. Diese werden manchmal als "Feature-Teams" bezeichnet. Ich würde empfehlen, die Vor- und Nachteile auf der Scaled Agile Framework-Website zu lesen: http://scaledagileframework.com/scaled-agile-framework/team/features-components/

Bei der Aufteilung können Ihr Product Owner und Ihr SDF-Master zunächst möglicherweise das Release-Backlog für beide Teams sowie einzelne Backlogs für jedes Feature-Team verarbeiten. Wenn Sie jedoch wachsen, müssen Sie wahrscheinlich ein Produktfeatures-Backlog implementieren, das dann an mehrere agile Teams weitergeleitet wird, um Backlogs freizugeben. Sobald Sie auf diese Ebene skaliert haben, benötigen Sie wahrscheinlich ein separates Team, das das Feature-Backlog verwaltet und die Features dann zur Implementierung an die einzelnen Teams weiterleitet. In dieser Struktur haben Sie möglicherweise Folgendes:

  1. Agiles Team 1: SM, PO, funktionsübergreifendes Team. Hat einen eigenen Team-Rückstand für ihre Geschichten.
  2. Agiles Team 2: SM, PO, funktionsübergreifendes Team. Hat einen eigenen Team-Rückstand für ihre Geschichten.
  3. Programm-Management-Team: Produktmanager, Release-Manager, Enterprise-Architekten. Verfügt über einen eigenen Programmbestand an übergeordneten Epen und Funktionen, die organisiert, analysiert und dann in die Teams eingespeist werden.

Die SAFe-Website bietet eine Menge cooler Dinge für die Organisation größerer Teams. Einige davon könnten für Sie hilfreich sein, wenn Sie zu einer größeren Anzahl von Teams übergehen .

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.