Was liefern Sie in den ersten Iterationen in Agile?

22

Soweit ich weiß, besteht die Idee bei agilen Methoden darin, dass Sie etwas Funktionales bereitstellen und es häufig bereitstellen. Die Anwendung nimmt schrittweise ihre endgültige Form an.

In den ersten Iterationen können Sie jedoch das Framework oder die Grundlagen erstellen, auf denen die Anwendung aufbaut, sodass sie wichtig ist, aber für Benutzer nicht sichtbar ist.

Was wird in diesen ersten Iterationen an den Client geliefert? Wie zeigen Sie den Fortschritt in die richtige Richtung, wenn Sie Gerüst-Code erstellen?

JohnDoDo
quelle
2
Der Aufbau eines gesamten Frameworks oder einer Grundlage sollte eine Entscheidung sein, die so spät wie möglich im Projekt getroffen wird.
JeffO
@JeffO: was meinst du so spät wie möglich? Können Sie das zu einer Antwort erweitern?
JohnDoDo
5
Im Idealfall sollte es überhaupt keine Entscheidung sein. Ein Framework sollte nicht erstellt werden, es sollte als Ergebnis von Refactoring organisch entstehen. Kein "gutes" Framework (nach meiner subjektiven Definition von "gut") wurde jemals von Grund auf neu entwickelt. Sie wurden entweder nachträglich aus vorhandenen Anwendungen extrahiert oder basierten auf anderen Frameworks.
Jörg W Mittag
7
@JohnDoDo setzt voraus, dass Sie die Anforderungen Ihrer Anwendung kennen, bevor sie überhaupt existiert. Jedes Mal, wenn ich gesehen habe, dass Leute dies taten, hatten sie etwas, mit dem es starr und sehr schwierig war, zu arbeiten. In den meisten Fällen kämpfen die Benutzer dieses "Frameworks" eher dagegen als dagegen.
Stefan Billiet

Antworten:

15

Es ist typisch für zweiwöchige Sprints.

Für mich hat der erste oder zweite Sprint wahrscheinlich weniger "sichtbare" Merkmale als spätere Sprints, und zwar aus genau diesem Grund (für eine verworrene Beschreibung von "weniger").

Davon abgesehen sollte es sicherlich nicht zwei Wochen dauern, bis Sie Ihr gesamtes Gerüst aufgebaut haben und nichts in der Benutzeroberfläche sichtbar ist, um es anzuzeigen.

Möglicherweise wird nicht jedes Gerüstelement im ersten oder zweiten Sprint ausgebessert. Möglicherweise können Teile warten und später hinzugefügt werden.

Vielleicht hat Ihr erster Sprint "Webseite X mit Dummy-Daten erstellen", damit Sie Ihrem Kunden etwas Glänzendes zeigen können. Und dann hat der nächste Sprint "Webseite X ändern, um Daten aus der Datenbank zu verwenden".

ozz
quelle
6
+1 für den letzten Absatz - Es ist eine gute Idee, die Entwicklung mit einem Prototypen zu beginnen, der für die Benutzerüberprüfung vorgesehen ist.
Konamiman
4
"Vielleicht hat Ihr erster Sprint" Webseite X mit Dummy-Daten erstellen ", damit Sie Ihrem Kunden etwas Glänzendes zeigen können.": IMO hängt es vom Kunden und von der Zeitskala des Projekts ab: Bei einem 2-monatigen Projekt kann ein Kunde möchte etwas in 1 Woche oder 2 sehen. Für ein 18-monatiges Projekt kann es in Ordnung sein, eine erste Demo in 1 oder 2 Monaten zu erhalten. Während einige Kunden eine Dummy-Seite sehen möchten, möchten andere möglicherweise etwas aussagekräftigeres sehen und das Gefühl haben, dass Sie ihre Zeit verschwenden. Ich denke, Sie können nicht verallgemeinern.
Giorgio
4
+1, aber immer, immer den Eisberg im Hinterkopf behalten, wenn Sie Ihrem Kunden UI-Teile zeigen joelonsoftware.com/articles/fog0000000356.html
Doc Brown
1
@MatthewFlynn - Scrum hat möglicherweise keine echte "Anforderungs" -Phase, aber das bedeutet nicht, dass NULL-Anforderungen oder Dokumentation verfügbar sind. Ich war noch nie in ein Projekt involviert, in dem ein Kunde sagte: "Fangen Sie einfach an zu bauen und wir werden es auf dem Weg herausfinden." Ich denke, dafür gibt es einen Begriff. Normalerweise sollte es eine Art Ermittlungsphase für ein Projekt geben, in der diskutiert und vereinbart wird, was geliefert werden soll. Ich habe Prototypen während des Verkaufsgesprächs vorgestellt
Hanzolo
1
@hanzolo - Ein sehr erfolgreiches Projekt, an dem ich kürzlich gearbeitet habe, war die Implementierung einer Lösung für eine neue gesetzliche Anforderung, die Teil des Affordable Care Act war. Die grundlegenden Anforderungen waren bekannt, aber es gab nichts, was einem Prototyp oder Entwurf im Wege stand, was die Lösung sein könnte. Das Projektteam (zu dem auch Business-Analysten gehörten) hat dies im Rahmen der Sprints herausgefunden. Bestenfalls sprachen die BAs mit Geschäftsleuten über ein oder zwei Sprints vor dem Rest des Teams, aber das war alles, mit dem wir arbeiten mussten. Es hat gut funktioniert.
Matthew Flynn
13

Das Agile Manifest legt nahe, dass Arbeitssoftware mehr wert ist als umfassende Dokumentation, und das Scrum-Framework geht davon aus, dass die Bereitstellung getesteter Arbeitssoftware mit geschäftlichem Nutzen bei jedem Sprint eine Voraussetzung ist.

Warum? Nun, unter anderem sind Designer und Entwickler oft Opfer von YNNI-Artikeln (die Sie nie brauchen werden). Leider sind diese Frameworks, von denen Sie sprechen, in diesem Bereich oft eine große Belastung. Die Entwickler fangen an, all die Dinge einzubauen, die das Framework unterstützen könnte, und plötzlich sind Sie 3 Monate alt und haben nichts von geschäftlichem Wert, das Sie dafür vorweisen könnten. Dann stellt sich heraus, dass das Framework nicht einmal das unterstützt, was sie am Ende brauchen.

Der vorgeschlagene Ansatz besteht also darin, nur das zu erstellen, was jetzt tatsächlich benötigt wird, und es jetzt bereitzustellen.

Dies bedeutet NICHT, dass Sie keine wiederverwendbaren Teile und dergleichen bauen können. Sie tun dies nur immer zur Unterstützung des Aufbaus eines aktuellen Bedarfs. Darüber hinaus bedeutet dies nicht, dass Sie völlig blind sein müssen, um zu sehen, was auf Sie zukommt. Bauen Sie keine Dinge, damit Sie sie später nicht mehr verändern oder verbessern können. Der Schlüssel liegt jedoch darin, stets geschäftlichen Nutzen zu erbringen.

Es gibt oft einige wichtige Dinge, die unbedingt festgelegt werden müssen, bevor etwas geliefert werden kann, wie z. B. das Einrichten von Umgebungen und dergleichen. Für diese Dinge ist es für viele Teams nützlich, einen "Sprint 0" zu haben, in dem die Grundlagen gelegt werden. Sprint 0 kann etwas länger sein als Ihre anderen Sprints, da es nicht auf Ihr Produkt-Backlog oder Ihren Abbrand angewendet wird, aber es sollte immer noch eine angemessene Zeitspanne für den Zeitrahmen festgelegt werden.

Matthew Flynn
quelle
8

Was wird in diesen ersten Iterationen an den Client geliefert?

Was hat den höchsten Geschäftswert für den Benutzer. Wenn die Anwendungen beispielsweise komplexe Geschäftsregeln enthalten, enthalten die ersten Iterationen nur die Geschäftsregeln, die in Form von Code codiert sind. Der Kunde sollte zufrieden sein, solange Sie Code für diese Geschäftsregeln haben. (Das Problem, den Kunden tatsächlich davon zu überzeugen, so etwas zu akzeptieren, ist eine völlig andere Angelegenheit.) Sie können beispielsweise den Geschäftsexperten des Kunden Ihre Einheiten- / Akzeptanztests zeigen, die ausdrücken, was die Domain tun soll, und der Code wird mit einem grünen Ergebnis bestanden. Oder noch besser: Lassen Sie die Geschäftsexperten bei der Erstellung dieser Tests helfen.

Es ist auch eine Frage von

Sie könnten den Rahmen oder die Grundlagen bauen

Was meiner Meinung nach viel wichtiger ist als das, was tatsächlich geliefert wird. Für Evolutionary Design ist es wichtig, dass Sie die Architektur im Laufe der Zeit erstellen, anstatt zu versuchen, sie am Anfang zu erstellen. Als Grundlage wird normalerweise eine Art Datenbank- oder UI-Framework bezeichnet. In diesem Fall gibt es die Idee " Gute Architektur ist eine, mit der Sie wichtige Entscheidungen verschieben können ." Die Wahl der Datenbank oder der Benutzeroberfläche ist eine wichtige Entscheidung. Beispielsweise ist es möglicherweise in Ordnung, nur In-Memory-Speicher für Daten zu verwenden, anstatt zu versuchen, DB von der ersten Iteration an zu verwenden.

Euphorisch
quelle
3

Wir versuchen, in den ersten Iterationen eine möglichst einfache Anwendung bereitzustellen (eine Hallo-Welt-Version von dem, was wir liefern). Darin sehen wir drei wichtige Vorteile:

  • Richten Sie den Liefervorgang ein (immer einer der schwierigsten Teile imho) (Umgebungen, Server in Betrieb nehmen, Sicherheit für diese Umgebung aktualisieren). Da wir häufig liefern, ist es wichtig, dies so schnell wie möglich zu korrigieren.
  • Geben Sie den Benutzern einen ersten Einblick, wie die Anwendung aussehen wird. Dies hilft den Benutzern und Entwicklern zu verstehen, was sie wirklich wollen und brauchen.
  • Machen Sie sich eine grundlegende Vorstellung davon, wie die Architektur der Anwendung aussehen wird (die Anwendung sollte die grundlegenden Ebenen oder Komponenten der Anwendung abdecken).
user99561
quelle
"Lieferprozess einrichten" ist viel schwieriger als man denkt.
Frank Shearar
Ja ist es. Deshalb sollten Sie dies so früh wie möglich tun.
User99561
2

In den ersten Iterationen können Sie jedoch das Framework oder die Grundlagen erstellen, auf denen die Anwendung aufbaut, sodass sie wichtig ist, aber für Benutzer nicht sichtbar ist.

Dies ist falsch, da Sie kein Framework erstellen müssen, das Sie möglicherweise in Zukunft verwenden werden. Die Idee ist, nur das zu bauen, was benötigt wird (siehe auch YAGNI ).

Im Sprint Zero müssen Sie sich auf die eigentliche Arbeit vorbereiten. Viele Leute streiten sich, was in diesem Sprint zu tun ist, aber meiner Meinung nach ist er beendet, wenn Sie mit der Arbeit an den Elementen im Rückstand beginnen können. Dieser Schritt umfasst das Festlegen von PCs, das Festlegen des Erstellungsprozesses, das Auswählen von Frameworks usw.

Wenn Sie mit Sprint Null (oder Iteration Null) fertig sind, können Sie mit der Arbeit an Ihrer Anwendung beginnen. Nehmen Sie die Elemente aus dem Rückstand und beenden Sie sie nacheinander. Nachdem Sie die erste Iteration abgeschlossen haben, haben Sie etwas Nützliches. Die erste Iteration enthält in der Regel einige der wichtigsten Funktionen.

Was wird in diesen ersten Iterationen an den Client geliefert? Wie zeigen Sie den Fortschritt in die richtige Richtung, wenn Sie Gerüst-Code erstellen?

Nach der Iteration Null haben Sie offensichtlich nichts mehr zu liefern. Das Lieferbare kommt nach Iteration eins. Es enthält Funktionen, die Sie für die Iteration festlegen.

Wenn Ihre Frage lautet "Wie wähle ich, was in Iteration X aufgenommen wird?", Werfen Sie einen Blick auf diese Videocasts (Videos für Iteration 0 A und Teil B).

BЈовић
quelle
+1 für die einzige Erwähnung der Iteration zero
crad
Ich denke nicht darüber nach, den Build-Prozess festzulegen und Framework-Aufgaben für Sprint Null auszuwählen. Woher wissen Sie, welches Framework Sie benötigen, wenn Sie nicht wissen, was Sie erstellen sollen? Ich beschränke Sprint 0 immer auf ein Minimum. Holen Sie sich Leute PCs und finden Sie einen Platz, wo sie sitzen können. Finden Sie heraus, mit wem Sie im Unternehmen sprechen müssen. Richten Sie ein erstes Planungstreffen ein. Ich wende YAGNI auf den Rest an.
User99561
@ user99561 Frameworks sind große Entscheidungen und normalerweise schwer zu ändern. Beispielsweise sollten Sie wissen, ob Sie gtest oder cppunit für Komponententests verwenden, bevor Sie mit dem Schreiben von Code beginnen. Ein späterer Wechsel wird große Schmerzen im Arsch verursachen und viel Zeit verschwenden.
B 10овић
@ BЈовић: Ja Frameworks sind große Entscheidungen, deshalb solltest du die Entscheidung verschieben. Es macht keinen Sinn, sich für ein Framework zu entscheiden, wenn Sie nicht wissen, was entwickelt werden muss und wie die Anwendung und Architektur aussehen werden. Sie sollten entscheiden, welches Framework im letztmöglichen Moment verwendet werden soll. Andernfalls laufen Sie definitiv Gefahr, dass Sie es ändern müssen.
User99561
@ user99561 Wenn du nicht weißt, was entwickelt werden muss, kannst du gar nicht erst anfangen :) Die Anforderungen und User Stories müssen aufgeschrieben werden, sonst kann die Iteration 1 gar nicht erst beginnen.
BЈовић
2

Sie können so ziemlich alles liefern, was Sie wollen. Das Gebäude der Infrastrukturidee ist einfach falsch / nicht agil / nicht nachhaltig.

Beispiel: Das Erstellen einer voll funktionsfähigen Hello World-App kann in Stunden erfolgen. Das Hochfahren eines Servers (auch vorübergehend) in der Cloud oder als VM kann in Stunden erfolgen.

Dies reicht aus, um mit der Entwicklung zu beginnen . Wenn Sie dann ein CI benötigen, können Sie eine CI-Story hinzufügen. Wenn Sie einen physischen Server benötigen, fügen Sie sicher eine Story dazu hinzu.

Aber fangen Sie an Tag 1 an zu liefern und hören Sie nie auf!

Sklivvz
quelle
1

Frühe Iterationen, insbesondere die erste, enthalten oder sollten zumindest Architekturspitzen einplanen, die eine gewisse Zeit für die Erkennung und möglicherweise einige architektonische Prototypen beinhalten.

Wie Sie sagten, gibt es im Allgemeinen strukturelle Anforderungen, die für den Stakeholder / Kunden möglicherweise nicht viel bedeuten, aber eine starke Plattform- oder Musterorientierung bilden müssen. Sie können dies nicht umgehen, da Sie erst mit dem Erstellen von B beginnen können, wenn A abgeschlossen ist.

Ein Teil des Agile-Ansatzes besteht darin, den Kunden in der Nähe zu halten, sodass keine Dokumentation erforderlich ist, da Sie nur das Telefon abholen und E-Mails senden müssen und dies erwartet wird. Die Kundenerwartungen sollten angemessen festgelegt und alle durchgeführten Arbeiten sollten sehr knapp und NOTWENDIG sein . Keine Vergoldung, kein "Möglicherweise brauchen Sie es" usw. Bauen Sie in A das auf, was Sie brauchen, um auf B zu gelangen.

Abhängig davon, wie Sie das Projekt angreifen, können Sie nur das erforderliche Fundament aufbauen, um ein bestimmtes Modul abzuschließen. Während des Sprint-Planungsmeetings legen Sie die Pläne für den aktuellen Sprint auf der Grundlage der vom festgelegten Prioritäten fest Abhängig davon, was für diesen Sprint benötigt wird, kann es einige grundlegende Anforderungen geben, sodass dies für Sprint 1 gilt. Nachdem der erste Sprint abgeschlossen ist und A erstellt wurde, planen Sie, B abzuschließen.

Wenn Sie sich mit dem Kunden auf einen Zeitplan geeinigt haben, ist es dem Kunden wahrscheinlich egal, was Sie als Erster oder Zweiter tun. Sie könnten ihnen jederzeit die Ergebnisse der Einheitentests zeigen, aber wenn Sie sagen, dass Sie nach Sprint 2 (oder 3) etwas sehen können, und Sie liefern, hat dies einen hohen Stellenwert. Von Kunden wird erwartet, dass sie genauso vernünftig sind wie von Entwicklern, und beide arbeiten auf dasselbe Ziel hin. Ein abgeschlossenes Projekt, das den Bedürfnissen des Kunden entspricht und wie erwartet funktioniert. Die Sorge, dass nach dem ersten Sprint nichts mehr zu sehen ist, ist umstritten, da der Kunde nur sicherstellen möchte, dass das Projekt nach dem 20. Sprint fertig ist (-ish).

Hanzolo
quelle