Sollten wir eine agile Methodik anwenden, wenn wir eine vorhandene Anwendung von Grund auf neu schreiben?

8

Ich arbeite für ein kleines Produktunternehmen. Wir sind dabei, unser bestehendes Produkt von Grund auf neu zu schreiben. Wir planen, für unsere Entwicklung eine agile Methodik anzuwenden. Meine Frage ist nun, dass es sich lohnt, in die agile Welt einzutauchen, da wir bereits vor Projektbeginn alle Anforderungen haben (während wir das vorhandene Produkt neu schreiben). Ist Agilität nicht nützlicher, wenn Sie nicht alle Anforderungen im Voraus haben und Ihre Anforderungen in Phasen erhalten?

Zweitens, sagen wir, wenn wir in Agile einsteigen, was ist die beste Vorgehensweise zum Entwerfen einer Datenbank? Angenommen, wir erstellen in unserer ersten Iteration nur ein Anmeldesystem (Benutzer können sich anmelden, abmelden usw.). Müssen wir nur eine Benutzertabelle erstellen, ohne uns um andere Tabellen kümmern zu müssen? Und andere Tabellen würden sich weiterentwickeln, wenn unser Produkt Fortschritte machen würde?

Yannis
quelle
10
Sie haben mich verloren bei "Wir sind dabei, unser bestehendes Produkt von Grund auf neu zu schreiben." Bitte lesen Sie dieses alte Juwel, bevor Sie "Dinge, die Sie niemals tun sollten, Teil 1" ausführen
JohnFx
2
Die Verwendung einer Methode, die Sie ohne zwingenden Grund nicht kennen, ist ein nicht zu rechtfertigendes Risiko. Es ist gut, dass Sie sich mit Agile auskennen. Stellen Sie sicher, dass Sie gute Gründe finden, warum Sie sich für andere Techniken entscheiden.
NoChance
2
Einer der Hauptvorteile von Agile besteht darin, auf Veränderungen zu reagieren. Das Umschreiben Ihres vorhandenen Produkts wird voraussichtlich viel Zeit in Anspruch nehmen. Glauben Sie wirklich, dass sich die Anforderungen in dieser Zeit nicht ändern werden?
TrueWill
1
@TrueWill - Wie kann eine Softwaremethode auf Änderungen reagieren? Das macht keinen Sinn. Es ist keine KI ...? Lol.
Anonym
Mein Arbeitsplatz ist ein gutes Beispiel für die Einführung agiler Methoden ohne Umschreiben, aber mit kleinen inkrementellen Schritten.
Yam Marcovic

Antworten:

10

lohnt es sich, in die agile Welt einzutauchen?

Ja.

Ist Agilität nicht nützlicher, wenn Sie nicht alle Anforderungen im Voraus haben und Ihre Anforderungen in Phasen erhalten?

Falsch.

Wenn Sie nicht alle Anforderungen haben, ist dies der einzige Weg, um Fortschritte zu erzielen. Alles andere erfordert phantasievolle Annahmen, die sich irgendwann als falsch herausstellen werden. Agile macht einfach weniger phantasievolle Annahmen.

Wenn Sie alle Anforderungen haben, müssen Sie dennoch alle agilen Prinzipien befolgen.

Lesen Sie dies, bevor Sie fortfahren: http://agilemanifesto.org/

All diese Punkte sind wahr, egal wie viel Sie über die Anforderungen wissen.

Sie profitieren weiterhin von einer agilen Methode wie Scrum, da Sie realistischere Erwartungen haben.

Was ist die beste Vorgehensweise zum Entwerfen einer Datenbank? Angenommen, wir erstellen in unserer ersten Iteration nur ein Anmeldesystem (Benutzer können sich anmelden, abmelden usw.).

Was für eine schreckliche erste Iteration.

Müssen wir nur eine Benutzertabelle erstellen, ohne uns um andere Tabellen kümmern zu müssen? Und andere Tabellen würden sich weiterentwickeln, wenn unser Produkt Fortschritte machen würde?

Ja. Sie erstellen die Datenbank inkrementell.

Sie machen alles schrittweise.

Sie priorisieren basierend darauf, was für die Benutzer den größten Wert schafft . Keine phantasievollen (und albernen) technischen Überlegungen.

S.Lott
quelle
2
Ich denke, dass Ihre Aussage "es ist der einzige Weg, um Fortschritte zu erzielen" eine Annahme ist, die nicht wahr ist.
NoChance
@Emmad Kareem: "Alles andere erfordert phantasievolle Annahmen". Sie können das "Fortschritt" nennen, wenn Sie möchten. Ich behaupte jedoch, dass phantasievolle Annahmen kein wirklicher Fortschritt sind. Zufällige Annahmen als Weg, um "Fortschritt" zu erzielen, sind nur zufälliges Dithering. Es ist kein Fortschritt in Richtung einer endgültigen Schlussfolgerung. Es ist nur eine zufällige Aktivität, von der ein gewisser Prozentsatz in die richtige Richtung geht. Der Rest der Aktivität besteht lediglich aus Annahmen, die ungültig werden, wenn die Anforderungen erfasst werden.
S.Lott
@Emmad Kareem: Es hilft, die Korrektur bereitzustellen, die Sie sehen möchten. "keine wahre Tatsache" sagt mir nicht, wie ich das beheben soll, oder?
S.Lott
2
Danke für die Klarstellung. Mein Punkt war, dass Agile nur eine Methode unter vielen anderen ist, und zu sagen, dass "es der einzige Weg ist", klingt für mich wie eine Annahme. Ihre persönliche Meinung wird natürlich respektiert.
NoChance
@Emmad Kareem: "Agilität ist nur eine Methode unter vielen anderen". Agile ist keine einzelne Methode. Es ist ein Ansatz, der zu einer Vielzahl von Methoden führt. Es gibt "viele andere" Methoden, die mit unvollständigen Anforderungen nicht funktionieren können und nicht. Es gibt viele Agile Methoden, von denen alle tun Arbeit mit unvollständigen Anforderungen.
S.Lott
1

Meine Frage ist nun, dass es sich lohnt, in die agile Welt einzutauchen, da wir bereits vor Projektbeginn alle Anforderungen haben (während wir das vorhandene Produkt neu schreiben).

Ja, obwohl ich mir vorstellen würde, dass es wahrscheinlich mehr als ein paar mögliche Änderungen am aktuellen Design der Anwendung gibt, da dies die Zeit wäre, um verschiedene technische Schulden zu beseitigen, wenn ein saubereres Design angesichts der jetzt bekannten Informationen vorliegt.

Ist Agilität nicht nützlicher, wenn Sie nicht alle Anforderungen im Voraus haben und Ihre Anforderungen in Phasen erhalten?

Wie sicher sind Sie, dass sich diese Anforderungen beim erneuten Erstellen der Anwendung nicht ändern werden? Sind Sie sicher, dass das aufgenommene Design niemals überarbeitet wird?

Zweitens, sagen wir, wenn wir in Agile einsteigen, was ist die beste Vorgehensweise zum Entwerfen einer Datenbank? Angenommen, wir erstellen in unserer ersten Iteration nur ein Anmeldesystem (Benutzer können sich anmelden, abmelden usw.). Müssen wir nur eine Benutzertabelle erstellen, ohne uns um andere Tabellen kümmern zu müssen? Und andere Tabellen würden sich weiterentwickeln, wenn unser Produkt Fortschritte machen würde?

Hier gibt es viele verschiedene Möglichkeiten. Tun Sie gerade genug, damit es funktioniert. Wenn die Benutzertabelle alles ist, was benötigt wird, großartig. Wenn es ein paar andere Tabellen gibt, die jemand haben möchte, damit die Datenbank in einer normalisierten Form vorliegt, ist es möglicherweise besser, dies zu tun. Sie werden beim ersten Mal nicht perfekt sein und bei Agile dreht sich alles um das Ausprobieren und Beheben von Methoden. Sobald Sie zeigen, was Sie haben, wird der Benutzer häufig Feedback erhalten, das Agile am Laufen hält ... (Auch wo die neue Anforderungen werden kommen, da die Leute dann vielleicht auch anfangen, nach Sachen zu fragen)

JB King
quelle
1

Ich arbeite für ein kleines Produktunternehmen. Wir sind dabei, unser bestehendes Produkt von Grund auf neu zu schreiben. Wir planen, für unsere Entwicklung eine agile Methodik anzuwenden. Meine Frage ist nun, dass es sich lohnt, in die agile Welt einzutauchen, da wir bereits vor Projektbeginn alle Anforderungen haben (während wir das vorhandene Produkt neu schreiben).

Ein kleines Unternehmen (Management), das agile Praktiken einsetzen möchte, befindet sich in einer hervorragenden Ausgangsposition, da es in der Regel Entwickler sind, die die Akzeptanz vorantreiben. Ich würde empfehlen, dass Sie Führungskräfte identifizieren, die bereit sind, die Adoption auf Teamebene weiter voranzutreiben (Schulung, Institutionalisierung usw.).

Fragen Sie Ihre Benutzer anhand der vorliegenden Anforderungen, was sie in einer Iteration sehen möchten. Dann liefern Sie es. Wiederholen Sie dies bei der nächsten Iteration und erneut. Benutzer, die in der Lage sind, Ihre Arbeit frühzeitig zu berühren, helfen Ihnen dabei, die Anforderungen zu verfeinern. Wenn Sie derzeit keine automatisierten Prozesse eingerichtet haben oder das Team die kontinuierliche Entwicklung nicht versteht, planen Sie Zeit ein, um sicherzustellen, dass dies der Fall ist.

GuyR
quelle
0

Agile ist für jedes Entwicklungsprojekt anwendbar und nicht speziell für vollständige Greenfield-Projekte, für die noch keine Anforderungen festgelegt wurden. Agiles Projektmanagement macht Ihr Projekt selbstlernend und verbessert sich selbst, indem es kleine Schritte unternimmt , Ihre Schritte häufig überprüft und Ihre nächsten Schritte verbessert. Es gibt viele Blogs auf Agile. Google ist dein Freund ...

In Bezug auf Ihre spezielle Frage zur Entwicklung agiler Datenbanken sind Sie auf dem richtigen Weg. Sie können die Benutzerverwaltung entwickeln, ohne sich zuerst um den Rest zu kümmern. Das wird wahrscheinlich zu einigen Nacharbeiten führen, wenn Sie weiter im Projekt sind, aber das kann als Kosten für eine kleine fokussierte Iteration angesehen werden. Ein Mid-of-the-Road-Ansatz würde Ihr Datenbankmodell etwas genauer untersuchen und ein Design entwickeln, das einige Sprints voraus sein könnte. Auf diese Weise haben Sie weniger Nacharbeit.


quelle
0

Zweitens, sagen wir, wenn wir in Agile einsteigen, was ist die beste Vorgehensweise zum Entwerfen einer Datenbank? Angenommen, wir erstellen in unserer ersten Iteration nur ein Anmeldesystem (Benutzer können sich anmelden, abmelden usw.). Müssen wir nur eine Benutzertabelle erstellen, ohne uns um andere Tabellen kümmern zu müssen? Und andere Tabellen würden sich weiterentwickeln, wenn unser Produkt Fortschritte machen würde?

Seien Sie vorsichtig, wenn Sie diesen Ansatz übertreiben. Es kann so sein, als würde man ein Haus bauen und versuchen, ein Badezimmer komplett fertigzustellen, während das Fundament noch steht. Wahrscheinlich müssen Sie wichtige Teile Ihrer Arbeit vollständig wiederholen, wenn die Grundlage Ihrer Anwendung, die Datenbank und das zugrunde liegende Objektmodell nicht ausgereift oder stabil genug sind, um die Struktur zu unterstützen.

Denken Sie auch daran, dass die Aussage, dass Sie Agile / Scrum verwenden, Sie nicht davon abhält, gute Softwareentwicklungspraktiken wie ordnungsgemäße Komponententests und solides Datenbank- und Objektdesign anzuwenden. Wenn Agile falsch angewendet wird, kann es leicht in einen Code fallen und das Todesspiralenprojekt reparieren, das sehr schmerzhaft oder sogar unmöglich zu beheben sein kann.

jfrankcarr
quelle
0

Bei Agile geht es um mehr Produktivität und Flexibilität . Warum schreiben Sie Ihre Bewerbungen neu? Gründe könnten sein:

  1. Ändern der Plattform (z. B. von Windows auf Linux)
  2. Ändern der Sprache (z. B. von ASP.NET zu PHP)
  3. Der Refactoring-Betrag ist so hoch, dass das Umschreiben zu einer kostensparenden Option wird
  4. Das Geschäft hat sich stark verändert. Sie erstellen also tatsächlich eine neue Anwendung (ein neues Lied, das auf demselben Thema basiert, wenn Sie dies wünschen).

Aus einem dieser Gründe werden Sie Ihr Produkt nicht über Nacht liefern, und es wird natürlich einige Zeit dauern.

Ein Product Backlog ist nur einer der Punkte, die Agile empfiehlt. Was Sie über die Kenntnis des gesamten Geschäfts sagen , bedeutet, dass Sie bereits viele PBIs in Ihrem Produkt-Backlog haben.

Aber ist es nicht besser, dass Sie am Ende jedes Sprints Teile Ihres neuen Produkts liefern? Macht Sie nicht agiler und reagiert auf Änderungen? Stellen Sie sich zum Beispiel vor, Sie möchten die neue Anwendung schön machen. Ist es nicht schlecht, nach 10 Monaten zu wissen, dass Ihr neues Design nicht akzeptabel ist? Wird es nicht eine gute Übung sein, wenn Sie nach 2-3 Wochen darüber informiert werden?

Meine Antwort auf Ihre Frage lautet:

Agile Entwicklung hat definitiv viele Dinge zu bieten, auch für neu geschriebene Anwendungen.

Saeed Neamati
quelle
0

lohnt es sich, in die agile Welt einzutauchen?

Könnte sein. Das Ausprobieren von Neuem kann riskant sein, insbesondere wenn es für alle neu ist. Ich persönlich finde Agile nützlich, wenn es richtig gemacht wird .

Ist Agilität nicht nützlicher, wenn Sie nicht alle Anforderungen im Voraus haben und Ihre Anforderungen in Phasen erhalten?

Dies kann hilfreich sein, um Anforderungen zu steuern, wenn Sie sie noch nicht haben. Dies bedeutet jedoch nicht, dass der Nutzen nur auf die Fahranforderungen beschränkt ist.

Was ist die beste Vorgehensweise zum Entwerfen einer Datenbank?

Iterativ. Verwenden Sie Datenbankmigrationen.

Vorschläge

  • Wenn du Agile machen willst, ist das großartig. Ich würde versuchen, jemanden zu finden, der es zuvor getan hat, um Ihnen durch den Prozess zu helfen.

  • Menschen ignorieren oft den Refactoring-Schritt, wenn sie Agile zum ersten Mal ausprobieren. Unterlassen Sie. Es wird das Projekt beenden.

  • Denken Sie in vertikalen Schichten (Features) anstelle von Ebenen. Implementieren Sie vertikale Slices, damit Sie nach Abschluss der ersten Feature-Card ein funktionierendes System haben. Sobald es funktioniert, lassen Sie es weiter funktionieren und fügen Sie es einfach mit jeder Funktionskarte hinzu.

Dietbuddha
quelle
0

Wir haben Agile für ein Projekt verwendet, bei dem von einer alten Anwendung zu einer neuen Gruppe von Anwendungen und einer neuen Architektur gewechselt wird. Unsere Situation ist insofern etwas anders, als wir versuchen, nicht nur die vorhandene Anwendung (die intern von unseren Abteilungen für Vertrieb, Finanzen, Beschaffung und Lager verwendet wird) zu wiederholen, sondern auch die Erfahrung jeder Abteilung auf diesem Weg zu verbessern. Eine Herausforderung, die wir bei der Verwendung von Agile gesehen haben, besteht darin, dass der Geschäftswert für das Verschieben von Teilen der Funktionalität für einen bestimmten Geschäftsbereich hoch ist, andere Teile jedoch niedrig. Wir stellen daher fest, dass wir neue Anwendungen erstellen und die alte Anwendung während des Übergangs weiter ausführen. Wir haben Probleme, das Unternehmen dazu zu bringen, den Wert der Konzentration auf die Verlagerung eines "Kunden" auf eine völlig neue Anwendung zu erkennen. Wir bekommen jedoch viele wertvolle Geschichten in unsere Sprints. Ich denke, bald werden wir zu einem halben Liter kommen, wenn wir das Unternehmen davon überzeugen müssen, dass wir uns jeweils auf eine Einheit konzentrieren müssen.

Um die ursprüngliche Frage zu beantworten: Ja, Agilität ist ein guter Weg. Seien Sie darauf vorbereitet, dass einige Abhängigkeiten auftauchen, und leiten Sie einige Entscheidungen des Teams auf dem Weg.

Garrmark
quelle
0

Das Wichtigste ist, dass der Scrum-Prozess für Sie nützlich ist. Ich meine, wenn deine Arbeit besser wird, nimm sie einfach. Aber Sie werden es nie erfahren, wenn Sie es nicht versuchen.

Ein weiterer Punkt ist, dass es nicht erforderlich ist, den Scrum-Prozess nach dem Buch durchzuführen. Nehmen Sie einfach Dinge, die für Sie funktionieren. Unser Team hat zum Beispiel kein Scrum Board. Weil wir es nicht brauchen.

Beim Design sollten Sie versuchen, das Design so zu gestalten, dass zukünftige Änderungen nicht viel Zeit in Anspruch nehmen. Ihr System muss robust sein.

Gregory Nozik
quelle