Я не совсем согласен с ответом maple_shaft, но в комментарии не хватило места, чтобы сказать весь мой бит! ;-)
Я согласен, что каждый разработчик может и должен быть архитектором, но это не означает, что каждый разработчик должен нести ответственность за архитектуру всего продукта или системы. Кроме того, я не думаю, что вы можете рисовать каждую архитектурную команду одинаково широкой кистью, и если все сделано правильно, архитектурные команды могут принести большую пользу всему процессу разработки продукта. Заблуждение заключается в том, что архитекторы должны диктовать каждый аспект проектирования системы. Вместо этого им следует сосредоточиться на дизайне более высокого уровня и передать детали реализации своим командам разработчиков. Однако это не означает, что разработчики не должны быть вовлечены в процесс планирования и проектирования с самого начала.
Чем крупнее, модульнее и в конечном итоге сложнее продукт, тем больше вероятность того, что различные части продукта будут обрабатываться разными группами разработчиков. Такие группы не должны понимать систему в целом, если они полностью понимают части системы, за которые они несут ответственность. Часто эти дополнительные группы привлекаются в качестве субподрядчиков для конкретной цели разработки модуля в определенной области технологии, в которой архитекторы или другие группы могут не иметь опыта. Мои собственные особые таланты заключаются в разработке API, и мне еще предстоит увидеть хорошо продуманный API, который был разработан полностью органично, без каких-либо проблем с юзабилити, или это не требовало, чтобы кто-то выделялся в качестве человека, который обеспечивал однородность между различными аспектами API. Я могу продолжить перечислять много примеров и причин, но я не думаю, что такого рода ситуации являются башней из слоновой кости, о которой многие могут подумать. К сожалению, есть много мест, особенно в сферах обороны, медицины и финансов, где корпоративная паранойя приводит к плохо заданным и еще более плохо управляемым разработкам продуктов, которые, я уверен, больше всего беспокоит maple_shaft. Это то, что, как мне кажется, дает архитекторам немного заслуженное дурное имя (вообще говоря). К сожалению, есть много мест, особенно в сферах обороны, медицины и финансов, где корпоративная паранойя приводит к плохо заданным и еще более плохо управляемым разработкам продуктов, которые, я уверен, больше всего беспокоит maple_shaft. Это то, что, как мне кажется, дает архитекторам немного заслуженное дурное имя (вообще говоря). К сожалению, есть много мест, особенно в сферах обороны, медицины и финансов, где корпоративная паранойя приводит к плохо заданным и еще более плохо управляемым разработкам продуктов, которые, я уверен, больше всего беспокоит maple_shaft. Это то, что, как мне кажется, дает архитекторам немного заслуженное дурное имя (вообще говоря).
Так где же середина, которую искал ОП? Ответ на этот вопрос связан с открытием каналов связи. Архитекторы должны передать спецификации, которые описывают их проекты достаточно подробно, чтобы команды разработчиков понимали, где находятся границы. Истории и тематические сценарии в широком смысле, где все считается черным ящиком. Затем архитекторам необходимо убедиться, что у команд есть время архитектора для подтверждения любых предположений, а также чтобы получить ответы на любые вопросы о спецификациях, которые кажутся слишком широкими или неясными. После этого нужно убедиться, что отдельные команды осведомлены о том, над чем работают другие команды, и что они знают, с кем связываться с другими командами, чтобы каждая часть системы хорошо играла с другими частями. Эти команды встречаются друг с другом напрямую. После того, как система была разработана на самом широком уровне, архитекторы должны стать теми людьми, к которым обращаются команды, когда им нужна проверка работоспособности, и обеспечить поддержание «видения» продукта. Они также должны принять во внимание любой требуемый процесс интеграции и обеспечить столь необходимое «воздушное прикрытие» для команд разработчиков из менеджеров, клиентов и любых других заинтересованных сторон, в то же время гарантируя, что все эти разные люди могут собраться вместе, чтобы работать между им, как все должно работать.
IMHO архитекторы должны быть в первую очередь фасилитаторами и коммуникаторами, а дизайнеры - вторыми. Что касается уровня спецификации? Я думаю, что лучшие архитекторы - это те, кто спрашивает свои команды об уровне детализации, которого хочет команда, и между ними находят баланс, который работает. У разных команд могут быть разные требования в отношении количества необходимой документации или направления. Старшие команды могут найти примерно нарисованную диаграмму, и для начала может быть достаточно быстрого чата, в то время как командам, заполненным относительно младшими разработчиками, может потребоваться немного больше, чтобы заставить их работать. Прежде всего, архитектор должен побудить разработчиков проявить свои собственные дизайнерские таланты, чтобы получить наилучший конечный результат от каждой команды.