Ich habe in letzter Zeit viele Posts gesehen, in denen es heißt, dass einer der Hauptgründe für die Verwendung von Agile darin besteht, dass Kunden häufig die Anforderungen ändern.
Nehmen wir jedoch an, die Kunden ändern die Anforderungen nicht häufig . Tatsächlich haben die Kunden zwar feste Anforderungen, die vielleicht etwas vage sind (aber nichts Unangemessenes), aber ich benutze trotzdem Agile.
Der Grund, warum ich Agile einsetze, ist, dass die Software so komplex ist, dass es Details gibt, Probleme, die ich erst erkennen würde, wenn ich sie tatsächlich sehe. Ich könnte einen umfassenden Planungsansatz wie Waterfall durchführen, aber dann würde es einige Monate dauern, bis alle High-Level-Designs und Low-Level-Codierungssignaturen abgeschlossen sind. Es gibt jedoch ein sehr spezifisches, festes Architekturdesign für das System.
Meine Frage ist: Wäre dies als schlecht, Cowboy-Codierung, Anti-Muster, etc.? Müssen wir den Wasserfall einsetzen und so viel wie möglich detailliert planen, bevor wir mit dem Codieren beginnen, wenn die Anforderungen stabil sind, anstatt diese Mentalität in Agile zu verwenden?
EDIT: Das Wichtigste dabei ist, dass wir den Kunden KEINE Schuld für sich ändernde Anforderungen geben können. Angenommen, die Kunden haben uns auf ein sehr konkretes Problem hingewiesen, geben uns eine Wunschliste mit sehr vernünftigen Details und lassen uns in Ruhe (dh die Kunden haben ihre eigenen produktiven Dinge zu tun, nerven sie nicht mehr) ende, wenn du einen minimalen funktionierenden Prototyp hast). Wäre es falsch, in diesem Szenario Agile zu verwenden?
quelle
Antworten:
Kurze Antwort: nein. "Agil" richtig zu machen, bedeutet nicht "keine Planung", es bedeutet nicht, Dinge zu überanalysieren.
Das ist eine vereinfachende Aussage. Bei "Ändern von Anforderungen" geht es auch darum, wie sich das Verständnis des Teams für die Anforderungen ändert. Und es geht darum, wie sich die Prioritäten des Kunden in Bezug auf die Anforderung ändern, wenn er tatsächlich einige Versionen der Software sieht.
In der Tat funktioniert "agil" meiner Meinung nach am besten genau in der von Ihnen beschriebenen Situation - der Kunde hat ein gutes Wissen über seine Gesamtanforderungen, Sie können einen allgemeinen Plan daraus erstellen, Ihren Rückstand mit vielen "User Stories" füllen und haben bereits genug Informationen, um die richtige Systemarchitektur zu wählen. Die kurzen Iterationen einer agilen Entwicklungsstrategie helfen dann dabei, die "vagen Anforderungen" präziser zu gestalten, mit viel Feedback, wenn Sie noch in die richtige Richtung gehen. Außerdem erhalten Sie frühzeitig Rückmeldung über den tatsächlichen Aufwand und die tatsächlichen Kosten (was bei einem Wasserfall-Ansatz immer noch scheitern kann, selbst wenn Sie jede einzelne Anforderung genau kennen).
quelle
In dieser Situation agil zu sein, ist immer noch eine sehr gute Idee. Agile bietet viele Vorteile, von denen nur eines das regelmäßige Feedback des Kunden und die Fähigkeit ist, auf sich ändernde Anforderungen zu reagieren.
Einer der Hauptgründe, warum Wasserfallprojekte für ihr Scheitern berüchtigt sind, ist das „fast abgeschlossene“ Problem - das Testen von Fehlerhäufchen am Ende, so dass ein unlösbares Produkt übrig bleibt und keine Ahnung, ob es weitere zwei Tage oder zwei Jahre braucht, um die ausstehenden Fehler zu beheben. Agile beseitigt dieses Risiko vollständig. Wenn ein agiles Projekt überläuft, können Sie dennoch eine funktionierende Version liefern, die:
A) Dem Kunden wird durch die Demo bewiesen, dass Sie tatsächlich fast da sind ("Alle diese Geschichten sind fertig, wir können die letzten machen, wenn Sie wollen") und etwas mehr Zeit wird genau das bekommen, was sie wollen.
B) Potenziell ist es gut genug, dass sie trotzdem glücklich sind und freigeben.
Die Beseitigung dieses Risikos eines vollständigen Ausfalls ist für mich schon Grund genug für ein Unternehmen, zu einem agilen Entwicklungsprozess überzugehen. Die Fähigkeit, bessere Software als ursprünglich geplant zu entwickeln, ist das i-Tüpfelchen. Wie bereits in anderen Antworten erwähnt, sind diese „konkreten“ Anforderungen oft noch erstaunlich formbar.
quelle
Agile ist ideal, wenn Sie eine häufige Rückkopplungsschleife mit dem Kunden benötigen. Dies kann daran liegen, dass sich die Anforderungen häufig ändern, aber auch aus anderen Gründen.
Auf der anderen Seite kann Agile genauso gut funktionieren, wenn die Anforderungen vollständig stabil sind und der Kunde nur eine einzige Big-Bang-Lieferung erwartet. Möglicherweise müssen Sie jedoch einige Anpassungen vornehmen, um das Ausmaß an Engagement zu berücksichtigen, das der Kunde während des Vorgangs erwartet Projekt. Dies bedeutet, dass die Rolle des Product Owners in Ihrer eigenen Organisation ausgefüllt werden muss und diese Person über genügend Mandate des Kunden verfügen muss, um Entscheidungen treffen zu können.
quelle
Sie können das große Release jederzeit in kleinere Releases (Sprints) aufteilen und Ihren Kunden um Feedback bitten. Auf diese Weise sind Sie sicher, dass Sie das Richtige tun und der Kunde Ihren Fortschritt verfolgen kann.
Wenn etwas nicht stimmt, können Sie Ihrem Kunden die Möglichkeit bieten, Sie früher zu korrigieren, was sehr gut ist. Es ist besser, Ihre Fehler so schnell wie möglich zu korrigieren, als ihm am Ende einen Blödsinn zu zeigen und zu versuchen, ihn zu beheben, wenn Sie nicht einmal wissen, wo Sie anfangen sollen.
quelle