Что делают успешные архитекторы программного обеспечения

Меня никогда не волновала должность архитектора программного обеспечения, прежде всего потому, что я думал, что это всегда было частью моей работы с тех пор, как я начал писать код.

Я проектирую, архитектор, кодирую, отлаживаю, тестирую, развертываю.

Оглядываясь вокруг, я не вижу много вакансий для отладчика программного обеспечения?

Мой опыт работы в роли архитектора программного обеспечения в ряде небольших и крупных проектов был в лучшем случае смешанным, где он варьировался от выполнения только архитектуры и дизайна (без кодирования) и/или выполнения всех недостающих функций. работа в команде, ПОТОМУ ЧТО все, что я делал, было архитектурой и дизайном, поэтому, как только все было спроектировано, у меня должно было быть много времени, верно?

Расширяя название, есть множество различных префиксов, которые имеют значительный вес, где бы вы ни работали, — Enterprise, Chief, Solution, Product и т. д., и т. д. С этими добавленными префиксами возникает вопрос, что Software Architect может и делает больше, чем просто архитектор.

Я всегда чувствовал, что существуют некоторые неправильные представления об этой роли и о том, что великие архитекторы программного обеспечения делают в этой роли, что действительно определяет ее успех.

Архитектор кодирования

В любой из ролей, которые я выполнял в архитектуре программного обеспечения, я всегда называл себя архитектором кода — в первую очередь потому, что нет лучшего чувства, чем претворить в жизнь план, который вы придумали, и доказать его.

Должны ли мы расширять наши услуги?

Сделал ли этот шаблон то, что обещал?

Насколько далеко мы отклонились от наших первоначальных идей?

Как строительство дома, это сплошные чертежи, коробки и пунктирные линии, пока вы не войдете туда, не запачкаете руки и не поймете, что это нечто большее. Вы осознаете ограничения API, видите, как масштабируется ваше решение, и понимаете, что работает, а что нет.

Это доказательство в пудинге, и это то, что значительно помогает последующим проектам Архитектора.

Вы учитесь, делая, а не получая обратную связь о том, как все прошло.

Это еще не все

В недавнем проекте, в котором я участвовал, все, что им было нужно, это красивые картинки, которые могли бы показать, насколько отличным будет приложение. Им нужно было тактильное доказательство того, что они создают «корпоративное» приложение с какой-то привлекательной рыночной архитектурой для продажи клиенту.

Я не мог этого сделать.

Дизайн ради дизайна, а не ради самого продукта. Мы отступили и дали им некоторые концептуальные элементы высокого уровня, а затем работали над компонентами более низкого уровня с командой разработчиков, над вещами, которые имели значение — сервисами, каналами связи, тем, что происходит с данными в пути, какие протоколы безопасности должны быть защищены. быть поставлен на место. Все эти концепции были выброшены на этом этапе.

И все они имели значение.

Я хотел снова и снова расклеивать их по доске и говорить «готово», но этого было недостаточно — мне нужно было брать значки, цветовые схемы и шрифты, чтобы они выглядели красиво, — и именно здесь я потерял интерес к роли. .

Он стал больше о том, как он выглядел, и меньше о том, что это было.

Я люблю архитектуру программного обеспечения на командном уровне, когда мы все находимся в одной комнате, передаем маркеры, записываем идеи и делаем то, что мы создаем, гораздо более масштабируемым, надежным, производительным и безопасным. Все остальные диаграммы могут подождать еще день (посижу и подожду, все в порядке).

Как архитектору, мне нравится видеть беспорядочные картинки, потому что именно за ними я хочу следить, именно они показывают суть того, что мы строим, и их никто не может просмотреть.

Сообщите о реализации

Мы думаем об архитектуре программного обеспечения как о чисто технической реализации своей роли — никакого управления людьми, никаких встреч с людьми, только вы, дизайнер и немного кода. Но это далеко не так, как архитектор, вы все время находитесь в пути, делитесь своим видением, доносите информацию, объясняете людям, почему вы приняли решения и каково их влияние, а затем следите за тем, чтобы они приверженность этому видению и следование ему.

У вас может не быть непосредственной команды, но к вам все время приходит множество непрямых людей, чтобы получить рекомендации по реализации, что делать дальше и что им нужно от вас. И это не все легкие разговоры, они требуют времени.

Хорошие архитекторы знают, что нужно, чтобы продать свое видение и заставить людей поверить в него. Они знают API и могут распределять между техническими и концептуальными аспектами, чтобы заинтересованные стороны и пользователи были уверены в том, что они получают.

Если вам нужен кто-то в этой должности в вашей команде, сфокусированный на дизайне, сфокусированный на общей картине либо на уровне решения, либо на уровне предприятия, я полагаю, что у вас есть ряд движущихся частей в вашей системе, которые необходимы и жизненно важны для вашей работы.

Но если вам нужна эта роль, не забивайте их другими вещами, убедитесь, что они могут разговаривать с людьми, напомните им, что дело не только в картинках и искусстве возможного, и что то, что они делают, также должно быть укоренено в практично, сегодня, так, как нужно.

Архитекторы кода, общаются с командой на всех уровнях и сосредоточены на том, что делается сейчас, не продавая изображения, это те архитекторы, которых вы хотите видеть в своей команде, и это то, что делают успешные архитекторы.

Хотите еще? Ознакомьтесь с моей книгой Code Your Way Up — она доступна в электронной или мягкой обложке на Amazon (Канада и США). Подпишитесь на нас в Твиттере @Codeyourwayup и узнайте больше о наших программах Software Leadership здесь.