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?
Antworten:
Ja.
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 für eine schreckliche erste Iteration.
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.
quelle
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.
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?
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)
quelle
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.
quelle
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
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.
quelle
Bei Agile geht es um mehr Produktivität und Flexibilität . Warum schreiben Sie Ihre Bewerbungen neu? Gründe könnten sein:
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.
quelle
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 .
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.
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.
quelle
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.
quelle
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.
quelle