Неправильно? Частично.
«Ваша кодовая база растет постепенно и никогда не имеет большой стадии планирования / иерархического проектирования».
Correct.
«Для меня это говорит о том, что разработка программного обеспечения (хотя и достойная) была включена в рефакторинг…»
Не совсем правильно.
Существует огромная пропасть между Big Design Up Front (BDUF) и более гибким подходом к дизайну.
BDUF требует, чтобы весь дизайн был завершен перед любым кодированием. Это по-прежнему популярно (просто прочитайте RFP вчера, в котором абсолютно необходимо, чтобы заказчик рассмотрел весь дизайн, прежде чем начнется какое-либо кодирование. Вздох).
Agile предполагает, что, возможно, весь дизайн не является полезной целью. Вам нужно сделать достаточно дизайн, чтобы TDD работал. Например, вы не можете запустить TDD, пока у вас не будет работающей инфраструктуры, которая позволяет кому-то писать тесты и постепенно разрабатывать решение, зная, что не будет решена странная проблема с производственным развертыванием.
Дизайн все еще король. Agile Design лучше, чем монолитный дизайн.
Следствием Agile Design являются YAGNI, DRY и Less-is-More. Они не заменяют дизайн, а являются следствием того, как вы расставляете приоритеты и делаете дизайн.
BDD и TDD - это способы структурировать свое время, чтобы вы сосредоточились на том, что нужно людям, что они делают и что действительно важно. TDD, в частности, фокусируется на тестируемом поведении программного обеспечения. Не нюанс с нулевым значением, а реальное поведение.
Преждевременная оптимизация интересна, но не связана. Даже Agile-команды могут пробежать по низкопробному крысиному отверстию, преследуя нюанс или оптимизацию, которая не добавляет никакой ценности. Преждевременная оптимизация - это привычка обдумывать (== «отжимать руки») технологический выбор без фактических данных о реальной производительности.
Agile должен помочь вам сфокусироваться на общей картине: Что на самом деле люди будут делать с настоящим программным обеспечением и избегать дыр в технологиях.
Это не заменяет инженерию. Это перефокусирует это.