Ich arbeite seit 18 Monaten als Programmierer an einem Projekt für generische Software für Tankstellen (die für viele Kunden neu verteilt werden sollen). Das Projekt ist groß. Heute haben wir rund 150 Tische. Wir haben keinen bestimmten Ansatz verwendet, er wurde nicht gut verwaltet.
Die Personentabelle hat heute ungefähr 70 Spalten, aber vor 15 Monaten hatte sie ungefähr 30 Spalten. Diese neuen Felder entstanden, um sich in andere Module wie Vertrieb, Finanzen und Buchhaltung zu integrieren. Auch viele Felder wurden erstellt und dann gelöscht.
Infolgedessen hatten wir viele Umgestaltungen und Überarbeitungen. Das Projekt wird nie fertig, weil immer neue Anforderungen auftauchen.
Hier ist mein Zweifel: Wenn wir einen üblichen Spezifikationsansatz verwendet hätten, hätten wir Interviews, ein Anforderungsdokument, Aktivitäts-, Sequenz- und Klassendiagramme, sodass wir von Anfang an wissen würden, dass die "Person" -Tabelle 70 Felder benötigen würde, dann würden wir hatte viel Refactoring vermieden.
Könnte Scrum bei diesem Projekt helfen? Ich habe das Gefühl, dass Scrum in diesem Fall auch viel Refactoring erfordern würde.
Ich bin nur ein Programmierer, kein Projektmanager. Ich frage mich, wie es hätte gemacht werden sollen: mit Scrum oder mit großem Design vorne.
Bearbeiten
Nur um das Ende dieser Geschichte zu ergänzen. Acht Monate später stellte ich diese Frage, nachdem das Projekt bei einigen "Testkostümen" in Produktion gegangen war, scheiterte das Projekt offiziell. Der Product Owner hat beschlossen, das Projekt abzubrechen. Es wurde schwierig, Probleme zu beheben, und es traten viele Leistungsprobleme auf.
quelle
Antworten:
Es sieht so aus, als hätten Sie sich in einem unkontrollierten Entwicklungsprozess durchgesetzt, um ein nie endendes Entwicklungssystem zu schaffen. Dies tritt auch in agilen Systemen auf.
Das Hauptproblem ist ein Mangel an Anforderungen, und obwohl Ihre Lösung darin zu bestehen scheint, eine agile Methode zu verwenden, um dies zu beheben (da Agile auf sich ändernde Anforderungen ausgelegt ist), würde es das Problem nicht lösen.
Selbst agile Methoden erfordern einen ziemlich festen Ausgangspunkt. Sie reagieren gut auf sich ändernde Anforderungen, sind jedoch genauso nutzlos wie jede andere Methode, wenn Sie ohne Anforderungen beginnen. Sie müssen noch einen Plan haben, auf den Sie zusteuern, bevor Sie beginnen. Agile hilft, wenn dieses Ziel verschoben wird. Es hilft Ihnen nicht, dieses Ziel zu definieren.
Nun ist es wahr, dass ein festes Design im Voraus zu starr ist, wenn Sie nicht genau wissen, was Sie bauen.
Ich denke, Sie müssen von Ihrer derzeitigen "Chaos" -Methode zu etwas Organisierterem übergehen und eine angemessene Menge an Design und Planung implementieren. Sie können versuchen, dies auf einmal mit einer umfangreichen Methodik zu tun, oder Sie können mit einer agilen Methode flexibler sein. Was Sie nicht tun können, ist zu erwarten, dass eine Methodik Ihren Mangel an anfänglicher Planung behebt.
Kanban klingt übrigens besser für Ihre Bedürfnisse. Scrum funktioniert am besten mit kleinen Teams und Projekten. Kanban kann mit größeren Projekten arbeiten, funktioniert aber auch mit einem Durchsatz-Arbeitsansatz, sodass Designänderungen kontinuierlich sind und nicht in Sprints aufgeteilt werden. Ich denke, damit hätten Sie mehr Erfolg.
quelle
18 Monate, 150 Tische und noch nicht in Produktion? Klingt für mich nach einem Todesmarsch . Die einzige Möglichkeit, dies zu beheben, wenn die Möglichkeit besteht, dies jetzt zu speichern, besteht darin, den Umfang Ihres Projekts drastisch einzuschränken - zumindest für Ihre erste Produktionsversion. Was Sie brauchen, ist eine ordnungsgemäße Release-Planung, kleine, erreichbare Ziele und die schnellstmögliche Bereitstellung des Systems für den Endbenutzer.
Und wenn Sie Ihr erstes Release in der Produktion haben und nur ein Zehntel der Anforderungen implementiert ist, müssen Sie es Schritt für Schritt um den nächsten Anforderungsblock erweitern, was zu "Refactoring" führt. Sie erhalten auch Feedback, was Bugfixing und geänderte Anforderungen bedeutet, was ebenfalls zu Refactoring führt.
Nun zu Ihrer Frage - wird Scrum helfen? Vielleicht, vielleicht nicht. Scrum ist ein Tool, das die iterative Entwicklung und Änderung von Anforderungen unterstützt und sich zuerst auf die wichtigen Dinge konzentriert. Andere "agile" Methoden tun dies ebenfalls, und ein nicht so formalisierter Prozess könnte dies ebenfalls handhaben. Aber solange Sie versuchen, ein Monster wie dieses in einem "Urknall" in Produktion zu bringen, spielt es keine Rolle, ob Sie "agile" oder "im Voraus" entwickeln, beide werden scheitern.
Bevor Sie also an Scrum denken, überdenken Sie zuerst Ihre Ziele und Ihre Release-Strategie und prüfen Sie dann, ob Scrum das richtige Tool dafür ist, und nicht umgekehrt.
quelle
Wenn Sie Anforderungen nicht verwalten können und keine Mitarbeiter in der Lage sind, Anforderungen ordnungsgemäß umzusetzen, hilft Ihnen SCRUM nicht (viel), und das scheint das eigentliche Problem zu sein, mit dem Sie konfrontiert sind.
SCRUM kann Ihnen helfen, besser mit sich ändernden Anforderungen umzugehen als statischere Projektmanagementsysteme, aber es ist nicht der heilige Gral, der alles auf magische Weise zum Laufen bringt. Wenn Ihre Mitarbeiter nicht an Bord sind, bereit und in der Lage sind, mit SCRUM zu arbeiten, und auch der Rest der Organisation, kann dies die Situation verschlimmern.
Wenn Sie eine Tabelle haben, die so stark gewachsen ist, dass sie in andere Systeme passt, postuliere ich, dass Ihr Datenbankdesign zum Beispiel ernsthaft fehlerhaft ist. Keine Menge SCRUM wird Ihr Datenbankdesign verbessern, ohne dass Sie Personen einbeziehen, die gut im Datenbankdesign in Ihrem Team sind und keine Angst vor diesen Designänderungen und den Änderungen haben, die sie für den Rest Ihres Systems verursachen.
quelle
Bitte beachten Sie, dass ich beim Schreiben dieser Antwort nicht bemerkt habe, dass das System noch nicht in Produktion ist.
So wie Sie Ihr Produkt beschreiben, glaube ich nicht, dass Ihr unmittelbares Problem darin besteht, Anforderungen zu verwalten oder Ihren Entwicklungsprozess. Es ist das Ihrer Systemarchitektur.
Sie haben es geschafft, einen Monolithen zu schaffen - und zwar einen ziemlich großen. 150 Tabellen sind viel für ein System *. Insbesondere erwähnen Sie, dass Sie in den letzten 15 Monaten 40 neue Felder nur für die Integration in externe Systeme haben. Ich würde ernsthaft in Betracht ziehen, Ihr System in mehrere autonome Dienste aufzuteilen, wahrscheinlich beginnend mit Diensten zur Integration in externe Systeme - aber später separate Geschäftsbereiche zu identifizieren, die in Ihrem Monolithen implementiert sind, und diese Bedenken dann möglicherweise in separate Dienste aufzuteilen.
Wenn Sie es schaffen, diesen Monolithen in separate wartbare Codebasen aufzuteilen, können Sie Ihre Entwickler auch in kleinere Teams mit genau definierten Verantwortlichkeiten in bestimmten Bereichen Ihres Unternehmens aufteilen, und Sie können viele kleinere agile Teams haben, die ihre eigene Codebasis verwalten. anstatt alle in derselben Codebasis zu hacken.
Es gibt viele Antworten darauf, warum Sie zu einer solchen Architektur gekommen sind, der Hauptursache für Ihr Problem. Vielleicht liegt es an Ihrem Entwicklungsprozess, vielleicht haben alle Ihre Entwickler nur Erfahrung mit transaktionskonsistenter Software, oder vielleicht ist es eine Folge der Struktur Ihrer Organisation (Sie sind das Opfer von Conways Gesetz ). Ich denke, es besteht eine gute Chance, dass es sich um eine Kombination der beiden letzteren handelt.
Ich denke nicht, dass die Implementierung von Scrum oder die bessere Verwaltung von Anforderungen zur Lösung Ihres unmittelbaren Problems oder der Hauptursache beitragen wird. Passen Sie die Architektur an die Komplexität Ihres Systems an und beheben Sie die Hauptursache dafür, warum Sie ein solches System erstellt haben.
* Einige werden wahrscheinlich argumentieren, dass sie ein System mit 150 Tabellen verwalten können - oder sie haben viel größere Systeme gewartet, aber ich glaube, dass die meisten Entwickler dies als eine große Anzahl von Tabellen für ein System betrachten werden.
quelle