Хорошо, я сталкивался с этим много раз, но здесь сценарий худшего случая немного преувеличен.
Клиент говорит: «Эй, можешь сделать этот маленький модуль для этой маленькой задачи»?
Я: «Конечно, нет проблем».
Поэтому, основываясь на бюджетах, ограничениях и т. Д., Я пропускаю некоторые из архитектурных решений и погружаюсь в них, чтобы не было пота.
Затем они просят другой модуль. И другой. И некоторые улучшения. И все это происходит очень медленно, с годами. И прежде чем вы это знаете, у вас есть это чудовищное приложение, которое ужасно спроектировано.
Что вы делаете, когда вас просят сделать что-то маленькое? Вы не знаете, будет ли он расти ... если клиент будет продолжать запрашивать дополнения (и они тоже не будут).
Вы не можете переусердствовать в этом, потому что это всего лишь небольшое приложение, и они пойдут куда-то еще, если вы скажете (в этом я знаю весь голос) «Ну, на всякий случай, давайте разберем эту вещь в слои с верхом - безопасность в режиме реального времени и разделение проблем. На самом деле давайте перейдем к инструменту внедрения зависимостей, который действительно сделает эту вещь фантастической, бла-бла-бла ».
Они скажут «да, верно» и пойдут к кому-то еще.
Бюджет, время и восприятие так же важны, как и разработка самого приложения.
Как к этому следует подходить?
Я полагаю, что вопрос сводится к следующему: «Когда у вас нет всей информации для окончательного результата небольшого приложения, как избежать (или смягчить) принятие архитектурных и проектных решений на ранних этапах, которые будут полностью неподходящий позже?