Eine Definition von „Fertig“ für den Fall, dass mehrere Entwicklungsteams an einem Produkt arbeiten

12

Einer der Scrum-Tests enthält die Frage nach der Definition, die "Fertig" am besten beschreibt, wenn mehrere Entwicklungsteams an einem Produkt arbeiten.

Eine richtige Antwort besagt, dass diese Entwicklungsteams eine solche Definition von "Fertig" haben müssen, die ihre kombinierte Arbeit potenziell freigabefähig machen kann.

Was mir aus der richtigen Antwort auf dieses Quiz nicht klar wird, ist:

  • Können Teams unterschiedliche Definitionen von "Fertig" haben? In welchem ​​Ausmaß?

quelle
Stellen Sie sich ein Team vor, das ein Produkt direkt freigibt, sowie die gleiche Arbeit, die von anderen Teams verwendet wird.
Ian
Zum Beispiel können die englischen Versionen der Software ausgeliefert werden, bevor sie ins Französische übersetzt werden.
Ian
Diese Art von Verwirrung ist der Grund, warum ich nie sage, dass etwas getan wird. Stattdessen sage ich immer genau das, was wir getan haben. Zu entscheiden, ob etwas getan wird, ist eine Verhandlung. Keine Erklärung. Unabhängig davon, welcher Definition Sie folgen.
candied_orange

Antworten:

16

Wenn alle Teams "Fertig" so definieren, dass die von anderen Teams geleistete Arbeit berücksichtigt wird, stellen Sie sicher, dass die Funktionalität vollständig ist.

Wenn jedes Team "erledigt" anders definiert und nur erwartet, dass die anderen Teams über diese Definition Bescheid wissen, treten verschiedene Probleme auf:

  • Wenn ein Integrationsproblem auftritt, möchte kein Team das Problem selbst beheben. Immerhin war es "erledigt", als sie anfingen, Dinge zu integrieren, also muss es etwas mit der Arbeit des anderen Teams sein.

  • Wenn Sie mehr als eine Handvoll Teams haben, wird es schwierig, sich an die "Definition von erledigt" zu erinnern - besonders wenn es Unterschiede zwischen den Teams gibt.

  • Es kann nicht garantiert werden, dass die Integrationsarbeit ordnungsgemäß funktioniert.

Die akzeptierte Antwort besagt eindeutig, dass die Dinge erst erledigt werden, wenn die Arbeit aller Teams integriert ist und ordnungsgemäß funktioniert. Es muss lösbar sein und somit von den Endbenutzern in vollem Umfang akzeptiert werden können.


Bearbeiten als Antwort auf Kommentare: Dies bedeutet nicht, dass jedes Team die gleiche Definition von "erledigt" hat. Dies bedeutet, dass ein Teil der Definition von „erledigt“ in jedem Team das größere System ist und andere integrierende Komponenten nicht beschädigt werden.

Greg Burghardt
quelle
Ich bitte um Verzeihung, aber es scheint mir, dass die richtige Antwort nichts über die einheitliche Definition von "Fertig" aussagt. Außerdem bin ich mir nicht sicher, ob Integrationsbesonderheiten darin enthalten sein müssen. Sagen Sie, wenn zwei Teams an völlig unterschiedlichen Implementierungen derselben API für unterschiedliche Kunden arbeiten? Allerdings arbeiten sie formal immer noch am selben Produkt.
2
@Andremoniy, die richtige Antwort sagt in der Tat nichts über eine einzelne DoD aus, aber es bedeutet, dass die DoDs aller Teams ein gemeinsames Element haben sollten, dass das Gesamtprodukt funktionsfähig bleibt. Ihr Beispiel von verschiedenen Teams, die an verschiedenen Implementierungen einer API arbeiten, überzeugt mich nicht, dass dies ein einziges Produkt sein könnte.
Bart van Ingen Schenau
2
@Andremoniy: Sobald ein Team von der Arbeit eines anderen Teams abhängig ist, können (werden) Integrationsprobleme auftreten, auch wenn die Teile an verschiedenen Standorten bereitgestellt werden. Es ist auch ein Integrationsproblem, wenn beispielsweise ein Mikrodienst einen anderen Mikrodienst auf unerwartete, möglicherweise inkorrekte Weise verwendet.
Bart van Ingen Schenau
2
@Andremoniy: Sie haben Recht, dass diese beiden Teams nicht dasselbe DoD verwenden sollten, aber sie können die Regel teilen, dass sich Änderungen nicht negativ auf das andere Team auswirken dürfen (was meistens ausgelöst würde, wenn die Arbeit Änderungen an der Schnittstelle mit dem Hintergrund beinhaltet Server).
Bart van Ingen Schenau
1
@Andremoniy: Danke für deine Kommentare. Ich habe meine Antwort aktualisiert, um einige der von Ihnen angesprochenen Probleme zu beheben.
Greg Burghardt
6

Ich könnte mir eine Situation vorstellen, in der ein Team "Done" als "Development Done" definiert (dh Code, der zu Repo zusammengeführt wird), während andere es als "Testing Done" definiert (dh Code, der für Fragen und Antworten freigegeben und getestet wird).

Dies würde von Natur aus zu ernsthaften Problemen führen, da der Gesamtzustand des Produkts weitgehend undefiniert wäre und es daher schwer zu sagen wäre, ob wir ihn tatsächlich freigeben können oder nicht.

Pawel Gorczynski
quelle
Betrachten Sie die richtige Antwort als die Aussage, dass alle Teams dieselbe Definition haben sollten?
Ja, ich stimme zu, dass es aus einem einfachen Grund eine gemeinsame Definition geben sollte. Ein komplexes Projekt kann als Baumstruktur betrachtet werden, in der Teilprojekte (z. B. Microservices) das Gesamtprodukt aufbauen (z. B. MyCool ERP). Sie möchten also zu einem bestimmten Zeitpunkt wissen, ob eine neue Version des Produkts veröffentlicht werden kann. Wenn Sie jedoch für bestimmte Unterkomponenten unterschiedliche DoDs haben, ist es äußerst schwierig, diese Informationen abzuleiten.
Pawel Gorczynski