Frage

Ich arbeite an einem Team, das die Möglichkeit einer agilen Entwicklungspraktiken untersucht.

Eine Frage, gegen die wir uns treffen, ist die Entscheidung, wenn eine Iteration (Sprint) abgeschlossen sein sollte.

Nehmen wir an, wir haben unseren Feature-Rückstand definiert und Story-Point-Schätzungen für sie produziert. Wir haben entschieden, dass der erste 30-Tage-Sprint die Funktionen A, B, D und F enthält. Was sollten Sie tun, wenn Sie es tun sollen? Re -Erreichen des Endes des Sprint und Sie haben A, D und F abgeschlossen, aber B ist jedoch nur 80% vollständig. Sollten Sie:

  1. Vervollständigen Sie den Sprint pünktlich, aber das Feature B ausschließen (verschieben Sie die verbleibende Arbeit in einen zukünftigen Sprint)

  2. Erweitern Sie den Sprint, bis die Zeit erforderlich ist, um Feature B zu vervollständigen, aber nicht den nächsten Sprint.

  3. Erweitern Sie den Sprint, bis die Zeit erforderlich ist, um Feature B zu vervollständigen, und beginnen Sie mit dem nächsten Sprint zu arbeiten.

  4. Scheitern Sie den gesamten Sprint und bündeln Sie alle Arbeiten, um Teil einer zukünftigen Veröffentlichung zu sein.

Das Problem, das ich bei Option 1 sehe, ist, dass das Team nicht liefert, was es sich verpflichtet hat. In einigen Fällen können Sie Feature B möglicherweise nicht ausschließen, ohne die gesamte Veröffentlichung nutzlos zu machen (oder zumindest wesentlich weniger wertvoll). Es kann es schwierig machen, die Richtung des nächsten Sprint ohne Feature B. zu leiten

Das Problem mit Option 2 ist, dass einige Mitglieder des Teams möglicherweise über einen erheblichen Zeitraum untätig sein können - was in die Gesamtproduktivität eingeht. Möglicherweise können Sie mehr Unit -Tests oder polnische Funktionen hinzufügen, aber es fügt keinen proportionalen Wert hinzu. Es ist auch politisch schwierig, dem Management zu erklären, warum der größte Teil Ihres Teams untätig ist.

Option 3 scheint gegen den Geist von Agile zu sein.

Option 4 scheint schwerwiegend zu sein und hat die meisten der gleichen Probleme von Option 1 und 3. Zunächst fehlen Sie eine Verpflichtung. Zweitens macht es das Bündeln von mehr Funktionen in eine nachfolgende Veröffentlichung erschwert, um mit den Kunden zu testen und zu überprüfen - und schließt erneut die Fähigkeit aus, die zukünftige Iteration auf der Grundlage der Rückmeldungen früherer zu leiten.

War es hilfreich?

Lösung

Option 1 Natürlich. Dein Geschwindigkeit Denn die nächste Iteration wird weniger sein, wie es darauf basiert gestern Wetter, Die nächste Iteration haben Sie also eine bessere Chance, vollständig zu sein.

In Scrum bist du Zeitboxing. Und Sie liefern nur Funktionen, die funktionieren.

In dem Sprintplanung Sie haben eine Schätzung dessen gemacht, was Sie liefern könnten. Der Kunde muss ein gewisses Maß an Unsicherheit in der Schätzung akzeptieren oder bereit sein, zu viele Ressourcen im Team zu haben.

Wenn Sie die nächste Iteration erneut verpassen, wechseln Sie zu einer kürzeren Iterationslänge und stellen Sie sicher, dass die Größe der einzelnen Funktionen kleiner ist.

Andere Tipps

Normalerweise würden Sie Option 1 durchführen - den Sprint beenden. Verwenden Sie die abgeschlossenen Arbeiten, lassen Sie die unvollendeten Arbeiten in der Projektgeschwindigkeit widerspiegeln - daher berücksichtigt die zukünftige Planung die Schwierigkeiten, die Sie auftreten.

Ja, Option 1 bedeutet, dass wir nicht beendet haben, was wir uns verpflichtet haben - aber wenn das passiert ist, ist es besser, es zuzugeben und zu lernen, das nächste Mal besser damit umzugehen, als es zu verbergen. Es passiert allen schlechten Zügen - das kritische ist, wie wir uns von unserer Zeit verbessern.

Sie können Option 2 ausführen - die herausragenden Arbeiten weiter abzuschließen, indem Sie den Sprint erweitern. Tun Sie dies nur, wenn die Arbeit für den Kunden eine super-hohe Priorität hat und sich ausdrücklich dafür entscheiden. Wenn Sie die Länge der Sprints verlängern, wird es schwerer zu vergleichen, miteinander zu vergleichen - da sie unterschiedliche Längen sind.

Lassen Sie sich nie nie in den nächsten verschmelzen - Entweder erweitern Sie den alten Sprint oder starten eine völlig neue. Wenn Sie zwei Sprints ineinander verschmelzen lassen, machen Sie nicht mehr wirklich Sprints und planen zusammen ...

Kann ich mit "Es hängt davon ab" antworten? Außerdem möchte ich einen "kompletten Definieren" einwerfen.

Wir hatten diese Situation ein paar Mal und haben sie je nach den Umständen anders behandelt.

Soweit ich mich in zwei Fällen erinnere, lassen wir den Sprint scheitern. Es war eigentlich eher eine Art von Demo-rejektiertes Versagen. Die Merkmale selbst wurden vom Team als vollständig angesehen, aber es gab zu viele offene Fragen, lose Enden und kleine Details, die während der Demo aufgetaucht waren. Es hätte ein paar Tage gedauert, um alles abzuwickeln, also ließen wir den Sprint scheitern und nahmen alle offenen Gegenstände in den nächsten Sprint. Wir hatten immer noch eine retrospektive und Sprint -Planung für neue Benutzergeschichten, aber es gab keine Integration von Codelinien und der Sprint wurde offiziell als fehlgeschlagen markiert.

In einem anderen Fall hatten wir nur ein paar Fehler, die in letzter Minute und ein paar Dinge aus der Benutzergeschichte aufgetaucht sind. Wir haben die Gesamtarbeit auf drei Tage geschätzt und gerade den Sprint erweitert. Das war genug für uns, um den Fehler zu beheben, ein paar Änderungen vorzunehmen und ungefähr drei Tage später eine zweite Sprint -Demo durchzuführen.

Es war also entweder Option 4 oder Option 2 für uns, wenn es gerufen wurde.

Es gibt hier ein paar Dinge zu berücksichtigen. Zuallererst (und ich spreche hier, weil ich hier daran gewöhnt bin, können Sie sie also gerne durch alles ersetzen, was auch immer am besten passt), bringen Sie den ScrumMaster, den Produktbesitzer und das Team zusammen und besprechen Sie die Optionen offen. Ich glaube nicht, dass es einen Weg vor sich gibt. Sie können sich an reine Methodik halten, aber im wirklichen Leben ist das nicht immer der beste Weg. Manchmal hilft das Biegen der Regeln ein wenig und erleichtert das Leben für alle das Leben.

Wenn Sie gut zusammenarbeiten, sollten Sie eine Option finden, die für alle Beteiligten funktioniert. (Wenn Sie nicht können, haben Sie möglicherweise sowieso zugrunde liegende Probleme.) Lassen Sie nicht einfach etwas in das Team fallen, ohne es zumindest zu besprechen oder zumindest die Gründe zu erklären, warum.

Option 3 klingt für mich nach dem chaotischsten, also würde ich das ausschließen.

Viele Leute hier haben argumentiert, dass Option 2 gegen grundlegende agile (oder Scrum-) Regeln verstößt, aber ich würde nicht zustimmen. Scrum sagt ausdrücklich, dass Sie den Sprint erweitern können, wenn Sie eingerufen werden, genauso wie Sie Geschichten reduzieren oder Ressourcen hinzufügen können. Sie sollten es nicht tun, bis es unbedingt notwendig ist, aber soweit ich weiß, ist es nicht streng gegen das Buch. In der Basis, als wir es taten, war es die beste Lösung für alle, denn wir haben den Sprint immer noch erledigt, nur drei Tage später und alle waren sehr zufrieden mit den Ergebnissen. Wenn wir eine Woche oder mehr Option 2 sprechen würden, wäre es nicht angemessen gewesen.

Ich mag keine Option 1 nicht wirklich. Das halbgemäße Sachen aus einer funktionierenden Implementierung kann wirklich chaotisch sein. Sie verlieren den Kontakt zu dem Code, der erledigt wurde, und offen gesagt kann es ein Schmerz sein. Es mag unterschiedlich sein, je nachdem, wie Sie arbeiten, aber aus meiner Erfahrung möchten Sie Code aus einer Kodeline nicht tun, was Sie tun möchten.

Option 4 ist es ziemlich hart, aber wenn es richtig kommuniziert, sollte es in Ordnung sein. Das Team weiß normalerweise, wann es vermasselt wurde und nicht in der Lage sein kann zu liefern, also ist es nicht so, als würden Sie Neuigkeiten gegen sie brechen.

Es gibt also ein paar Dinge zu berücksichtigen.

  • Wie viel Zeit muss es tun, um es zu erledigen? Wenn es nur ein oder zwei Tage sind, ist die Erweiterung Ihres Sprint möglicherweise die beste Option.
  • Wie viel Mühe wird es sein, den Code zu entfernen, der bereits da ist? Wenn es chaotisch ist und Zeit in Anspruch nimmt, beseitigen Sie Option 2 oder 4. Wenn es einfach ist, ist Option 1 möglicherweise der richtige Weg.
  • Was denkt das Team? Was denkt der Produktbesitzer? Was denken andere? Das Versagen eines Frühlings könnte sich auf die Teammoral auswirken, aber dies könnte nicht sein.

Für ein agiles Projekt ist es wichtig, eine „Definition von Fertig“ zu haben. Dies ist eine kleine Kontrollliste von Dingen, die getan werden müssen, um etwas als vollständiges zu klassifizieren. Es ist nicht ungewöhnlich, unterschiedliche Maßstäbe zu haben:

  • Benutzergeschichte - Dies könnte Dinge wie alle mit den USA verbundenen Aufgaben umfassen. Alle Code werden überprüft und erstellen erfolgreich mit bestehenden Unit -Tests. Die Annahmeprüfung wurde abgeschlossen.

  • Sprint - Dies könnte Dinge wie alle Geschichten für den Sprint umfassen (siehe oben, eine Retrospektive, der Produktbesitzer hat eine Demonstration der Funktionalität usw.

  • Release Sprint - Die Entwicklung der vorherigen Sprints -Reihe wurde erfolgreich integriert und die Regression getestet, die Funktionalität wurde in die Live -Umgebung freigesetzt.

In Bezug auf die 4 Optionen ist es weniger eindeutig. Es wird viel gesagt und wurde darüber geschrieben, was nicht tun sollte und nicht, wenn es darum geht, den Sprint zu scheitern, den Sprint zu erweitern und einige oder andere auszuschließen. Ich finde, dass mit agilen Projekten viel Pragmatismus erforderlich ist, insbesondere in den ersten Sprints.

Das Wichtigste ist, es nicht aufzuhängen. Lernen Sie einfach daraus, passen Sie sich an und fahren Sie fort.

Ich würde eine Variation von Option 1 vornehmen. Wenn Feature B in das, was abgeschlossen ist, unterteilt werden kann und was nicht abgeschlossen ist, sollte dies zu einer überarbeiteten Aufgaben führen, um sie für den nächsten Sprint zu erledigen. Was fertig ist, wird geliefert, und obwohl die Lieferung nicht perfekt ist, sollte die Idee sein, das Beste auszuprobieren und dann nach Priorität zu arbeiten, was als nächstes kommt.

Das Verlängerung des Sprint ist ein Rezept für eine Katastrophe für mich. Bedeutet das Ausfüllen der Funktion auch die Auflösung aller Fehler? Schon mal Software mit Nullfehler gesehen?

Das Versagen des Sprint führt zu viel Perfektionismus in Dinge ein. Ist etwas, das zu 99% wertlos ist? Ich würde das nicht denken, aber es gibt einige Leute, die wirklich hohe Standards haben und ziemlich anspruchsvoll sein können.

Bearbeiten: Manchmal wird zunächst eine Funktion mit vagen Anforderungen gegeben, die im Verlauf des Sprint geklärt werden. Beispielsweise kann eine Funktionsanfrage von "Als Benutzer, ich möchte eine Bestellung aufgeben", entweder im Rahmen der Planung des Sprint oder während des Sprint weiter unterteilt werden. In beiden Fällen können und sollten bei der Demo einige Geschichten, die eine Funktion erfolgen, bei der Demo vorgestellt werden. Es geht darum, sagen zu können: "Hier sind wir. Wie viel Priorität hat es, dies zu beenden?" Wie das, was vorher dringend gewesen sein könnte, ist vielleicht nicht am Ende des Sprint.

Erstens sind die Regel: Iterationen sind Zeitplatten mit fester Länge und sind am Ende der Zeitbox vollständig. Dies beseitigt also Option 2 und Option 3. In Bezug auf Option 4 kann eine abnormale Kündigung der Iteration unter ganz bestimmten Umständen auftreten (Gewissheit, dass das Ziel nicht erreicht werden kann, externe Ereignisse das Ziel ungültig, ...), aber dies muss ein außergewöhnliches Ereignis bleiben. Und vorab, um abzubrechen, gibt es im Allgemeinen andere Optionen: 1. Machen Sie etwas anderes / Innovation 2. Holen Sie sich Hilfe / Auslagerung 3. Reduzieren Sie den Umfang. Und dies lässt Sie mit Option 1, der offensichtlichen Wahl, zurück.

Das Problem, das ich bei Option 1 sehe, ist, dass das Team nicht liefert, was es sich verpflichtet hat. In einigen Fällen können Sie Feature B möglicherweise nicht ausschließen, ohne die gesamte Veröffentlichung nutzlos zu machen (oder zumindest wesentlich weniger wertvoll). Es kann es schwierig machen, die Richtung des nächsten Sprint ohne Feature B. zu leiten

Wenn dies wahr ist, dann war entweder B wichtiger als A, D und F und Sie haben nicht an den wichtigsten Gegenständen gearbeitet, was falsch ist, es sollte nicht passieren oder ... A, D und F sind tatsächlich sehr wertvoll In diesem Fall ist Ihre Annahme eigentlich nicht wahr und die Verschiebung von B ist daher kein großes Problem. Machen Sie es also einfach, sobald Sie feststellen, dass es nicht erledigt wird, und prüfen Sie, ob Sie es durch einen kleineren Gegenstand ersetzen können.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top