Гаразд, я багато разів стикався з цим, але ось гірший сценарій трохи перебільшений.
Клієнт каже: "Ей, чи можете ви змусити нас цей маленький модуль зробити це невелике завдання?"
Я: «Звичайно, немає проблем».
Тож, виходячи з бюджетів та обмежень тощо, я пропускаю частину архітекторів і занурююсь прямо, і це не потіє.
Потім вони запитують інший модуль. І ще. І деякі вдосконалення. І все це відбувається дуже повільно, пам'ятайте про вас, роками. І перш ніж ви це дізнаєтесь, у вас є ця програма-монстр, яка жахливо архітектурна.
Що ви робите, коли вас просять зробити щось маленьке? Ви не знаєте, чи буде він продовжувати зростати ... якщо клієнт буде продовжувати просити доповнення (і не вони).
Ви не можете надмірно архітектувати річ, адже це просто невелика програма, зрештою, і вони підуть кудись інше, якщо ви скажете (тим, що я знаю всім голосом) "Ну на всякий випадок, давайте архітектуємо цю річ у шари з вершиною -о-безпека та роз'єднання проблем. Насправді давайте будемо використовувати інструмент для введення залежності, який справді зробить цю річ фантастичним бла-бла-бла ».
Вони скажуть «так так» і підуть до когось іншого.
Бюджет, час та сприйняття так само важливі, як і архітектура самої програми.
Як слід до цього підходити?
Я думаю, що питання справді зводиться до "Коли у вас немає всієї інформації для остаточного результату того, що видається невеликою програмою, як уникнути (або пом'якшити) прийняття архітектурних та дизайнерських рішень на ранніх стадіях, це буде повністю невідповідні пізніше?