Большинство архитекторов программного обеспечения (включая меня) пришли с техническим образованием. Большинство из них начали свою карьеру в качестве разработчиков или младших инженеров-программистов. Большинство архитекторов программного обеспечения достигли этого звания просто благодаря естественному карьерному росту в организации. Этого достаточно? Разве нам не нужны какие-то особые навыки и знания, чтобы стать архитектором программного обеспечения, кроме того, что большинство извлекает из своего 12–15-летнего опыта разработки или другого соответствующего технического образования.

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

Задавать вопросы

Все дело в умении задавать правильные вопросы. Что будем строить? Зачем мы это строим? Какие компромиссы? Чего на самом деле ждут от того, что мы строим? Какие навыки у команды? На этом уровне мы не должны просто строить то, что нас просили построить. Мы должны копнуть глубже и определить, что нам нужно делать. И самое главное, мы должны выслушать ответы и тщательно их проанализировать. Слушать и анализировать ответы не менее важно, чем задавать правильный вопрос.

Хорошие коммуникативные навыки

Это очевидный навык, которым вы должны обладать. И это более общий характер. Если вы собираетесь нанять разработчика, и если в резюме написано «Хорошие технические навыки», что это значит? Очевидно, они должны обладать хорошими техническими навыками. Но в чем специфика? Коммуникативные навыки тоже такие же. Какая специфика? Хорошие навыки ведения документации для написания документации, такой как документы по дизайну и архитектуре. Хорошие письменные навыки общения с руководством, клиентами и коллегами по электронной почте. Получите конкретные требования от клиентов и т. Д. Это очень широкий спектр навыков. Неважно, являетесь ли вы архитектором программного обеспечения или нет, умение хорошо разговаривать с людьми - очень важный навык, которым вы должны обладать. Разговаривать с компьютером - это не самая сложная часть, но разговаривать с людьми.

Адаптивность

Индустрия программного обеспечения - одна из самых быстро меняющихся отраслей в мире. Новые фреймворки, новые языки, новые архитектурные шаблоны, новые аппаратные стеки и многое другое. Как архитектор, нам нужно очень быстро адаптироваться к этим изменениям. Мы не можем сказать: «Это то, что я знаю, и так я делал это последние 5 лет, и я собираюсь сделать это таким образом!» Нам нужно искать эти новые изменения и адаптироваться к ним. И еще одна важная вещь: вы должны быть очень непредубежденными в этих вещах. Будучи людьми, мы не можем впитывать все новое, что появляется каждый день. Итак, один из ваших младших разработчиков может предложить совершенно новую технологию, с помощью которой вы сможете очень эффективно достичь своей цели. Итак, вы должны суметь правильно оценить его и приспособиться к нему.

Приоритет

Нам, как младшим разработчикам, поручали работу. Очень конкретные, ограниченные по времени, подробные задачи и чаще всего с тегом «вот как вы должны это делать». Но на этом уровне не ждите очень подробных конкретных задач. Но вам поручают целый проект (ы). А когда вы спрашиваете у представителей бизнеса, «какая из этих задач самая важная»? Обычный ответ: «Все!» и нам нужно сделать все к следующему месяцу! Таким образом, этот навык немного сложно освоить, чтобы удовлетворить всех участников проекта.

Технические навыки

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

Масштабирование (навыки)

Лучший способ стать 10-кратным разработчиком - научить как минимум 9 других тому, чему вы научились. Обмен навыками и опытом - очень важный аспект в этой должности. Один из лучших подходов, который вы можете попробовать, - это парное программирование. Многие не станут со мной спорить в этом аспекте, потому что могут сказать, что размещение двух разработчиков на одной машине снизит производительность. Но если вдуматься, мы не выполняем кодирование все время. Все дело в размышлении и поиске решений. Итак, если у вас есть два (или более) мозга с разным набором навыков, это очень поможет этому мыслительному процессу. Еще один способ - это моб-программирование. Чтобы собрать всех в комнату, получить общую клавиатуру и выполнить задание.

Поддержка сообщества

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