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?
Antworten:
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!
quelle
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.
quelle
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.
quelle
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.
quelle
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).
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.
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.
Praktiken, die die schlechten Konsequenzen der Aufteilung eines Teams abmildern können
quelle
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:
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 .
quelle