Проектирование это или нет?
Одна из сложностей эволюционного подхода к проектированию состоит в том, что иногда бывает очень сложно сказать, происходит ли проектирование вообще. Смешивая написание кода и проектирование, нельзя забывать о том, что можно писать код и без всякого дизайна - и тогда эволюционное проектирование не работает.
Если вы сами находитесь в команде разработчиков, то сразу почувствуете, на каком уровне находится проектирование - достаточно посмотреть на код. Если он становится с каждым днем все сложнее, если с ним все тяжелее работать, можно говорить об отсутствии или недостаточном качестве дизайна системы. Однако, к сожалению, все это субъективные ощущения. У нас нет никаких официальных метрик, с помощью которых можно было бы определить качество дизайна.
Но если качество дизайна трудно определить даже техническим специалистам, то что же говорить о нетехнической части команды! Если вы, к примеру, менеджер или заказчик, как вам узнать, насколько хорошо была спроектирована система? А знать это вам нужно, потому что плохо спроектированную систему будет гораздо сложнее и дороже изменять в будущем. Однозначного ответа на этот вопрос нет, но что-то посоветовать все-таки можно:
- Прислушивайтесь к тому, что говорят технари. Если они постоянно жалуются, как трудно делать те или иные изменения в системе, отнеситесь к этим жалобам максимально серьезно и дайте им потратить время на решение возникших проблем.
- Обращайте внимание на объем выбрасываемого кода. В любом проекте, где производят рефакторинг, плохой код постоянно удаляется из системы. Если код не удаляется, это можно считать явным признаком отсутствия рефакторинга, что не замедлит привести к деградации дизайна системы. Впрочем, как и любую другую информацию, эти данные можно неправильно интерпретировать. Лучше всего прислушаться к мнению высококлассных технических специалистов, потому что их мнение, пусть даже субъективное, гораздо важнее, чем любая другая метрика.