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?
agile
development-process
frameworks
development-methodologies
iterative-development
JohnDoDo
quelle
quelle
Antworten:
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".
quelle
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.
quelle
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
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.
quelle
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:
quelle
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.
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).
quelle
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!
quelle
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).
quelle