Ich arbeite mit einer Codebasis, die mehr als 500 KB Codezeilen umfasst. Es muss dringend umgestaltet werden. Es wurden Refactoring-Bemühungen identifiziert, die länger dauern als der normale zweiwöchige Sprint. Diese können nicht in kleinere Aufgaben unterteilt werden, wie ich in anderen Antworten auf dieser Site gesehen habe. Das Produkt muss am Ende der Iteration funktionieren, und eine teilweise Umgestaltung wird das System in einem unbrauchbaren Zustand belassen, da die Abhängigkeit zwischen den Elementen schrecklich ist. Was wäre der beste Weg, um diese Hürde zu nehmen? Ich erwähne noch einmal, dass es keine Option ist, es in kleinere Teile zu zerlegen, was bereits geschehen ist.
Update: Die Leute brauchen anscheinend eine Erklärung, warum dies nicht in einen zweiwöchigen Sprint passt. Ein Sprint beinhaltet mehr als nur das Schreiben von Code. Wir haben keine Richtlinie ohne Tests. Diese Richtlinie existierte nicht immer und ein großer Teil der Codebasis hat sie nicht. Auch einige unserer Integrationstests sind noch manuelle Tests. Das Problem ist nicht, dass das Refactoring selbst so groß ist. Kleine Änderungen wirken sich auf viele Teile des Systems aus, und wir müssen sicherstellen, dass diese Teile weiterhin ordnungsgemäß funktionieren.
Wir können einen Sprint nicht verschieben oder verlängern, da wir monatliche Hotfixes haben. Daher kann diese Änderung, die sich über einen Sprint hinaus erstreckt, nicht verhindern, dass die andere Arbeit dem Hotfix hinzugefügt wird.
Refactoring vs Redesign: Nur weil unser Entwicklungsprozess nicht effizient genug ist, um dieses Refactoring in einem zweiwöchigen Zyklus durchzuführen, ist eine Umbenennung in Redesign nicht erforderlich. Ich würde gerne glauben, dass wir in Zukunft genau dieselbe Aufgabe in einem zweiwöchigen Zyklus erledigen können, wenn sich unser Prozess verbessert. Der fragliche Code musste sich in sehr langer Zeit nicht ändern und ist ziemlich stabil. Jetzt, da die Richtung des Unternehmens anpassungsfähiger wird, möchten wir, dass dieser Teil der Codebasis genauso anpassungsfähig ist wie der Rest. Welches erfordert Refactoring. Anhand der hier gegebenen Antworten wird deutlich, dass ein Gerüst fehlt, um dieses Refactoring im Zeitrahmen normaler Sprints durchführen zu können.
Antworten:
Ich werde den Branch-and-Merge-Ansatz ausführen, den Corbin March zum ersten Mal vorgeschlagen hat, damit wir mehr über diese Problembereiche erfahren und die fehlenden Tests identifizieren können. Ich denke, wir sollten in Zukunft den Ansatz verfolgen, den Buhb vorgeschlagen hat, die Bereiche zu identifizieren, in denen Tests fehlen, und diese zuerst implementieren und dann das Refactoring durchführen. Dies ermöglicht es uns, unseren normalen zweiwöchigen Sprintzyklus beizubehalten, so wie es viele hier gesagt haben, sollte dies beim Refactoring immer der Fall sein.