Wie koordiniere ich die Entwicklerzeit zwischen zwei verschiedenen Projekten in Scrum?

40

Ich wurde zum Scrum Master eines neu gegründeten Teams, das für die Erstellung einer Software UND die Wartung anderer bereitgestellter Anwendungen verantwortlich ist. Grundsätzlich hat jedes Teammitglied Entwicklungs- und Betriebsaufgaben.

Ich habe in den letzten Wochen beobachtet, wie sie funktionieren, und festgestellt, dass das Team Schwierigkeiten hat, diese Aufgaben zu koordinieren. Wenn sich ein Entwickler auf das Codieren konzentriert, wird er unterbrochen, um ein in der Produktion auftretendes Problem zu beheben, und es fällt ihm schwer, sich wieder auf die vorherige Aufgabe zu konzentrieren.

Ich habe versucht,% der Entwicklerzeit für die operative Arbeit bereitzustellen, aber anscheinend ist das Problem dadurch nicht behoben. Ich bin daran interessiert, von Scrum-Meistern zu hören, die zuvor auf diese Situation gestoßen sind. Wie haben Sie das geschafft und was sind Ihre Empfehlungen?

Shadin
quelle
1
Priorisieren und beheben Sie zuerst den kritischen Produktionsfehler und setzen Sie dann die normale Entwicklung fort. Beide fordern gleichzeitig, dass ein Fehler gemacht wird.
Mark Rogers

Antworten:

60

Dieses Problem ist so alt wie Scrum. Es gibt eine Lösung, aber Sie werden es nicht mögen.

  • Stellen Sie neue Aufgaben in den Rückstand.
  • Unterbrechen Sie Entwickler nicht.
  • Warten Sie auf den nächsten Sprint.

Wenn Sie Ihre Entwickler in mehr als ein Scrum einbinden, zwei separate Backlogs haben oder nur einen Prozentsatz ihrer Zeit dem Sprint zuweisen, wirkt sich dies gegen das aus, was Scrum erreichen möchte, dh einen konsistenten Fluss abgeschlossener Aufgaben.

Wenn Sie diese Art von Dingen ausprobieren, kehren Sie im Grunde zu den Entwicklungsmethoden "Chaos" oder "JFDI" mit all ihren damit verbundenen Problemen zurück, z

  • Der Entwickler hat zehn Aufgaben gleichzeitig unterwegs. Niemand weiß, woran er arbeitet oder wann er fertig sein wird.
  • Unbekannte Zeit bis zum Abschluss des Projekts, da dies davon abhängt, welche anderen Projekte zur gleichen Zeit ausgeführt werden.
  • Keine konsistente Sicht auf die Projektpriorität. Andere Manager leiten Entwickler zu ihren Lieblingsprojekten um.

Natürlich lautet die übliche Antwort auf diesen Rat: "Aber das kann ich nicht! Das Unternehmen braucht diese Produktionsfehler, um sie so schnell wie möglich zu beheben!"

Das stimmt aber nicht wirklich.

Wenn Sie wirklich so viele tatsächliche Fehler haben, die das Geschäft in diesem Ausmaß beeinträchtigen, müssen Sie professionell werden und Ihre Tests verbessern. Arbeiten Sie einfach an Fehlern und automatisierten Tests, bis Sie alle behoben haben. Stellen Sie ein QA-Team ein und testen Sie alle Neuerscheinungen.

Was jedoch wahrscheinlicher ist, ist einer der folgenden:

  • Die Fehler sind Betriebsprobleme, unzureichender Speicherplatz, kein DR, keine Backups, kein Failover usw. Bitten Sie ein OPS-Team.

  • Die Bugs sind Benutzer, die nicht verstehen, wie das System funktionieren soll. "Das ist passiert! Ist es ein Bug?". Holen Sie sich einen Helpdesk und schulen Sie Ihre Benutzer, schreiben Sie Dokumentation.

  • Angst vor Rollback. Sie haben eine neue Funktion gestartet und sie hat etwas kaputtgemacht. Versuchen Sie nicht, eine Lösung zu finden. Machen Sie einen Rollback auf die vorherige Version und setzen Sie die Fehler in den Rückstand.

Ewan
quelle
5
Wie lange ist dein Sprint? Ich würde auf eine einzelne Woche gehen
Ewan
3
Sie können davonkommen, wenn Sie die Überprüfung nicht durchführen und Retro, vielleicht tun Sie sie einmal im Monat. Design (UI-Design?) Als separates Team / Sprint ist meiner Meinung nach eine gute Idee. Hoffentlich ist das Design die meiste Zeit vor dem Start des Entwicklers fertig und ändert sich nicht zu sehr
Ewan
3
Der Product Owner möchte, dass Entwickler alles löschen und an Produktionsfehlern arbeiten, den aktuellen Sprint stoppen, den Fehler beheben und einen weiteren Sprint starten, wenn er fertig ist. Diese Entscheidungen haben Konsequenzen, sodass der Produktbesitzer die Auswirkungen auf die sofortigen Fehlerkorrekturen erkennt. Sie müssen mehr Diskretion anwenden, wenn die Dinge als Notfall betrachtet werden. Oder Sie können warten und sie beim nächsten Aufstehen ansprechen. Auf diese Weise können Sie sehen, wer über zusätzliche Bandbreite verfügt, und Sie können den Fluss des Entwicklers nicht unterbrechen.
JeffO
5
Wenn Sie die Überprüfung und Retro überspringen und in einem separaten Sprint entwerfen, ist kein Scrum mehr übrig ...
Erik
6
Ihre Lösung lautet: "Oberste Autorität im Unternehmen erlangen, dann viel Geld ausgeben, indem Sie drei völlig neue Teams bilden"?
Leichtigkeit Rennen mit Monica
25

Ich versuche hier nur über den Tellerrand hinaus zu denken.

Da es möglicherweise nicht möglich ist, den Produktbesitzer dazu zu bringen, die Dinge auf Ihre Weise zu sehen. Es kann immer noch kritische Fehler geben, die nicht lange auf sich warten lassen. Treffen Sie sich mit Kunden, bei denen Entwicklerunterstützung benötigt wird, usw. Sie müssen einen Entwickler für eine Weile aus dem Sprint nehmen.

Warum nicht versuchen, dies zu antizipieren und es zu Ihrem Vorteil zu nutzen?

Sie benötigen ein Team von 5+, um vielleicht realistisch zu sein.

Aber warum nicht bei jedem Sprint einen Entwickler ausschalten (zwischen den Entwicklern wechseln, jeder ist an der Reihe)?

Da es höchstwahrscheinlich nicht genügend Fehler gibt, um einen vollständigen Entwickler für Korrekturen zu verwenden, gibt es andere Probleme oder Aufgaben, die ausgeführt werden können.

  • Ausführen von Tests, um Leistungsengpässe oder Skalierbarkeitsprobleme zu identifizieren
  • Wartung des Buildsystems
  • Treffen mit Kunden
  • Erforschung neuer Frameworks / Bibliotheken
  • Erkunden Sie die Sprachfunktionen, die Sie verwenden möchten
  • Lesen Sie mehr über Sicherheitsprobleme
  • Datenbankpflege
  • Serverwartung

Die Geschwindigkeit des Teams könnte steigen, der Stress könnte sinken, Konflikte mit dem Management könnten sinken, Sie haben tatsächlich Zeit, Ihr Wissen zu verbessern.

Gebogen
quelle
3
Ich habe das Gleiche gedacht - einen Entwickler für die "Aufgaben" (Produktionsprobleme) drehen und, da er nicht viel echte Arbeit erledigen wird, ihn auch forschen / erforschen / andere unregelmäßige Dinge machen lassen. Führen Sie eine gute Ursachenanalyse für jedes Produktionsproblem durch, damit die Anzahl der Probleme sinkt.
RemcoGerlich
1
Das ist eigentlich eine sehr gute Idee! Ich werde ein oder zwei weitere Entwickler einstellen müssen, aber ich glaube, es lohnt sich. Danke vielmals!
Shadin
1
In unserem Projekt haben wir diese Position zu einem gewissen Grad formalisiert. Wir haben einen erfahrenen Entwickler für jedes Team, der als Technischer Leiter für das Scrum-Team bestimmt ist. Die TL macht eine Reihe von Dingen (Mentor für Nachwuchsentwickler, mache "4 + 1-Pläne" vor der Produktion, löse Probleme für andere Entwickler, wenn sie auftauchen usw.), aber eine Sache, die mit TL einhergeht, ist die Behandlung von Problemen bei der Herstellung heißer Kartoffeln und Fehler mit hoher Priorität. Natürlich hängt eine Menge von Ihrem Produktionssystem / Ihrer Produktionsphilosophie ab, aber die TL kann eingreifen, um den Rest des Teams "abzuschirmen" und sie sich auf User Stories konzentrieren zu lassen.
JBiggs
14

Eine effektive Lösung für das Management der Entwickleranstrengungen bei wirklich wichtigen Produktionsproblemen, die ich verwendet habe, ist der "Batman-Ansatz".

Der teure Aspekt der Produktionsunterstützungsverantwortung bei der Entwicklung neuer Funktionen ist das Wechseln des Kontexts. Sie sollten daher versuchen, dies zu begrenzen.

Erstellen Sie mit dem Buy-In des Teams eine Liste der Teammitglieder und durchlaufen Sie diese, sodass jeden Tag eine neue Person beim Stand-up-Meeting zum "Batman" erklärt wird und an diesem Tag auf wichtige Produktionsprobleme reagiert. Der Rest des Teams kann sich auf die Entwicklung konzentrieren, ohne den Kontext wechseln zu müssen, und jeder hat einen angemessenen Anteil am Schmerz der Unterstützung. Mit einem 5-köpfigen Team ist dies ein Tag pro Woche, an dem ein Entwickler unterbrochen werden kann, und vier Tage ununterbrochene, vorhersehbare Entwicklungszeit.

Dies hat den Vorteil, dass das Wissen und die Erfahrung im Team geteilt werden. Sie haben also nicht eine Person, die für die Behebung bestimmter Probleme verantwortlich ist und zu einer einzigen Fehlerquelle und einer gerechten Aufteilung der Support-Probleme wird.

StuperUser
quelle
Ein sehr interessanter Ansatz, und ich glaube, er ist jetzt in unserer Situation anwendbar! Danke vielmals!
Shadin