Ich hatte ein Vorstellungsgespräch mit einem Unternehmen. Sie verwenden Scrum, mögen aber keine groben Schätzungen während der Release-Planung. Also fragten sie mich, wie man die Release-Planung genauer machen kann (sie wollen nicht mehr als 30 Prozent Abweichungen vom Plan).
Ich schlug vor, dass sie Folgendes tun:
Sammeln Sie Anforderungen.
Anforderungen filtern und Umfang erstellen.
Umfang in "Substantive" (lieferbare Elemente) zerlegen. - dh PSP-Struktur
Zerlegen Sie "Substantive" in "Verben" (es muss Arbeit geleistet werden, um "Substantive" zu implementieren).
Schätzen Sie "Verben" unter Berücksichtigung von Risiken.
Finden Sie "Verben"-Abhängigkeiten und fügen Sie sie in eine Zeitleiste ein. - dh GANT-Diagramm
Veröffentlichungsdatum berechnen.
Wie Sie sehen können, ist es komplizierter als das anfängliche Story-Mapping und sieht eher nach einem „schweren Wasserfall“-Stil als nach einem „agilen“ Stil aus. So wie ich die Agile-Philosophie verstehe, hat die Genauigkeit der Schätzung des endgültigen Veröffentlichungsdatums keine hohe Priorität, da "auf Änderungen zu reagieren statt einem Plan zu folgen".
Zurück zur Planungsliste: In Scrum haben wir implizit 1-3 Schritte während der anfänglichen Release-Planung und die Schritte 4-6 während jeder Sprint-Planung durchgeführt. Ich habe vorgeschlagen, alle diese Schritte explizit während der Release-Planung durchzuführen.
Obwohl dies der erste (und einzige) Weg war, um die Genauigkeit eines Release-Plans zu verbessern, mag ich ihn nicht wirklich, weil (meiner Meinung nach) diese Art der Planung nicht der Ideologie von Agile entspricht.
Ich verstehe, dass genaue Schätzungen mehr Aufwand erfordern und glaube nicht an „Wunder“-Qualitätsschätzungen ohne Aufwand. Aber vielleicht können Sie mir andere Möglichkeiten (oder einige Tipps) vorschlagen, wie man die Release-Planung genauer machen kann, ohne eine komplizierte Planung im Wasserfall-Stil zu haben?
Kein Wunder, dass ich diese Frage oft höre. Das grundlegende Problem bei der Frage ist, dass Agile mit der Grundidee eines Projekts mit festem Umfang/festem Zeitplan nicht einverstanden ist. In der Frage, die Ihnen gestellt wurde, wird angenommen, dass das Enddatum eines festgelegten Umfangs bekannt ist, und das Problem besteht darin, dass wir schlecht darin sind, es zu kennen (zu schätzen). Das ist nicht wirklich wahr. Das Enddatum eines bestimmten Bereichs ist kein erkennbarer Zeitpunkt. Vielmehr handelt es sich um eine zeitliche Verschiebung.
Die Verbesserung der Teamfähigkeiten, das Verständnis der Benutzeranforderungen und ein differenzierteres Verständnis der Implementierung im Verlauf des Projekts verschiebt dieses Datum tatsächlich.
Schauen Sie sich dieses Henrik Kniberg-Video von 11:25 -> 14:45 an (das ganze Video ist großartig, aber dieser Teil ist für diese Frage relevanter). Es leistet großartige Arbeit, wenn es um Prognosen geht, und Sie können dies mit den Ergebnissen der Release-Planung verwenden.
Sie können sehen, dass ich das Enddatum Ihres Projekts festlegen kann, wann immer Sie möchten, wenn die Frist wirklich wichtig ist, oder wir können das Datum verlängern, wann immer der Umfang fertig ist, wenn dies wichtig ist, aber beides festzulegen ist nur eine Vermutung und ein Glücksspiel.
Sergey, die von Ihnen beschriebenen Schritte werden Ihre Veröffentlichungsplanung präziser machen, aber nicht die Genauigkeit verbessern. Gehen Sie nicht in die Falle zu glauben, dass ein detaillierter, expliziter Prozess während der Release-Planung die Genauigkeit verbessert.
Es ist eine Falle, in die wir voreingenommen geraten, weil wir als Menschen versuchen, ein Gefühl der Kontrolle zu schaffen, wo es keines gibt. Die einzige Möglichkeit, die Veröffentlichungsplanung genauer zu gestalten, besteht darin, die Planung näher am Veröffentlichungsdatum vorzunehmen. In der Tat, wenn Sie die Planung am Tag der Veröffentlichung durchführen, haben Sie eine sehr hohe Genauigkeit ;).
Wie Daniel sehr gut erklärt, widerspricht Agile dem Konzept der festen Zeit/des festen Umfangs und respektiert die Tatsache, dass wir zu Beginn eines Projekts einfach nicht mit einem hohen Maß an Genauigkeit schätzen können. Fragen Sie Ihr Management, was das Besondere an der 30 % Abweichungsmarke ist.
Das Beste, was Sie während der agilen Release-Planung tun können, ist:
Es hört sich so an, als hätten Ihre Interviewer einen "Release-Plan" als Szenario mit festem Umfang und festem Datum definiert. Eine einfache Möglichkeit, die Genauigkeit dieser Pläne um mindestens 30 % zu verbessern.
Aber im Ernst, das klingt wie eine Fangfrage für einen Shop, der Scrum betreibt. Projekte mit festem Datum und Umfang sind für Projekte mit nennenswerter Komplexität so gut wie zum Scheitern verurteilt (siehe Stacey-Matrix unten zur Veranschaulichung von „Komplexität“).
Möglicherweise können Sie argumentieren, dass prädiktive Prozesse oder Methoden auf einfachere oder sogar kompliziertere Projekte überlagert werden können; Die meisten Softwareentwicklungen bewegen sich jedoch definitiv im komplexen Bereich. Weitere Informationen finden Sie im Cynefin Framework für gute Definitionen von einfach, kompliziert, komplex und chaotisch.
Zuerst würde ich die Dysfunktion des festen Datums und des Geltungsbereichs auflösen; Wir würden entweder an einem bestimmten Datum veröffentlichen, aber den Umfang dessen, was wir veröffentlicht haben, flexibel festlegen oder veröffentlichen, wenn ein bestimmter Arbeitsumfang abgeschlossen ist. Darüber hinaus würde das Entwicklungsteam mit der Entwicklung qualitativ hochwertiger Software mit geringer technischer Verschuldung beauftragt, damit zukünftige Versionen nicht durch schlechte technische Entscheidungen und Abstriche verlangsamt oder zunehmend unvorhersehbar werden.
Der Scrum-Guide sagt:
Scrum basiert auf der empirischen Prozesssteuerungstheorie oder dem Empirismus. Der Empirismus behauptet, dass Wissen aus Erfahrung stammt und Entscheidungen auf der Grundlage dessen getroffen werden, was bekannt ist. Scrum verwendet einen iterativen, inkrementellen Ansatz, um die Vorhersagbarkeit zu optimieren und das Risiko zu kontrollieren. Drei Säulen tragen jede Implementierung empirischer Prozesskontrolle: Transparenz, Kontrolle und Anpassung.
Um sicherzustellen, dass sich die Zuverlässigkeit von Veröffentlichungsplänen um 30 % verbessert, würde ich darauf bestehen, dass die Entwicklungsteams im Laufe der Veröffentlichung so unverändert wie möglich bleiben. Dies erhöht die Stabilität des Systems und steigert möglicherweise die Produktivität erheblich im Vergleich zu Teams, die sich häufig neu formieren.
Als Nächstes würde ich mit dem Team zusammenarbeiten, um Prognosen auf der Grundlage des beobachteten Fortschritts in Richtung des Veröffentlichungsumfangs (oder Datums) nach 2-3 Sprints des neuen Veröffentlichungszyklus zu erstellen. Diese 2-3 Sprintperiode stellt sicher, dass einige aussagekräftige und empirische Daten zur Erstellung der Prognose verwendet werden.
Zuletzt würde ich aussagekräftige Visualisierungen des Fortschritts der Teams unter Berücksichtigung ihrer kollektiven „Unsicherheitskegel“-Bereiche aufrechterhalten, um den Interessengruppen aktuelle Schätzungen bereitzustellen, wenn neue Daten auftauchen. Ich würde grundlegende Mathematik wie die in Mike Cohns „ Velocity Range Calculator “ verwenden, um genau abzuschätzen, welcher Umfang zu einem bestimmten Datum vollständig wäre oder zu welchem Datum ein bestimmter Umfang vollständig wäre.
Ich werde es vermeiden, auf den Vergleich mit einem Veröffentlichungsplan mit festem Datum einzugehen, und nur einige Vorschläge unterbreiten, wie die Schätzungen der User Stories und der damit verbundenen Aufgaben verbessert werden können (wenn Sie wissen, wie viel sie dauern und die Teamgeschwindigkeit, ist es ziemlich einfach, zu sehen, welcher Umfang kann in einer bestimmten Version erreicht werden).
Aber Vorsicht bei der Diskussion: Zu viel Präzision kann schaden.
Zu viel Zeit aufzuwenden erhöht im Allgemeinen nicht die Genauigkeit der Schätzungen (und es langweilt das Team!). Zu viel Zeit mit Schätzen zu verbringen, ist wirklich eine Form der Verschwendung. Am Ende müssen die Teams darauf achten, ihre Schätzungen zeitlich einzugrenzen und nicht versuchen, diese Heuristik in eine Pseudowissenschaft zu verwandeln.
Um die Release-Planung genauer zu machen, müssen folgende Vorsichtsmaßnahmen berücksichtigt werden: Aber Sie können nicht umhin, 15-20 % Puffer in Betracht zu ziehen.
Verstehen Sie Ressourcen und deren Effizienzniveaus [Dies ist nur möglich, wenn Sie lange Zeit mit einem Team zusammenarbeiten]
Iterationen und Qualitätskontrolle im Auge behalten. [Dies ist möglich, wenn die Kommunikation und Disziplin der Stakeholder aufrechterhalten wird.]
Kommende Technologien im Auge behalten [Man weiß nie, was einem das Leben schwer oder leichter machen kann]
Reviews und Entwicklung halten sie Hand in Hand. [Aufrechterhalten optimaler QA-Turnaround- und Review-Zyklen]
Beobachten Sie die Bewegungen der Wettbewerber genau [Durch die kontinuierliche Bewertung der Entwicklungen der Wettbewerber bleiben Sie bei der Produktvision immer einen Schritt voraus. Ich kenne einige Produkte, die auf Whiteboards gelandet sind, nachdem die Konkurrenz tolle Inhalte veröffentlicht hat.]
Erstellen Sie eine bereichsfähige Aufteilung von Features. Und priorisieren Sie die wichtigsten auf TOP.
Es hört sich so an, als ob Sie sich in einer Umgebung mit geringem Vertrauen befinden.
Wenn Sie sich in einer Umgebung mit wenig Vertrauen befinden, müssen Sie so viel Planung wie nötig durchführen, um loszulegen. Sobald Sie beginnen und liefern, werden Sie beginnen, Vertrauen zu schaffen und die Notwendigkeit einer solchen detaillierten Planung im Voraus zu untergraben. Ihre Antwort ist die einzig brauchbare.
Das ist so typisch für große Organisationen am Anfang einer agilen Transformation oder einer ins Stocken geratenen, dass es im Professional Scrum Training einen eigenen Abschnitt dazu gibt.
Es gibt die Ideologie, die ideale Scrum-Umgebung, und dann gibt es die Realität Ihrer organisatorischen Dysfunktion. Da diese Organisation ernsthafte Arbeit und Anstrengungen zu benötigen scheint, um sie in Richtung Agilität zu bewegen, sollten Sie sich fragen, ob Sie bereit sind, diese Anstrengungen beizutragen.
Ich jedenfalls liebe Herausforderungen...
Stimme @Daniel voll und ganz zu und könnte noch etwas hinzufügen: Wenn die Umgebung (wie ungeplante Ablenkungen, ungefähr verfügbare Arbeitsstunden usw.) konstant ist, wird das Team mit der Zeit erkennen, sprint velocity
dass dies nur helfen kann, abzuschätzen, wie schnell a Geschichte kann geliefert werden. Dies ist kein Vertrag, sondern nur ein Kostenvoranschlag.
Und die Schätzungen, über die wir sprechen, sind maximal Tage bis zu einer Sprintperiode, nicht Monate, wie im Wasserfall zu sehen ist.
Wenn Sie continuous delivery
Agile hinzufügen, brauchen Sie nicht einmal (oder besser – es macht keinen Sinn) Schätzungen zu erstellen, da Stories fließend aus dem Backlog mit fast kommen und gehen minimal lead time
. Mit Continuous Delivery können Sie jeden Tag mehrere Releases haben. Dies funktioniert jedoch mit softwarebasierten Produkten und trifft möglicherweise nicht direkt auf andere Arten von Produkten zu.
Tob
Sergej Kudrjawzew
MrHinsh - Martin Hinshelwood
Geoff Burns