Ich lese den Scrum - A Pocket Guide von Gunther Verheyen und es heißt:
Der Chaos-Bericht 2011 der Standish Group markiert einen Wendepunkt. Es wurden umfangreiche Untersuchungen durchgeführt, um traditionelle Projekte mit Projekten zu vergleichen, die agile Methoden verwendeten. Der Bericht zeigt, dass eine agile Herangehensweise an die Softwareentwicklung zu einer viel höheren Rendite führt, selbst wenn die alten Erwartungen bestehen, dass Software pünktlich, im Rahmen des Budgets und in dem versprochenen Umfang geliefert werden muss. Der Bericht zeigt, dass die Agile-Projekte dreimal so erfolgreich waren und es im Vergleich zu herkömmlichen Projekten dreimal weniger gescheiterte Agile-Projekte gab.
Also habe ich einen Streit mit einem meiner Kollegen, der sagt, dass für einige Projekte (wie Medizin / Militär, bei denen sich die Anforderungen nicht ändern) Agile (und insbesondere Scrum) mit all den Besprechungen usw. überlastet sind und es logischer ist zum Beispiel um einen Wasserfall zu benutzen.
Meiner Meinung nach sollte Scrum in solchen Projekten eingesetzt werden, da dies den Prozess transparenter macht und die Produktivität eines Teams erhöht. Ich denke auch, dass Scrum-Events nicht viel Zeit in Anspruch nehmen, wenn sie nicht benötigt werden, da wir nicht die gesamten 8 Stunden in der Sprint-Planung für einen einmonatigen Sprint sitzen müssen. Wir können 5 Minuten Zeit sparen, nur um sicherzugehen, dass wir alle auf der gleichen Seite sind und mit der Arbeit beginnen.
Wird Scrum zusätzlichen Aufwand für ein Projekt schaffen, bei dem sich die Anforderungen nicht ändern?
quelle
Antworten:
Ich halte es für eine falsche Annahme, dass es Projekte gibt, bei denen sich die Anforderungen nicht ändern. Ich habe sowohl in der Verteidigungsindustrie als auch in der pharmazeutischen Industrie als Softwarehersteller gearbeitet und kann Ihnen sagen, dass es Feedback gibt, sobald Software in die Hände von Fachexperten (intern oder extern) gelangt. Manchmal ist dieses Feedback auf die Art und Weise zurückzuführen, wie die Anforderung erfüllt wurde, und in anderen Fällen ist es tatsächlich auf die Anforderungen selbst zurückzuführen, die falsch oder unvollständig sind.
Bei Agility geht es darum, diesen Feedback-Zyklus zu verkürzen, die Arbeitssoftware schneller in die Hand zu bekommen, dieses Feedback zu erhalten und zu entscheiden, was der nächste Schritt sein sollte, um sicherzustellen, dass das, was geliefert wird, einen Mehrwert bringt, wenn der Kunde sich entscheidet, die Software zu akzeptieren. Selbst in Bereichen wie eingebetteten Systemen mit kundenspezifischer Hardware (wie sie beispielsweise in der Luft- und Raumfahrt, in der Automobilindustrie oder in der Medizintechnik zu finden sind) kann die schnelle Integration von Funktionen und die Erstellung von Prototypen dazu beitragen, dass das Software- und Hardwaresystem einwandfrei funktioniert Arbeiten Sie wie vorgesehen und auf eine Weise, die dem Endbenutzer hilft.
Die Verkürzung des Rückkopplungszyklus ist ein wichtiger Faktor für die Risikominderung. Aus Sicht des Projektmanagements können Sie sicher sein, dass Sie auf dem richtigen Weg sind, wenn Sie ein Projekt für 2 bis 4 Wochen finanzieren und einen regelmäßigen Einblick in den Fortschritt erhalten. Indem Sie in der Lage sind, dünne Teile der Funktionalität bereitzustellen, arbeiten Sie schrittweise in Richtung des Zielzustands und können damit beginnen, vorherzusagen, wann Sie dort ankommen werden. Wenn die Zeit zu einer Einschränkung wird, können Sie die Funktionen mit dem niedrigeren Wert reduzieren, da die zuerst ausgeführte Arbeit entweder eine Funktion mit hohem Wert oder ein Aktivierer für eine Funktion mit hohem Wert sein sollte. Sie können jederzeit entscheiden, ob es sich lohnt, die Anstrengungen weiter zu finanzieren oder in eine andere Richtung zu gehen und ein Projekt zu stoppen, bevor es zu spät ist.
quelle
Die sehr kurze Antwort lautet: Ja, Scrum ist von Natur aus ein teurerer Ansatz, aber wenn Sie es als Projekt bezeichnen, spielt es mit ziemlicher Sicherheit keine Rolle und führt letztendlich mit ziemlicher Sicherheit zu einem besseren ROI.
Die vollständigere Antwort lautet:
Generell gibt es drei Formen der Prozesskontrolle: Definierte Prozesskontrolle, statistische Prozesskontrolle und kaiserliche Prozesskontrolle. Defined Process Control ist bei weitem das billigste. Dies ist möglich, wenn häufig wiederholbare Arbeiten im Laufe der Zeit verfeinert wurden, um den "besten" Weg zu finden, die Arbeit zu erledigen. CI / CD in der Softwareentwicklung fällt in diese Kategorie. Sie möchten keine Variationen in Ihrem Erstellungsprozess, also standardisieren Sie den Prozess, passen ihn an, bis Sie zufrieden sind, und automatisieren ihn dann. Dieser automatisierte Prozess ist offensichtlich weitaus kostengünstiger als das manuelle Durchkämpfen einer Bereitstellung.
Die statistische Prozesskontrolle ist die zweitkleinste, berücksichtigt jedoch Abweichungen in einem bekannten Prozess. Medizinische Verfahren, die nach Plan verlaufen, fallen in diese Kategorie. Ich möchte nicht jedes Mal eine Bypass-Operation neu erfinden. Ich folge dem grundlegenden Prozess und passe mich der Variation an. Dies hat eine relativ geringe kognitive Belastung und eine relativ hohe Erfolgsquote.
Als nächstes folgt die empirische Prozesssteuerung, die bei weitem die teuerste ist, da Sie den Prozess auf Ihrem Weg entdecken müssen. Lernen ist unglaublich hoch, aber zu Lasten von Produktivität und Effizienz. Für fast alle Projektarbeiten ist dies jedoch erforderlich, da bisher nur wenige Projekte durchgeführt wurden. Es gibt natürlich Ausnahmen. Das Einrichten einer großen Active Directory-Umgebung ist eher statistisch, da Sie anhand einiger bewährter Anweisungen arbeiten, von denen Sie je nach den Umständen geringfügig abweichen. Wenn Sie jedoch nicht genau die Arbeit erledigen möchten, die zuvor geleistet wurde, ist mit ziemlicher Sicherheit eine Emperical Process Control erforderlich.
Um es wieder zu Scrum zu bringen, wurde Scrum entwickelt, um Probleme mit der Steuerung von Emperical Process zu lösen. Dafür hat es ja mehr Overhead als andere Ansätze. Da jedoch die meisten Projekte diesen Ansatz erfordern, ist dies ein strittiges Argument.
Im Gegensatz zu Medizin und militärischen Projekten klingt es nach einer fehlerhaften Logik. Wenn Sie einen Auftrag für 500 Flugzeuge erfüllen, dann erstellen Sie genau etwas neu und Scrum ist wahrscheinlich nicht vorteilhaft. Wenn Sie ein neues Flugzeug bauen und Ihre Anforderungen sich nie ändern, würde ich dieses Flugzeug nicht fliegen.
quelle
Klar, wenn Sie ein Projekt haben, bei dem Sie kristallklare Anforderungen haben, dann können Sie diese vor den Entwicklern ausgeben und zwei Jahre später zurückkehren, um die Software Ihrer Träume zu finden.
Aber die überwiegende Mehrheit der Softwareprojekte ist nicht so.
Normalerweise weiß der Kunde nicht, was er braucht. Sie können keine vollständigen und spezifischen Anforderungen erfüllen. Hier helfen iterative Ansätze: Bauen Sie ein kleines Ding und bitten Sie den Kunden um Feedback. Ja, dies "verschwendet" Zeit für Demos und die Planung der nächsten Iteration. Aber für einen Sprint das Falsche zu bauen und dann schnell die Anforderungen zu korrigieren, ist viel besser als für das gesamte Projekt das Falsche zu bauen. Das heißt, während Anforderungen im Voraus eine effizientere Entwicklung ermöglichen können, sind iterative Ansätze effektiver .
Entwickler müssen die Anforderungen richtig verstehen, wenn sie nützliche Software erstellen möchten. Was ist ein guter Weg, um Missverständnisse zu entdecken, bevor es zu spät ist? Wieder können iterative Ansätze helfen. Es ist jedoch auch wichtig, dass Entwickler selbst mit dem Kunden zusammenarbeiten, anstatt nur gefilterte Informationen über einen Anforderungsdokumentautor zu erhalten.
Schließlich steht die Welt während des Projekts nicht still. Externe Systeme ändern sich, Prioritäten ändern sich, Menschen ändern sich. Es ist eine schlechte Idee, vorzugeben, dass sich die Anforderungen eines Softwareprojekts nicht ändern, mit Ausnahme von kurzen Projekten.
Bei all diesen Vorteilen auf Prozessebene fehlt der große tägliche Vorteil agiler Ansätze: Wenn sie richtig ausgeführt werden, macht agil jeder glücklicher. Die größte davon ist, dass sich agile Techniken darauf konzentrieren, über kurze Zeiträume einen echten Wert zu liefern. Dies bringt Transparenz in den Entwicklungsprozess, gibt den Stakeholdern ein angemessenes Maß an Kontrolle über das Projekt und ist viel motivierender als auf ein entferntes Ziel hinzuarbeiten. Damit verbunden ist die Idee, dass sich agile Teams weitgehend selbst organisieren. Das Gefühl, die Kontrolle über die tägliche Arbeit zu haben, gibt den Menschen das Gefühl, geschätzt zu werden und daher mit größerer Wahrscheinlichkeit ihr Bestes zu geben.
Ihr Kollege ist nicht falsch, dass Projekte im Wasserfallstil ihren Platz haben können. Und Sie irren sich nicht, dass einige agile Praktiken zeitraubende Rituale sein können. Es ist jedoch völlig dumm, die Vorteile agiler und iterativer Ansätze zu ignorieren, insbesondere ein besseres Risikomanagement und die Achtung des Einzelnen. Das sind Dinge, die Sie in jedem Projekt wollen. Bei Bedarf kann ein Team versuchen, einen Teil davon intern umzusetzen, aber Prozesse funktionieren besser, wenn alle an Bord sind.
quelle
Ich denke, das könnte wohl umschreiben, was @ Cort Ammon sagt, aber hier ist meine Einstellung:
Die externen Anforderungen (die "Liefergegenstände" beschreiben) sind nicht die einzigen Anforderungen in einem Projekt. Auch wenn sich die externen Anforderungen nicht ändern, ändern sich die "internen" Anforderungen oder müssen sich ändern, während Sie arbeiten. Entwickler werden bei einem Ansatz Hindernisse oder Probleme entdecken, die sich auf die Arbeit der anderen Teammitglieder auswirken. Ein täglicher Stand-up hält alle mit diesen internen Änderungen auf dem Laufenden.
quelle
Berücksichtige das:
Selbst bei festgelegten funktionalen Anforderungen müssen Sie diese in technische Anforderungen umsetzen. Und dies kann durch Iterationen besser gemacht werden. Möglicherweise finden Sie in der Mitte des Projekts bessere Möglichkeiten, um das Problem zu lösen.
Einige Anforderungen können zu allgemein oder mehrdeutig sein: "einfach zu bedienen", "sicher". Es ist schwierig, die Sicherheit oder Benutzerfreundlichkeit eines Systems zu analysieren, wenn es noch nicht fertig ist. Einige davon haben möglicherweise versteckte Auswirkungen oder sind möglicherweise nicht gut verstanden.
Einige Anforderungen können verbessert werden. In 200 ms zu antworten kann gut sein, aber 100 können besser sein. Sie können das bestmögliche Ergebnis erzielen, es jedoch opfern, wenn dies während des Projekts erforderlich ist.
Möglicherweise entdecken Sie versteckte Anforderungen, die nicht in den Vertrag aufgenommen wurden, aber das Projekt möglicherweise von einem Fehlschlag zum Erfolg führen. Auch wenn Sie das Projekt liefern, ist der Kunde möglicherweise nicht zufrieden. Möglicherweise müssen sie sogar den Vertrag ändern, um neue Funktionen hinzuzufügen (und in Rechnung zu stellen), die Sie möglicherweise in einem frühen Stadium im Projekt billiger gestalten.
Möglicherweise stellen Sie fest, dass Sie Ihre Anforderungen in der angegebenen Zeit nicht erfüllen können. Ist ja nicht so, als wären Softwareprojekte nie zu spät gekommen. Wenn Sie also den besten Wert liefern, können Sie neu zuordnen, welche Funktionen gelöscht werden sollen.
Etwas früher zu liefern, wird die Integration unterstützen und zeigen, dass dieses Projekt Ergebnisse liefern kann.
quelle
Man kann argumentieren, dass es einen Top-down-Ansatz gibt, der diese Anforderungen so schnell wie möglich erfüllt, wenn alle Anforderungen perfekt ausgelegt sind. Wenn dies jedoch gute Anforderungen sind, erfahren Sie, was Sie machen müssen, und nicht, wie Sie es machen müssen. Wenn sie Ihnen sagen, wie man es macht, würde ich es "Arbeitsanweisungen" anstelle von "Anforderungen" nennen und wir würden eine andere Art von Problem diskutieren.
Dementsprechend gibt es immer einen Prozess der Entwicklung des internen "Wie" für das Unternehmen oder das Team, das die Anforderungen umsetzt. Empirisch gesehen stützen wir uns stark auf einen hierarchischen Ansatz, bei dem ein Team von Designern das übergeordnete System so entwirft, dass es diesen Anforderungen entspricht, und dann die Besonderheiten dieses übergeordneten Systems verwendet, um "Anforderungen" für kleinere Teams bereitzustellen, die unsere Details verdeutlichen.
Dies zeigt sich im Wasserfallprozess im Einbahnstraßenpfeil zwischen Design und Implementierung. Diese Anforderungen sind jedoch nicht in Stein gemeißelt, wie es die vom Kunden bereitgestellten waren. Diese sind intern definiert und bieten Platz für den iterativen Prozess. In der Praxis stellen wir fest, dass Designer entweder einen erheblichen Spielraum in den Prozess investieren, um diesen Mangel an Iteration zu erklären, oder einen iterativen Prozess suchen.
SCRUM und viele andere verwandte agile Methoden bieten lediglich einen strengen Rahmen für diesen iterativen Prozess. Ein Markenzeichen der agilen Ansätze ist, dass sie die Optimierung dieses iterativen Musters als Kern des Prozesses betrachten, anstatt sich auf die äußere Schicht der harten Anforderungen zu konzentrieren. Wie bereits erwähnt, sind tatsächliche feste Anforderungen selten, aber SCRUM verwendet den iterativen Ansatz auch in Gegenwart als Methode, um den vertraglichen Ansatz zu steuern, in den es passt.
Ob dies gelingt, ist offen umstritten. Andere haben zu diesem Zweck viele Metriken bereitgestellt. Ich werde nur bemerken, dass es an der Stärke der Führung liegt, sicherzustellen, dass die Iterationen, die unter ihnen auftreten, korrekt in das obige Vertragssystem passen. Dies gilt für jeden Entwicklungsansatz, ist jedoch bei agilen Ansätzen sichtbarer, da wir davon ausgegangen sind, dass der Top-Down-Ansatz "normal" und ausgebildete Führungskräfte als solche sind.
quelle