Soll ich Scrum für große Projekte verwenden? [geschlossen]

8

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.

Murilo
quelle
8
In Scrum wird davon ausgegangen und akzeptiert, dass Sie nicht alles im Voraus wissen können und dass Sie sowieso viel Refactoring durchführen werden.
Bart van Ingen Schenau
2
Refactoring wird oft als Kernbestandteil eines agilen Prozesses angesehen. Daher ist es wahrscheinlich, dass Scrum zu der gleichen Menge an Refactoring oder mehr geführt hat. Ich nehme an, die Frage ist dann, warum denkst du, dass dies ein Problem ist? Agile versucht zu beheben, dass die Erfassung und das Design von Anforderungen im Voraus fehlerhaft sind und Sie einem Kunden schrittweise einen Mehrwert bieten, um die tatsächlichen Anforderungen zu ermitteln. Wenn Sie einen perfekten Plan im Voraus garantieren könnten, könnten Sie dies wahrscheinlich auf diese Weise tun und dennoch schrittweise einen Mehrwert liefern. Aber wäre diese anfängliche Erfassung der Anforderungen perfekt gewesen?
Robin
3
Ich bin nicht sicher, ob der Titel die Frage widerspiegelt, die Sie stellen.
Gbjbaanb
6
@LightnessRacesinOrbit: Er spricht offensichtlich von einer Art internen Datenbankanwendung mit einem DB-Schema mit 150 Tabellen. Einige Leute scheinen anzunehmen, dass es keine andere Art von Software gibt. Ich empfehle ihnen, Joel Spolskys Fünf Welten zu lesen .
Doc Brown
2
@ Murilo "Einige Änderungen wirken sich auf Dinge aus, die funktionierten." Dies ist ein häufiges und zu erwartendes Problem bei Änderungen an einem Softwaresystem, um dieses Problem zu mindern. Neben der Primärentwicklung können Unit-Tests entwickelt werden, um einen Einblick in die Auswirkungen des Refactorings auf vorhandene Systeme zu erhalten.
YoungJohn

Antworten:

18

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.

gbjbaanb
quelle
Sie haben einige sehr gute Aussagen gemacht. Das ist wirklich ein Chaos. Ich war mir nicht klar genug: Ich möchte es nicht reparieren, weil ich nur ein Entwickler des Projekts bin, daher habe ich jetzt keine Möglichkeit, es zu ändern, aber ich habe mich gefragt, wie es richtig gemacht werden würde. Vielen Dank für Ihre gute Antwort. PS: Wir verwenden hier ein Kanban-Board, um Hilfe zu versuchen.
Murilo
2
Ihre Antwort ist nicht schlecht, aber "Das Grundproblem ist ein Mangel an Anforderungen" ??? Ehrlich gesagt klingt es für mich genau umgekehrt. Das OP hat bereits weit mehr Anforderungen auf dem Tisch, als er ernsthaft verarbeitet und verwaltet.
Doc Brown
@DocBrown Ja, fair genug - kein Mangel an Anforderungen, sondern eine von ordnungsgemäß verwalteten und / oder gestalteten Anforderungen - dh zu viel "mach das einfach" und nicht genug "hier ist deine durchdachte Spezifikation" - was das Refactoring hätte reduzieren sollen sprach über. Vielleicht irre ich mich aber und habe die Frage schlecht interpretiert.
Gbjbaanb
@Murilo Wenn Sie sich meiner Erfahrung nach fragen, wie es richtig gemacht werden soll, hat die Antwort bemerkenswert wenig mit den angewandten Techniken zu tun und alles mit den Leuten, die die Techniken implementieren und das Projekt verwalten.
Cort Ammon
2
"Agilität hilft, wenn dieses Ziel verschoben wird. Es hilft Ihnen nicht, dieses Ziel zu definieren." : Dies ist eine hervorragende Zusammenfassung von Agilität:
Bryan Oakley
12

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.

Doc Brown
quelle
1
Ich würde behaupten, dass "ein Monster wie dieses auf einmal in Produktion bringen" überhaupt nicht agil ist. Da das OP behauptet, Kanban zu verwenden , scheint der Fokus auf ein Produkt mit minimaler Lebensfähigkeit von Anfang an vollständig verloren gegangen zu sein.
@ MichaelT: Ich stimme zu, es ist fraglich, ob eine sogenannte "agile Entwicklung", ohne etwas Nutzbares zu liefern, wirklich als "agil" bezeichnet werden kann:
Doc Brown
Ich stimme dieser Antwort zu. Sie müssen irgendwo anfangen, klein anfangen, Ihren Code veröffentlichen, Feedback erhalten, auf dem Feedback aufbauen, es ist nur ein nie endender Zyklus. Zumindest zu diesem Zeitpunkt haben Sie jemanden, der dieses Tool verwendet.
JonH
1
@MichaelT, wo ich arbeite, sind Projektteams agil, aber die Support-Infrastruktur definitiv nicht. Wir als Team liefern also etwas, das alle paar Wochen verwendet werden kann, aber wir haben bestenfalls alle 3-4 Monate eine Produktionsbereitstellung, was dem Stand entspricht, der zu diesem Zeitpunkt für die Produktion bereit ist. Organisation im Wandel, hoffentlich. Sie haben 3 Monate gebraucht, um uns zum Beispiel einen Testserver zu besorgen. Also haben wir uns bis dahin mit einem Laptop als projektinternem
Testserver zufrieden gegeben
8

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.

jwenting
quelle
2

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.

Pete
quelle
1
Das klingt für mich wie ein technischer Vorschlag für ein organisatorisches Problem - was meiner Erfahrung nach selten funktioniert. Eine Systemarchitektur mit 150 Tabellen für ein einzelnes System kann in Ordnung sein. Probleme treten auf, wenn Sie versuchen, ein solches System in einem "Urknall" zu entwickeln und bereitzustellen.
Doc Brown
@ DocBrown - Ich stimme dir zu. Zu dem Zeitpunkt, als ich diese Antwort schrieb, war nicht klar, dass das Projekt noch nicht in Produktion war. Ich habe dann fälschlicherweise vermutet, dass es war.
Pete