Zum Architekten oder nicht zum Architekten
Um Einstein neu zu formulieren: "Die Dinge sollten so einfach wie möglich sein - aber nicht einfacher." Es ist wichtig, die wahre Verwendung einiger Architekturen zu verstehen - und sie sind nicht unbedingt für die individuelle Leistung und oft auch nicht für die Arbeitszufriedenheit.
Manchmal sind Architekturen so kompliziert, weil ein Unternehmensprojekt so groß ist und so viele Menschen arbeiten, dass die Architektur hauptsächlich so vielen Menschen ermöglicht, auf etwas hinzuarbeiten, ohne dass jeder über alle anderen stolpert. Manchmal sind sie kaum mehr als Komplexität, die die individuelle Produktivität verringert und die Arbeit erschwert - aber es einer großen Anzahl von Menschen ermöglicht, zu arbeiten. Dies funktioniert, wenn der zusätzliche Aufwand den individuell verringerten Lebenswillen überwiegt, ähm, ich meine "Produktivität".
Ist das die Situation Ihres Kunden? Nun, wenn ihr Budget für dieses Projekt nicht in Millionenhöhe liegt, vielleicht auch nicht. Wenn es unter 100 km ist, dann mit ziemlicher Sicherheit nicht. Sie bauen einen Betonbunker für einen Kernreaktor, keinen Holzofen :)
Es ist nicht unbedingt falsch, Ihrem Kunden "das Einfachste vorzuschlagen, was möglicherweise funktionieren könnte", wenn die Situation dies erfordert. Es könnte der bestmögliche Weg sein, damit umzugehen. Der einfachste Weg, dies zu sehen, besteht darin, es mit kommerziell erhältlichen / Open-Source-Projekten zu vergleichen, die eine ähnliche Aufgabe erfüllen sollen (dies ist sowieso Ihre Due-Diligence-Marktforschung), und zu sehen, was sie brauchten, um das zu tun, was sie getan haben.
Wenn Sie mit Millionen von Dollar arbeiten, sollten Sie sich natürlich einiger perverser Anreize im Spiel bewusst sein. Kurz gesagt, "Ass Covering": Wenn Sie ein superkomplexes Architektursystem empfehlen, für dessen Verständnis ein Doktortitel erforderlich ist, wer ist dann schuld, wenn es zur Hölle geht? Natürlich nicht Ihre - Sie haben nur die besten hoch entwickelten Technologien vorgeschlagen, von denen jeder sagt, dass sie die besten sind -, aber sie sind "kompliziert" und "schwierig", daher liegt die Schuld bei den Leuten, die versucht haben, sie umzusetzen. Sie müssen einfach nicht klug oder geschickt genug gewesen sein ... mit anderen Worten, es werden viele Ratschläge gegeben, um sicherzustellen, dass Sie nicht schlecht aussehen, wenn Projekte scheitern, was sie zwangsläufig müssen, da nicht alle Projekte erfolgreich sind. Es ist schlechtes Juju, aber es ist eine Tatsache unserer Realität.
Nichteinhaltung
Ich würde vorschlagen, dass das Versäumnis, Tests kontinuierlich zu aktualisieren und Architekturentscheidungen zu verfolgen (Pläne zu werfen, wenn sie sich ändern, anstatt sie zu aktualisieren usw.), der Grund dafür ist, dass so viele Systeme weggeworfen und von Grund auf neu geschrieben oder durch ein neues ersetzt werden. Lösung 'ein paar Jahre später.
Wenn Dinge, die Klarheit und Konsistenz erzwingen, aus Gründen der Zweckmäßigkeit verworfen werden, ist es manchmal leicht zu glauben, dass Sie sehr schlau waren und wirklich "Dinge erledigen", wenn Sie tatsächlich zukünftige Änderungen schwieriger und komplizierter vorgenommen haben. Es ist sehr üblich, von der zukünftigen Produktivität zu stehlen, um sofortige Gewinne zu erzielen. Es ist schlecht, wenn niemand merkt, dass das passiert.
Das Testen ist zum Beispiel besonders gut geeignet, wenn sich Dinge ändern. Sie ändern die Tests, um die neue Richtung widerzuspiegeln, und reparieren dann alle Dinge, die jetzt "kaputt" sind, weil die Leute ihre Meinung geändert haben oder zu der Erkenntnis gekommen sind, dass sie beim letzten Mal etwas verpasst haben. Das ist so, als würde man das Schlafen aufgeben, weil man diese Woche noch viel zu tun hat - das wird die Sache schwieriger machen.
Fazit: "Es kommt darauf an" (hilfreich, nicht wahr?)
Die Komplexität der Architektur ist mit Gemeinkosten verbunden, beispielsweise mit der Anmietung eines größeren Raums für ein stationäres Unternehmen. Es ist nur dann sinnvoll, wenn es eine echte Komplexität gibt, die verwaltet werden muss. Wenn es sich um ein 3-köpfiges Team handelt, das an einer relativ konventionellen Lösung arbeitet, sind einfache MVC und minimale Werkzeuge wahrscheinlich völlig ausreichend.
Wenn es sich um eine komplexe Unternehmenssoftwarelösung mit mehreren Subsystemen handelt, mit einem Budget von Millionen und mindestens einem halben Dutzend Teams von 3 bis 5 Personen? Sie werden um die süße, süße Liebe betteln, die nur Round-Trip-Engineering auf objektorientierter Programmanalyse und all ihren Diagrammen und Diagrammen und Modellen geben kann. Alles, was Ihnen helfen kann, die Dutzende oder Hunderte von Augenpaaren davon abzuhalten, Sie ohne zu blinzeln anzustarren und sich zu fragen, was sie heute tun sollen und wie sie überhaupt etwas tun sollen.