Wie funktioniert Agile beim Ersetzen eines funktionierenden Systems?

15

In einer idealen agilen Welt erstellen Sie schnell eine kleine, aber nützliche Teilmenge des gewünschten Endsystems und geben sie den Benutzern. Sie sind aufgeregt, weil es nützlich ist, sie beginnen damit und geben Feedback. Sie erarbeiten dann, was Sie hinzufügen müssen, bauen das auf und wiederholen es, bis Ihnen die Zeit ausgeht.

In letzter Zeit hatte ich einige Projekte, bei denen ein funktionierendes System ersetzt wurde. Das obige Modell funktionierte überhaupt nicht: Bis Sie ein System erstellt hatten, das praktisch alle Funktionen des vorhandenen Systems umfasste, hatten die Benutzer überhaupt kein Interesse daran. Sie würden es nicht benutzen.

Wie wendet man Agile an, wenn "die kleinste nützliche Teilmenge" "alles" ist?

Steve Bennett
quelle
3
Ich habe eine Frage, ist dieses neue System ein direkter Spiegel eines vorhandenen Feature-Sets, und wenn ja, warum ändern Sie es?
Benutzer können Interesse zeigen oder nie die neue Funktionalität erhalten. Sie haben die Wahl, aber in einigen Geschäftsumgebungen haben sie möglicherweise Vorgesetzte, die anders denken.
JeffO

Antworten:

14

Die agile Lösung könnte darin bestehen, nicht alles auf einmal zu ersetzen, sondern den Austausch schrittweise einzustufen.

Führen Sie das neue System schrittweise ein und lassen Sie dabei Teile des alten Systems laufen. Das alte System wird nicht auf einmal ausgeschaltet, es verschwindet nur. Die neuen Teile bieten neue Funktionen oder andere Vorteile, sodass die Benutzer diese gerne nutzen. Dies ist auch weniger riskant, da Sie zu jeder Zeit ein zu 100% funktionierendes System haben.

MarkJ
quelle
2
+1 hat Ihre Antwort hier nicht einmal gesehen, bevor ich praktisch dasselbe gesagt habe. Großartige Köpfe und alle;)
Michael Brown
+1, um zu demonstrieren, dass Agile für bestimmte Arten von Real-Life-Implementierungen möglicherweise kein idealer Ansatz ist.
Pap
@pap Ja, Agile (TM) wurde so heftig gehypt, dass die Gefahr besteht, blindlings eine festgelegte Methodik anzuwenden , ohne über Ihre eigene spezifische Situation nachzudenken.
MarkJ
Um Teile des alten Systems am Laufen zu halten, muss man Entwicklungsaufwand für die Integration in das alte System aufwenden, oder?
Steve Bennett
1
@SteveBennett: Ja, das tut es. Das ist natürlich ein Kompromiss. Die Auszahlung ist jedoch mit einem erheblich verringerten Risiko verbunden, und Sie müssen nur den Teil erneut ausführen, der erneut ausgeführt werden muss.
sleske
6

Anstatt das vorhandene System neu zu schreiben (was, wie Sie bereits erwähnt haben, einige Anstrengungen erfordert, bevor das neue System mit der vorhandenen Funktionalität übereinstimmt), sollten Sie den Strangling Vine- Ansatz in Betracht ziehen. Grundsätzlich implementieren Sie neue Funktionen mithilfe Ihres neuen Ansatzes über die vorhandene Anwendung hinaus. Wenn Sie die Mängel des alten Systems beheben, um neue Funktionen zu adressieren, wird der neue Code schließlich den alten vollständig ersetzen.

Dies erfordert mehr Präzision und Aufwand als ein "Neustart" der alten App. Sie haben jedoch weniger Zeit für den ROI. Außerdem können Sie während des Vorgangs Haken anbringen, damit das "neue" System vom nächsten "neuen" System leichter erwürgt werden kann.

Michael Brown
quelle
5

Die Freigabe kleiner Inkremente in die Welt könnte für Projekte auf der grünen Wiese funktionieren, aber selbst dann ist die geringe Anzahl von Funktionen möglicherweise nicht allzu nützlich.

Scrum befürwortet, dass das Produkt nach jedem Sprint "potenziell versandfähig" ist. Es muss nicht versandt werden, sondern die Qualität eines versandfähigen Produkts haben.

Wenn Sie Benutzern eine inkrementelle Version der App geben möchten, können Sie diese als Alpha, Beta und Release Candidate-Versionen klassifizieren, während die echte Produktions-App weiterhin verwendet wird.

Möglicherweise werden neue Funktionen hinzugefügt und alte entfernt, wenn Sie das Feedback der Benutzer berücksichtigen.

aqwert
quelle
1
+1 Genau so sind wir damit umgegangen. Obwohl die ganze Idee, von vorne anzufangen, sehr unagil ist. Wie sehr haben Sie sich überlegt, die alte Lösung Stück für Stück zu ersetzen?
Kris Van Bael
@KrisVanBael das ist theoretisch besser (und definitiv ein Ideal), aber es ist auch eine dieser "es kommt darauf an" -Fragen - einige alte Lösungen sind wirklich alt (man sieht sich also Plattformänderungen an) oder der Prozess ist von Ende zu Ende verkabelt / in das System integriert und die "Bits" können ziemlich groß sein.
Murph
Ich arbeitete an einem Ort, an dem das Original sehr schnell auf den Markt gebracht wurde, und daher war das Design ziemlich schlecht. Wir hatten die Idee, mit einer besseren Vorstellung davon, was zu tun ist, und hoffentlich besserem Code von vorne zu beginnen. Es ging nie voran, was für die beste Ursache war, dass die Kosten zum Nutzen nicht rentabel waren. Wenn das vorhandene System funktioniert, können Sie es im Laufe der Zeit geringfügig verbessern.
aqwert
3

Ich arbeitete an einem umfangreichen Austausch von Geschäftsanwendungen für ein großes nationales Kabelfernsehnetz. Die Entwicklung des neuen Systems wurde mit SCRUM durchgeführt. Es handelte sich um ein 18 bis 24-monatiges Entwicklungsprojekt, um fast alle wichtigen Subsysteme erneut zu implementieren. die näherten sich 10 Jahre alt.

Es gab eine Planungsphase von ungefähr 6 Monaten, bevor die Entwicklung begann, aber es wurde auch als SCRUM angegangen. Hier hat der Product Owner nach bestehender Systemanalyse und Befragung der Kunden hochwertige Stores und Epics verfasst.

Das vorhandene System war im kritischen Wartungsmodus äußerst stabil. Es wurden nur Show Stopper-Probleme behoben, alles wurde nur zu historischen Zwecken protokolliert und um sicherzustellen, dass im neuen System nicht dieselben Probleme auftraten.

Das neue System entwickelte sich wie in einem agilen Prozess beschrieben, es war größtenteils extrem reibungslos. Wenn das Ersatzsystem die Eigenschaftsparteilichkeit erreichte, ging es nicht in die Produktion, sondern in parallele Produktionsversuche. Eine Untergruppe von nicht kritischen Mitarbeitern begann, beide Systeme zu verwenden, um zu überprüfen, ob sich das neue System wie das alte verhält. mit den alten bugs natürlich behoben.

Nachdem das neue System fast 100% neue Funktionen erhalten hatte, wurde es für allgemeine parallele Produktionsläufe eingeführt, die einige Monate dauerten.

Sobald der Kunde der Ansicht war, dass seine Anforderungen erfüllt werden, wurde das alte System gesichert, ausgeschaltet und in Betrieb genommen. Ich gehe davon aus, dass sie die alte Systemhardware neu definiert haben, da sie nach dem Umbau nie wieder auf das alte System zurückgreifen mussten.


quelle
Cool. Das Entscheidende in dieser Geschichte war die Verfügbarkeit von Mitarbeitern, die bereit sind, gleichzeitig an beiden Systemen zu arbeiten.
Steve Bennett
2

Ich denke immer noch, dass Agilität in diesem Szenario viel Wert schafft.

Es ist nur so, dass Sie ein genau definiertes Endziel haben, das aktuelle System zu ersetzen.

Mit agilen Techniken und Prozessen können Sie noch effektiver dorthin gelangen .

Zum Beispiel:

Sie können das System weiterhin iterativ und in kleinen Sprints ausliefern.

Sie können nach wie vor agile Techniken verwenden, um die Arbeit nach der Kommunikation mit den Schlüsselpersonen zu priorisieren.

Sie können dennoch agil planen, basierend auf der beobachteten Geschwindigkeit.

Sie können weiterhin agile Techniken und Philosophien wie die Verbreitung von Wissen, TDD und Clean Coding verwenden, um die Qualität und das interne Design des Projekts zu verbessern.

Wenn Sie Leute haben, die wirklich kein Interesse an dem Projekt haben und sich nicht mit dem Projekt befassen, bis sie einen perfekten Ersatz gefunden haben, haben Sie ein größeres Problem, unabhängig davon, ob Sie Wasserfall, Agilität oder irgendeinen Prozess verwenden.

Benjamin Wootton
quelle
1

Es funktioniert genauso, aber es wird schwieriger sein, diesen Ansatz an bestehende Benutzer zu verkaufen. Sie möchten das neue System möglicherweise nicht und möchten nicht durch regelmäßige Tests unterbrochen werden. Sie wollen so lange wie möglich warten und es dann am Ende einfach testen. Die meisten Benutzer fühlen sich bis zu einem gewissen Grad so, aber es liegt an den Verantwortlichen, sie zu schulen. In ihren Gedanken arbeiten Sie mit einer vorhandenen Anwendung. Sie sollten also wissen, was zu tun ist und warum sie stören.

Machen Sie ihnen klar, dass Sie es nicht so machen wollen, weil Sie denken, dass es Spaß machen wird und Sie sich durch einen Wasserfallprozess einsam fühlen. Es wird auf lange Sicht eine bessere App machen.

Ein wichtiges Verkaufsargument könnte darin bestehen, diese eine Änderung während des Aufbaus der neuen App zu implementieren, die sie schon immer wollten, aber niemals im alten System erhalten konnten.

JeffO
quelle
0

Wenn ich ein altes verrostetes Auto habe, das ich fahren muss, um zur Arbeit zu kommen, und ich gehe zum Händler, um ein neues Auto zu kaufen. Das Modell, das ich möchte, ist nicht vorrätig, daher muss es ab Werk bestellt werden, und es wird eine Weile dauern, bis es eintrifft.

Der Händler beschließt dann aus gutem Glauben, Ihnen den Motorblock des Autos zu geben, bis das von Ihnen bestellte Auto eingetroffen ist. Was sollen Sie mit einem Automotor tun? Sicher, ich kann einige Komponenten anschließen, um es zu testen und zum Laufen zu bringen, aber es hilft mir nicht wirklich, morgen dort zu arbeiten, wo das alte verrostete Auto funktioniert.

Zugegeben , es ist ein weit andere weinen zwischen einem Auto zu bauen und kundenspezifische Software - Aufbau, aber sie ignorieren , dass für die Zwecke der Beweisführung . Der Punkt der Geschichte ist nicht zu verwirren, dass der Kunde keine Verwendung für inkrementelle Änderungen findet, wenn er bereits eine Software hat, die gut genug ist, um die Arbeit jetzt zu erledigen. Es erfüllt ihr Bedürfnis vorerst schon.

Das heißt nicht, dass Agile hier kein wichtiger Teil des Prozesses ist, da es dem Kunden ein kontinuierliches Feedback zum Projektstatus ermöglicht. Sie können sicherstellen, dass Fortschritte erzielt werden, bevor wichtige Meilensteine ​​und Ergebnisse erreicht werden. Sie können potenzielle Probleme und Probleme frühzeitig erkennen, bevor die Behebung eines Fehlers zu kostspielig wird.

Vielleicht möchten Sie als Autokunde nur den Motor betrachten und bewerten, um sicherzustellen, dass Sie tatsächlich das bekommen, was Sie erwartet haben. Hoppla, ich wollte eigentlich einen 6-Zylinder-Motor anstelle des 4-Zylinder-Motors! Habe ich dir das nicht früher gesagt? Kein Problem, lassen Sie uns eine Änderung in der Fabrik bestellen.

Verkaufen Sie den Kunden die Idee, dass es in ihrem besten Interesse ist, die neuen Software-Releases noch nicht als Ersatz zu verwenden, sondern sie zu evaluieren und sicherzustellen, dass sie mit jedem Schritt auf dem Weg zufrieden sind.

maple_shaft
quelle
Ja, aber meine Erfahrung war bisher, der Metapher zu folgen, dass Autokunden nichts über Motoren wissen und Ihnen nichts Nützliches sagen können, wenn Sie sich einen ansehen. Wenn sie sich im hypothetischen Modus befinden, ist das Feedback ziemlich oberflächlich: "Oh, das sieht so aus, als würde es das tun, was wir wollen."
Steve Bennett