Ok, ich bin schon oft darauf gestoßen, aber hier ist das Worst-Case-Szenario etwas übertrieben.
Ein Kunde sagt: "Hey, können Sie uns dieses kleine Modul für diese kleine Aufgabe machen?"
Ich: "Sicher kein Problem".
Aufgrund von Budgets, Einschränkungen usw. überspringe ich einige der Architekturen und tauche direkt ein, damit es nicht ins Schwitzen kommt.
Dann fragen sie nach einem anderen Modul. Und ein anderer. Und einige Verbesserungen. Und das alles geschieht über Jahre hinweg sehr langsam. Und bevor Sie es wissen, haben Sie diese Monsteranwendung, die schrecklich aufgebaut ist.
Was machst du, wenn du aufgefordert wirst, etwas Kleines zu tun? Sie wissen nicht, ob es weiter wachsen wird ... ob der Kunde weiterhin nach Ergänzungen fragen wird (und sie auch nicht).
Sie können das Ding nicht überarchitekturieren, weil es immerhin nur eine kleine Anwendung ist, und sie werden woanders hingehen, wenn Sie sagen (da ich alle Stimmen kenne): "Nun, nur für den Fall, lassen Sie uns dieses Ding in Schichten mit Top konstruieren -o-the-Line-Sicherheit und Trennung von Bedenken. Lassen Sie uns in der Tat mit einem Tool zur Abhängigkeitsinjektion gehen, das dieses Ding wirklich fantastisch macht. bla bla bla ".
Sie werden "Ja, richtig" sagen und zu jemand anderem gehen.
Budget, Zeit und Wahrnehmung sind ebenso wichtig wie die Architektur der Anwendung selbst.
Wie soll das angegangen werden?
Ich denke, die Frage läuft wirklich darauf hinaus: "Wenn Sie nicht alle Informationen für das Endergebnis einer scheinbar kleinen Anwendung haben, wie können Sie vermeiden (oder abschwächen), frühzeitig architektonische und Designentscheidungen zu treffen, die vollständig sind." später nicht geeignet?