Wir versuchen, Kanban in unserem Entwicklungsprojekt einzusetzen. Unser Team ist eines von vielen anderen agilen Entwicklungsteams in unserem Unternehmen. Die anderen Teams können entweder Scrum oder Kanban oder etwas anderes verwenden (manchmal nichts, nehme ich an).
Alle Teams arbeiten an einem großen Projekt, aber dieses große Projekt ist in Teilprojekte unterteilt und jedes Team arbeitet an einem Teilprojekt.
Es gibt eine ziemlich starke Interaktion zwischen den Teams:
Diese Interaktionen fallen in zwei Gruppen:
Also denke ich über Möglichkeiten nach, diese Interaktionen effektiv zu verwalten. Wir haben immer viele Aufgaben mit hoher Priorität in unserem eigenen Projekt, ebenso wie die anderen Teams, also sollten die Manager anscheinend zuerst zu einer gemeinsamen Richtlinie über diese Interaktionen kommen.
Haben Sie Erfahrung mit einem solchen teamübergreifenden Aufgabenmanagement? Wie kann man das alles angehen?
Hier gibt es einiges zu bedenken.
Erstens: Wie definieren Sie Ihre Prioritäten? Wenn sie nur auf individueller Teamebene definiert werden, wird es schwierig, Anfragen von anderen Teams zu priorisieren.
Im Idealfall muss dort, wo die Arbeit geteilt wird, eine klare Priorisierung auf oberster Ebene vorhanden sein, damit die Teams leicht wissen, woran sie als Nächstes arbeiten sollten.
Zweitens sollten Sie versuchen, die Teams zur Selbstorganisation zu befähigen. Zeremonien wie Scrum-of-Scrums können hilfreich sein, um den Teams zu ermöglichen, regelmäßig miteinander zu sprechen.
Schließlich wäre es sinnvoll, darüber nachzudenken, wie teamübergreifende Abhängigkeiten reduziert werden können. Zusätzliche Schulungen und Wissensaustausch können dabei wirklich helfen. Es hilft auch, wenn Sie über eine konsistente Codebasis verfügen, sodass es für Teams relativ einfach ist, an Bereichen des Codes zu arbeiten, in denen sie normalerweise nicht arbeiten. Dies, kombiniert mit einer guten automatisierten Regressionstestabdeckung, kann Teams ermutigen, ihre eigenen zu reparieren Probleme, anstatt sich darauf verlassen zu müssen, dass andere Teams dies für sie erledigen.
(Meine Erfahrung ist mit agilen Frameworks, die in Timebox-Sprints funktionieren. Einige dieser Punkte gelten nicht direkt, wenn Sie einem kontinuierlichen Prozess-Framework wie Kanban folgen.)
Die beste Antwort hängt davon ab, warum diese Interaktionen zwischen den Teams stattfinden.
Hier sind einige Möglichkeiten, die ich mir vorstellen kann:
Ein agiles Team sollte über alle notwendigen Fähigkeiten verfügen, um seine Arbeit zu erledigen. Gilt das für diese Teams? Wenn nein, warum nicht? Kann die Zusammensetzung der Teams überprüft werden?
Wurden die Teilprojekte mit dem Ziel definiert, sie zu orthogonalen, unabhängigen Projekten zu machen, die von unabhängigen Teams mit minimaler Koordination bearbeitet werden können? Oder wurden sie auf einer anderen Grundlage geteilt, die jetzt Schwierigkeiten bereitet, und wenn ja, kann dies erneut geprüft werden?
Bittet Team A um Arbeit von Team B, weil es Hilfe braucht, um seine Aufgaben innerhalb der definierten Zeit zu erledigen? Wenn dies der Fall ist, müssen die Teams bei der Kapazitätsplanung besser werden: Fähigkeiten wie Backlog-Verfeinerung und -Schätzung.
Auf einer etwas anderen Anmerkung: Kein Team sollte Arbeit planen, um 100 % seiner theoretischen Kapazität auszuschöpfen. Ein Ziel von ~70 % lässt den Entwicklern Raum für andere Arbeiten, die während der Timebox anfallen: ob es sich dabei um neu entdeckte Komplexität oder überraschende Fehlerbehebungen, laufende Wartung oder Schulung handelt ... oder um Anfragen von anderen Teams, ihr Fachwissen zu teilen .
Dies ist wahrscheinlich der beste Grund, der mir einfällt, weil es eine gute Absicht hat, obwohl die Implementierung Probleme verursacht. Wenn es der Wunsch der Organisation ist, dass Teams zum Zweck des Wissenstransfers an den Code-Reviews der anderen teilnehmen usw., dann gibt es vielleicht weniger störende Möglichkeiten, dies zu tun.
Ein paar andere Gedanken:
Aus praktischen Gründen habe ich damit begonnen, Etiketten wie „teamb_support“ auf solche Tickets zu kleben, damit wir diese Support-Anfrage schnell genug sehen und daran erinnert werden können, Team b nicht zu überraschen.
Diese beiden Punkte wirken zusammen: Während Team A erfährt, dass Team B mitten in einem Sprint nicht auf eingehende Anfragen reagieren wird, lernt Team A auch, wie der Sprint- (oder andere Planungs-) Rhythmus von Team B ist, und lernt, im Voraus zu fragen .
Thomas Owens
Todd A. Jacobs
Chris Brettini
Todd A. Jacobs