Wir haben derzeit 5 Scrum-Teams, die im vergangenen Jahr ihren eigenen Produktstau abarbeiten. Jedes Team arbeitet an einem eigenen dedizierten System, aber die zugrunde liegende Technologie ist dieselbe .Net.
Es gab viele Diskussionen darüber, zu funktionsbasierten Teams zu wechseln, die an einem einzigen Rückstand arbeiten. Der Grund dafür ist, dass eines unserer Hauptsysteme einen erheblichen Arbeitsaufwand hat und die Kapazität nicht ausreicht, um alle Arbeiten des Jahres auszuführen. Der andere Grund, von dem ich glaube, dass er von Bedeutung ist, ist die größere Flexibilität, sich schnell auf Änderungen im Portfolio einzustellen.
Es wurde beschlossen, zwei Teams zu ändern, um an einem einzigen Rückstand zu arbeiten, aber die Entwickler haben keine Erfahrung mit den anderen Systemen. Eine Sache, die wir tun, ist Cross-Skilling, indem wir einen erfahrenen Systementwickler in das Team übernehmen.
Meine Frage ist, haben Sie Erfahrung mit der Umstellung auf einen einzelnen Rückstand für zwei oder mehr verschiedene Systeme? Was waren Ihre Herausforderungen? Was mussten Sie tun, damit es funktioniert?
Antworten:
Wir verwalten ungefähr ein halbes Dutzend Projekte mit einem einzigen Rückstand. Ich sage "über", weil es davon abhängt, wie Sie Projekte differenzieren möchten.
Wir haben locker fünf oder sechs Produktbesitzer, von denen einige mehr als ein Produkt besitzen. Wir haben ein relativ kleines Team mit sieben Entwicklern und einem Teamleiter, der auch codiert, wenn er Zeit hat. Und wir haben einige Evangelisierer, die mit unseren Prozessleuten zusammenarbeiten, um Ideen in die Pipeline zu bringen. Natürlich tragen einige Leute mehrere Hüte, was die Dinge trübt, aber ich werde das für meine Antwort ignorieren. Interessanterweise haben wir keinen formalen Scrum Master.
Wir mussten keine Rückstände zusammenführen, aber es klingt nach einer einfachen Aufgabe auf Ihrer Seite.
Die Organisation der Dinge kann sehr schmerzhaft sein. Hier sind einige Punkte, die Sie berücksichtigen sollten.
Governance ist der Schlüssel. Jeder, der einen administrativen Finger im Kuchen hat, muss mit anderen kommunizieren, bevor er wesentliche Änderungen vornimmt. Und / oder diejenigen, die Änderungen vornehmen, müssen mit ihrer Autorität vertraut sein (und bereit sein, die Hitze für eine schlechte Änderung zu nutzen). Unsere Veränderer haben eine starke Unterstützung durch Führungskräfte und die Linien sind in den Bereichen ziemlich klar gezogen. Aber wenn es Zweifel gibt, fragen wir, bevor wir uns ändern.
Mit der Pflege, Priorisierung und dem Start von Rückständen kann mehr Aufwand verbunden sein. Die Priorisierung als Ritual leidet am meisten, weil es schwierig ist, alle Eigentümer regelmäßig zusammenzubringen. Wir verwenden eine Reihe von Zwischenzeiten, um Prioritäten auszuhandeln und / oder die schlechte Nachricht zu übermitteln, dass die Priorität nicht gekürzt wird.
Ein Großteil unserer Arbeit basiert auf externem Engagement. Das nimmt unseren Entscheidungen einen Teil der Autonomie, aber das ist die Realität des Geschäfts. Ihre Entwickler müssen sich dieser Änderung jedoch bewusst sein. Federn können gekräuselt werden, wenn ein Kontrollverlust wahrgenommen wird. Wir versuchen jedoch, nicht zu viel zu tun, und wir mussten einigen Produktbesitzern, die kurz davor standen, es in den Sprint zu schaffen, "Nein" sagen.
Im Allgemeinen verwenden wir zwei Methoden, um zu kennzeichnen, zu welchem Produkt ein Product Backlog-Element gehört. Wir verwenden beides einfach, weil es die Pflege und andere Aufgaben erleichtert.
Wir müssen uns bewusst um Cross-Training bemühen und sicherstellen, dass jeder in den verschiedenen Bereichen Hand anlegen kann. Wir haben eine sehr große Codebasis in Bezug auf unser Entwicklungsteam. Ein Teil des Codes, den wir machen, ist ebenfalls sehr spezialisiert. Unser Teamleiter ist in dieser Hinsicht großartig und er wird unser Engagement noch weiter senken, damit wir uns die Ineffizienzen leisten können, die durch Cross-Training entstehen. Eine starke Teamführung ist in dieser Hinsicht von entscheidender Bedeutung.
Wir tun unser Bestes, um unsere Sprint-Zeitrahmen einzuhalten. Komplexe Projekte mit neueren Teammitgliedern führen nicht selten zu Verpflichtungen. Der Prozess um Ihre Verzweigung wird hier wirklich helfen. Alle unsere Arbeiten werden für einen Zweig ausgeführt, der dann wieder zu einem Trunk-Release zusammengeführt wird. Wir haben auch einen Build-Server, der zusätzlich zu Ad-hoc-Triggern jede Nacht ausgeführt wird. Entwickler, die den Build brechen, kennen und beheben das Problem innerhalb von 24 Stunden. Zeitraum. Wenn Sie das Problem nicht innerhalb von 24 Stunden lösen, wird Ihr Commit zurückgesetzt und die älteren Entwickler geben ihnen Kummer. Und die älteren Entwickler sind am härtesten für sich, wenn es darum geht, den Build aufrechtzuerhalten.
Code-Durchgänge und Überprüfungen werden noch kritischer. Es hilft, alle auf dem Laufenden zu halten, was sich in den verschiedenen Bereichen ändert.
Ebenso sind alle Entwickler und unsere UI-Mitarbeiter am täglichen Standup beteiligt. Wir stehen am Rande einer vorteilhaften kollaborativen Kommunikation und Ineffizienz von zu vielen Menschen. Aber wir halten den Standup auf weniger als 15 Minuten und werden uns schnell von den Nebengesprächen entfernen. Normalerweise sind wir in 5 bis 10 Minuten fertig.
Ich kann nicht über die Auswirkungen auf Metriken wie Geschwindigkeit oder Gesamtbindung und Burndown-Raten sprechen. Diese Aspekte waren einfach nicht wichtig genug, um sie genau zu verfolgen. YMMV, berücksichtigen Sie dies. Dies setzt auch voraus, dass jedes Team eine ziemlich ähnliche Definition des Story Points hat. Wenn nicht, werden die ersten Schätzungen nach dem Zusammenführen durcheinander gebracht. Dies führt auch zu Problemen bei historischen Vergleichen, da Sie nicht dieselbe Maßeinheit wie zuvor verwenden. Ein einfacher Ausweg besteht darin, es einfach als "neues Team" für die Metriken zu deklarieren und nach dem Zusammenführen mit dem Sammeln von Daten zu beginnen.
Wir haben einen erheblichen Nutzen aus diesem Ansatz gezogen. Wir hatten einige Sprints, bei denen alle Hände auf einen Bereich konzentriert sind und wir in kurzer Zeit viele Veränderungen ausschalten können. Sie sollten den Wert nicht unterschätzen, der sich daraus ergibt, dass Sie schnell die doppelte Anzahl von Entwicklern auf ein bestimmtes Projekt anwenden können. Aber Sie müssen das Cross-Training im Voraus absolvieren. Es bedeutet auch, dass wir niemals Entwickler haben, die aufgrund von Testzyklen oder Pflege oder was auch immer "nichts zu tun" haben. Wir haben immer einen Rückstand zu bewältigen.
Zeit für F & E-Projekte einplanen. Andernfalls ist es für sie zu einfach, durch die Ritzen zu rutschen, und Sie verlieren die Möglichkeit, in diese Bereiche zu investieren.
Arbeiten Sie wirklich an egoloser Codierung, und obwohl Sie vielleicht Experten in einem Bereich haben, haben Sie keine Eigentümer eines Codebereichs. Es ist wichtig, die Möglichkeit von Blutergüssen zu vermeiden, wenn verschiedene Stile in einen Bereich eingeführt werden. Solange der neue Code den Teamstandards entspricht und funktionsfähig ist, sollte er gut sein. Nur weil es nicht so ist, wie der Experte es getan hätte, spielt es keine Rolle.
Stellen Sie sicher, dass die beteiligten Teams dieselben Codierungskonventionen und -stile verwenden. Nichts wie Inkonsistenz hier, um Ihre Integrationsversuche zu zerstören.
Halten Sie Ihre Rückblicke und halten Sie sie als Gruppe. Es ist wichtig, dass alle Feedback erhalten, was funktioniert, was nicht funktioniert und was anders ausprobiert werden muss. Dies fördert das Gefühl der Kameradschaft im Team und vermittelt ein Gefühl der Eigenverantwortung für den Entwicklungsprozess.
quelle
I can't speak to the effects on metrics like velocity or overall commitment and burndown rates. Those aspects just haven't been important enough for us to follow closely.
- Woher weißt du dann, wie viel in einen Sprint passt? Es muss etwas los sein, auch wenn es meistens bewusstlos ist.Die richtige Scrum-Antwort lautet "Fragen Sie die Teams". Dies ist das Prinzip der Selbstorganisation, bei dem sie sich umstrukturieren können sollten, um die Arbeit schnell erledigen zu können. Sie sehen, dass viele Leute in den Teams mehr Kontextwissen haben als ein Außenseiter und wissen, was am besten ist. Dies schließt auch den Product Owner ein.
Ich gehe davon aus, dass Sie hierher gekommen sind und die Frage gestellt haben, da sich etwas nicht richtig anfühlt und Sie versteckte Bedenken haben. Ich werde Ihnen daher einige Hinweise geben, die Sie mit dem Team besprechen können, um die richtige Entscheidung zu treffen.
Product Owner
Es gibt nur einen Product Owner für einen Rückstand, und dies sollte eine Geschäftsperson oder eine Person sein, die das Geschäft vertritt. Es sollte kein IT-Management sein. Ein großer Rückstand hat viele Elemente und bei mehreren Teams kann es zu viel sein, als dass eine einzelne Bestellung damit fertig werden könnte. Möglicherweise möchten Sie die Rückstände aus diesem Grund getrennt halten.
Wenn es mehrere Bestellungen gibt, benötigen Sie definitiv mehrere Rückstände, da Teams in einem Sprint einer einzelnen Bestellung und einem Rückstand zugeordnet werden sollten. Der Grund dafür ist, dass ein Team Konflikte zwischen den Prioritäten der Produktbesitzer nicht bewältigen muss.
Produktentwicklung versus Wartung
Wartungsteams arbeiten an vielen kleinen Verbesserungen, Fehlern an mehreren verschiedenen Produkten und möglicherweise an mehreren Produktbesitzern. Diese BAU-Teams benötigen die Unterstützung des IT-Managements, um Konflikte zwischen mehreren Produktbesitzern zu planen und zu verwalten.
Projektteams sollten sich jeweils auf ein Produkt konzentrieren, um den Kontextwechsel zu minimieren und jeweils ein großartiges Produkt bereitzustellen. Kontextwechsel könnten zur Lieferung vieler mittelmäßiger Produkte mit einem gewissen Grad an technischer Verschuldung führen.
Kontextwechsel
Die Arbeit an mehreren Produkten oder verschiedenen Funktionen führt zu einem Kontextwechsel, der die Produktivität des Teams verlangsamt. Die PO sollte dies berücksichtigen, wenn sie herausfindet, was als nächstes kommt und welches Team an welcher Arbeit arbeiten soll. Das Ausmaß des Wechsels ist nicht unbedeutend und nicht nur ein theoretisches Problem, es ist real und ich habe gesehen, dass das Team aufgrund dessen um bis zu 80% an Produktivität verloren hat.
Eine gute Bestellung wird Gruppenfunktionen und Arbeitstypen ausprobieren, um Teams dabei zu unterstützen, weniger Kontextwechsel durchzuführen und so ihre Leistung zu verbessern.
Risiko
Leider versucht das Management, das Risiko von Zeit-, Geld-, Budget- und Geschäftsdruck auf das Team auszuüben. und Teams akzeptieren dies, indem sie dem zustimmen. Als Entwicklungsprofi sollten Sie einfach die Fakten und Auswirkungen der Entscheidungen angeben und das Unternehmen auf eigenes Risiko bringen.
Beispiele
Ich stimme einer lächerlichen Zeit zu. Sagen Sie lieber, welche Anstrengungen erforderlich sind, um die Arbeit ordnungsgemäß zu erledigen und das Zeitproblem für das Unternehmen zu bewältigen
Schätzungen. Unternehmen erwarten von Teams eine genaue Schätzung in einer Welt voller Komplexität und Unsicherheit. Die Teams sollten die Unternehmen fragen, was sie tun, um Abhilfe zu schaffen, wenn die Schätzungen aufgrund unvorhergesehener Herausforderungen, die sehr wahrscheinlich sind, überschritten werden. Teams sollten nicht Fett berücksichtigen, sondern das Geschäft.
Technische Schulden. Die Teams sollten schätzen, dass qualitativ hochwertiger Code vollständig getestet wurde, und dies schätzen, dh aufhören, Fehler aufgrund von Druck zu schreiben. Wenn Unternehmen eine geringere Qualität wünschen, ist dies ihr Risiko, und wenn etwas schief geht, ist dies ihr Problem.
Professionalität
Seien Sie ein Profi, indem Sie angeben, die richtigen Dinge in der vereinbarten Qualität zu bauen. Schätzen Sie Ihre besten Fähigkeiten anhand der vorliegenden Fakten. Wenn sich diese Fakten ändern, teilen Sie sie mit und passen Sie die Schätzung an. Bauen Sie als Entwicklungsteam großartige Produkte und gehen Sie kein Geschäftsrisiko ein. Kommunizieren und verwalten Sie Erwartungen.
Inspizieren und anpassen
Teams sollten immer nach Verbesserungsmöglichkeiten suchen und wenn sie das Gefühl haben, dass es die Dinge verbessern wird, sollten sie es versuchen. Überprüfen Sie dann, ob es Verbesserungen gibt. Schließlich sollten sie ihren neuen Ansatz anpassen und verbessern oder ihn ausrangieren, wenn er nicht funktioniert. Die Absicht hinter dem Streben nach Verbesserung sollte immer da sein.
Endeffekt
Letztendlich ist die Verwaltung des Rückstands die Wahl der Bestellung. Wie er / sie die Warteschlange der Arbeit verwalten möchte, liegt bei ihnen. Der einzige Gedanke ist, dass sie die Arbeitspipeline zu ALLEN Teams gesund und in einem guten Zustand halten MÜSSEN. Es liegt also an der PO zu entscheiden.
Der Vertrag
In Sprint-Planungssitzungen sollte das Team eine Liste gepflegter Produktrückstände erwarten, die klar, eindeutig und geordnet sind. Bei einer kurzen Diskussion mit der PO sollte das Team genau wissen, was die PO will. das WAS . Das Team konzentriert sich dann darauf, wie sie bauen werden.
Wenn die Bestellung gut vorbereitet zum Planungsmeeting kommt, wen interessiert es dann, wie der Rückstand verwaltet wird? Wenn die PO nicht auf das Sprint-Planungsmeeting vorbereitet ist, sollte dies vom SM angegangen und sehr gut sichtbar gemacht werden, da dies völlig inakzeptabel ist und kein Teamproblem darstellt.
quelle
Wir haben erst kürzlich den Rückstand eines anderen Teams aufgefangen. Das Team hatte nur ein Mitglied (ich weiß nicht viel von einem Team), aber es gibt tatsächlich Arbeit an ihrem Rückstand. Wir sind mit ihrer Arbeit nicht sehr vertraut, und sie sind mit unserer nicht sehr vertraut.
Auch wenn Ihre Rückstände zusammengeführt werden, bedeutet dies nicht, dass jeder sofort an allem arbeiten muss. Es ist unvernünftig, das zu erwarten. Machen Sie sich also keine Sorgen, dass jeder in der Lage ist, alles in beiden Rückständen sofort zu erledigen.
Lassen Sie stattdessen beide Teams genau an dem arbeiten, woran sie zuvor gearbeitet haben. Der einzige Unterschied ist, dass sich alles im selben Rückstand befindet.
Bei jeder Iteration / jedem Sprint arbeiten einige Mitglieder jedes Teams an Geschichten aus dem anderen Rückstand. Indem nicht alle gleichzeitig an unbekannten Elementen arbeiten, verteilen Sie die Kosten für das Erlernen der Systeme der anderen . Im Laufe der Zeit wird Ihr Team nach und nach das Wissen der anderen aufnehmen.
Wenn Sie alles im Voraus lernen, wird es erhebliche Leistungseinbußen geben. Jemand in der Geschäftsleitung wird es sicherlich bemerken, und Sie werden gezwungen sein, den Rückstand eines anderen Teams zu absorbieren, in der Hoffnung, dass ein neues Team die schlechte Leistung ausgleichen kann ... :) Witze beiseite, dies wäre jedoch meine Empfehlung.
quelle
Ich gehe davon aus, dass der Grund, warum Sie (oder das Management) ein zusammengeführtes Backlog für zwei Teams erstellen möchten, darin besteht, dass Sie nur Backlog-Elemente für eines der Systeme auswählen und beide Teams daran arbeiten lassen möchten.
Wenn dies der Fall ist, erwarten Sie viel Reibung von dem Team, das gezwungen ist, an dem System zu arbeiten, mit dem es nicht vertraut ist. Erwarten Sie, dass das Team jeden Strohhalm (dh einen winzigen Rückstand im Zusammenhang mit seinem "Heim" -System) nimmt, um weiter an dem System zu arbeiten, an dem es zuvor gearbeitet hat. Wer ist schuld? Es macht keinen Spaß, an etwas zu arbeiten, in dem Sie nicht gut sind. Und die Tatsache, dass das andere Team gut ist, weil Sie nicht gut darin sind, macht es noch schlimmer - weil Sie dadurch noch dümmer aussehen.
Der einzige Weg, um dies zum Erfolg zu führen, besteht darin, die beiden Teams aufzuteilen und in zwei gemischte Teams zu formen. Nur dann besteht die Möglichkeit, dass Sie alle Entwickler auf dem (derzeit) "wichtigen" System schnell auf den neuesten Stand bringen.
quelle
Das ist nicht sehr gut, um es so zu machen. Meine vorherige Firma ging in den Einzelproduktmodus eines einzelnen Produkts, weil in einer großen Firma verschiedene Leute an verschiedenen Dingen arbeiteten.
Das Wechseln zwischen Projekten kostet auch Aufwand, und wenn es eine neue Person gibt, die mit der Entwicklung von Overhead beginnt, ist das wirklich groß. Man muss Zugriffsrechte auf ein entwickeltes System, ein anderes Repository usw. erhalten.
Ich bevorzuge Spezialisierung, die Leute wissen, was sie tun, haben alle benötigten Informationen, kennen die Fallstricke des Projekts und die Leute haben nicht das Gefühl, dass man sie von Projekt zu Projekt fallen lassen muss, um sie zur Arbeit zu bringen, um jeden Cent herauszuholen Sie.
Selbst wenn sie in ihrem Projekt im Leerlauf sind, sind sie in dem, was sie kennen, viel produktiver, als von Projekt zu Projekt zu springen.
quelle