Umgang mit architektonischen Problemen auf der ganzen Linie

Was tun Sie, wenn Sie X Monate in ein Projekt investieren, das Scrum verwendet, und entweder eine Geschichte, ein Entwickler, ein Review oder eine Planungssitzung deutlich machen, dass ein schwerwiegendes Architekturproblem offensichtlich ist, das zu Beginn des Projekts nicht offensichtlich war? ? Ignorieren, warum es so ist, wessen Schuld es ist oder warum die aktuelle Architektur gewählt wurde.

Die Frage „wer ist schuld“ ist keine produktive Frage. Es ist besser herauszufinden, wie Sie jetzt effektiv vorankommen und wie Sie dies in Zukunft vermeiden können.
Ich habe dies bereits in einer anderen Antwort angesprochen: Ich sage ausdrücklich, zu ignorieren, wessen Schuld es ist, warum es so ist oder warum die Architektur gewählt wurde. Das ist buchstäblich der letzte Satz im Beitrag.

Antworten (3)

Derzeit arbeite ich nicht täglich in Agile oder Scrum, das mag naiv klingen, aber könnten Sie nicht versuchen, das Architekturproblem in eine Geschichte zu verwandeln? Support-Teams, DBAs und zukünftige Entwicklerteams können als „Benutzer“ bezeichnet werden und Ansichten zu Benutzerfreundlichkeit, Skalierbarkeit, DR/BC usw. haben, und Sie können sie in den gleichen Bewertungsprozess wie jede andere User Story einbeziehen.

Das ist auch mein Gefühl. Ich denke, es hängt von der Schwere ab, ob die Lösung verworfen wird oder ein umfassendes Refactoring inkrementell stattfinden kann. Ich habe vergessen, wo, aber ich habe gelesen, wie man Wrapper-APIs um Funktionseinheiten herum baut, um sie abzuschotten und eine Art umfassenden Ersatz zu ermöglichen. Dies gehört natürlich dazu, eine monolithische Lösung in Microservices zu zerlegen. Glücklicherweise ist mir dieser Raum nicht völlig fremd, da ich schon einmal an einem Projekt beteiligt war, das das getan hat, und es funktioniert.

Kurze Antwort

Dies mag wie eine offensichtliche oder zu einfache Antwort erscheinen, aber normalerweise ist die richtige Antwort, es anzusprechen, sobald Sie es sehen. Einfach ausgedrückt, ist es in der Regel besser, das Problem jetzt zu beheben, als ein paar weitere Funktionen auf einer fehlerhaften Architektur aufzubauen, bevor Sie es beheben.

Seien Sie auch offen für die Idee, dass Sie einige Teile möglicherweise sofort reparieren müssen, um zu verhindern, dass zusätzliche Arbeit das Problem verschlimmert, während andere Teile möglicherweise weniger dringend sind. Das kann dazu beitragen, dass der Refactoring-Aufwand etwas weniger umfangreich ist.

PBI ist keine User Stories

Scrum verlangt keine User Stories. Die Idee, dass jedes Backlog-Element eine User Story sein kann, ist eine nette akademische Übung, aber hängen Sie sich nicht daran auf. Geben Sie die erforderlichen Product-Backlog-Elemente ein, um Ihre Architektur zu korrigieren.

Was die Erzeugung eines wertvollen Inkrements betrifft, so gibt es einen Benutzerwert, wenn die Architektur wirklich problematisch ist. Vielleicht kommt es nach 100 gleichzeitigen Benutzern zu einem Deadlock, oder Sie erhalten Daten, die zwischen Sitzungen gemischt werden, oder vielleicht ist das technische Problem ausschließlich codebezogen und Ihre Fähigkeit, in Zukunft Korrekturen und vom Benutzer angeforderte Funktionen zu entwickeln, wird behindert. In jedem Fall liegt in diesem Inkrement ein Wert.

Verwenden Sie Einschränkungen

Es ist schwierig, von Anfang an die perfekte Architektur zu finden. Jahrzehntelange Softwareentwicklung hat uns das gelehrt. Verwenden Sie architektonische Einschränkungen, um Ihre Architektur "in Grenzen" zu halten und Sie zu warnen, wenn Sie zu weit abdriften. Progressive Web-Apps bieten ein großartiges Beispiel für architektonische Einschränkungen. Einige dieser Regeln beinhalten:

  • Die App muss offline funktionieren
  • Die App muss auf allen Browsern funktionieren
  • Die App-Struktur sollte Inhalte laden und ausfüllen

Diese lockeren Regeln ermöglichen es dem Team, bessere architektonische Entscheidungen zu treffen, ohne dass eine Architektur von Anfang an in Stein gemeißelt werden muss.

Dies wird Ihre Situation natürlich nicht vollständig verhindern, aber wenn es eintritt, können normalerweise eine oder mehrere Einschränkungen daraus hervorgehen, um die Dinge wieder auf Kurs zu bringen.

"Scrum verlangt keine User Stories." Ich akzeptiere das zwar (obwohl die reflexartige Reaktion das Gegenteil ist!), aber es erfordert Geschichten, die INVEST-kompatibel sind – dass jede Geschichte wertvoll ist (wie Sie auch sagen). Dies wird oft von agilen Trainern, Führungskräften und Scrum-Mastern einstudiert als Lebensmaxime. Dies macht es schwer zu vereinbaren, wie sehr nicht benutzerorientierte Arbeit angesehen oder beschrieben werden sollte, wenn die Autoren der Geschichte auf diese Weise indoktriniert wurden. auch bekannt als: pm.stackexchange.com/questions/22214/cant-do-vertical
In Bill Wakes Originalartikel über INVEST drückt er es wirklich gut aus. „Entwickler mögen (berechtigte) Bedenken haben, aber diese sind so formuliert, dass der Kunde sie als wichtig wahrnimmt.“ Warum sollte sich der Kunde also für diese architektonische Änderung interessieren? Weil sie möglicherweise der Benutzer sind, dessen Kontoinformationen einem anderen Benutzer angezeigt werden. xp123.com/articles/invest-in-good-stories-and-smart-tasks Ich persönlich liebe User Stories und verwende sie fast ausschließlich, aber die Leute sollten nicht an dem Format hängen bleiben, wenn sie den Wert anders ausdrücken können.

Bei Scrum ist, wie bei den meisten agilen Entwicklungsansätzen, das gesamte Team verantwortlich.

Das ist das 11. Prinzip des Agilen Manifests:

Die besten Architekturen, Anforderungen und Designs entstehen in sich selbst organisierenden Teams.

Ich muss also darauf hinweisen, dass es sehr wahrscheinlich ist, dass sich dasselbe Problem in einem viel späteren Stadium (zeitlich) in einem BDUF-Ansatz gezeigt hätte. Anstatt einer Einzelperson die Schuld zu geben, wird das Team zumindest jetzt das Problem anerkennen, es beheben, daraus lernen und weitermachen.

Obwohl ich mit dem, was Sie sagen, vollkommen einverstanden bin - und Ihnen für Ihre Antwort danke -, denke ich nicht, dass dies die Frage beantwortet; Wie soll so ein Problem gelöst werden?
Sie haben gefragt, wessen Fehler es war, nicht, wie Sie das Problem lösen können :)? Trotzdem glaube ich, dass ich auch diese Frage beantwortet habe; dh "das Team wird das Problem besitzen, es beheben, daraus lernen und weitermachen". Also ja, überlassen Sie es dem Entwicklungsteam, es herauszufinden. Wenn Sie verhindern möchten, dass dies jemals wieder passiert, kann dies durch nichts garantiert werden, aber ich fand es hilfreich, einige erfahrene Entwickler in meinem Team zu haben, die andere verwenden und trainieren, um gute technische Praktiken anzuwenden. Fortgeschrittenere Teams haben oft eine ausgereifte „Definition of Done“ für alle User Stories, die die vereinbarten Praktiken verkörpern.
Entschuldigung, aber Sie liegen falsch mit meiner Frage ... "Was tun Sie, wenn ...", "Ignorieren, warum es so ist, wessen Fehler es ist oder der Grund, warum die aktuelle Architektur gewählt wurde." Ich würde nicht fragen, wessen Schuld es ist. Ich stimme den DoD- und Mentoring-Ansätzen sehr zu.
Fair genug, mein Fehler :).