| November 2, 2023
Каждый разработчик на своём карьерном пути, по достижении определённого этапа, аки богатырь из сказок, встаёт перед развилкой. До этого момента, было всё просто - рост от junior, через middle, до senior разработчика. А дальше? А дальше, перед разработчиком открываются широкие карьерные перспективы.
И если с тимлидом и техлидом всё более-менее понятно, то, что насчёт роли Архитектора? Тут не всё так однозначно.
Кто такой Архитектор?
Архитектор - это роль или должность, в обязанности которой входит построение, развитие и поддержка архитектуры организации или системы, с учётом требований бизнеса. Если проще - это человек, который понимает как построить систему, которая будет соответствовать бизнес-требованиям и решать задачи бизнеса. То есть, архитектор, он буквально живёт на стыке двух миров - бизнеса и инженерии. Он свободно переводит язык бизнеса на язык инженеров и наоборот.
Архитектор обладает широкой технической эрудицией, является профессионалом в одном или нескольких направлениях. Например, является экспертом в построении backend-компонентов и в облачных вычислениях, но так же хорошо понимает принципы построения frontend-компонентов.
Главной особенностью архитектора является компоненто-ориентированное мышление [1], когда любая архитектура воспринимается как карта компонентов и их связей.
Архитекторы бывают разные. Их разделяют на разные типы, коих довольно много.
Типы архитекторов
Если открыть самый популярный сайт для поиска вакансий в России и набрать “архитектор” в строке поиска, можно наткнуться на следующие виды архитекторов:
- software architect
- data architect
- solution architect
- enterprise architect
При этом требования в описании их вакансий будут разниться. Давайте попробуем разобраться, чем отличаются эти роли друг от друга.
Software architect
Почти всегда, разработчик по достижению определённого опыта работы начинает частично исполнять роль Архитектора ПО или архитектора приложения. Дело в том, что в зону ответственности архитектора такого типа входит архитектура конкретного компонента. Компонентом может быть, например, один микросервис, очередь сообщений и т.д. Архитектор ПО всё ещё тесно связан непосредственно с программированием и может создать новое приложение с нуля. Человек в этой роли так же зачастую должен знать и уметь применять шаблоны проектирования, различные архитектурные подходы (clean architecture, hexagonal, layered, package-by-feature, package-by-layer и так далее), уметь проектировать API компонента.
Data architect
Сфера машинного обучения в наши дни развивается крайне быстро. Не секрет, что для качественного машинного обучения требуются огромные массивы, качественных, подготовленных данных. Архитектор данных занимается тем, что проектирует и выстраивает работы с массивами данных. Именно им принимаются решения о том, где и как следует хранить данные, как их преобразовывать и как выглядит конвейер работы с данными целиком.
Архитекторы данных работают с такими технологиями, как Hadoop, Spark, умеют выстраивать ETL системы и так далее.
Solution architect
Архитектор решений работает на уровень выше предыдущих. Именно архитектор решений выстраивает архитектуру всей IT-системы компании. Именно он обсуждает и оценивает запросы бизнеса и предлагает системы и сервисы, которые могут эти запросы удовлетворить. Именно на этой позиции вчерашний разработчик начинает понимать, что значительную роль в успехе на этой позиции можно добиться только с развитыми soft-скиллами.
Архитектор решений всё ещё довольно близок к коду и инженерии в целом. Может являться даже действующим разработчиком, но сама разработка уже не занимает 100% его времени.
Чем занимается архитектор решений? В сферу его основных обязанностей входят такие вещи как:
- идентификация требований и поиск заинтересованных лиц (stakeholder’ов)
- выделение предметных областей бизнеса для выделения архитектурных компонентов с помощью domain storytelling, event storming, DDD
- разработка и документация архитектуры решения с помощью ADR, ArchiMate, C4, UML и так далее
Enterprise architect
Архитектор предприятия работает ещё на уровень выше. Главная задача специалиста в этой роли заключается в проектировании и поддержке такой IT-архитектуры, которая будет точно отражать структуру и бизнес-цели организации. Говоря простым языком - он отвечает за связь бизнес-архитектуры (организационная структура, бизнес процессы) и IT-архитектуры (компоненты, инфраструктура).
Чем занимается архитектор предприятия?
- проектирует IT-архитектуру предприятия, используя современные архитектурные фреймворки. Например, TOGAF
- планирует и поддерживает изменения архитектуры предприятия
Где научиться навыкам архитектора
Всё зависит от типа архитектора. Software architect и Data architect, на мой взгляд, должны получить значительную часть опыта именно из профессиональной деятельности в качестве инженеров в своих областях и научиться мыслить шире. Смотреть на привычные вещи и решения с точки зрения компромиссов - что хорошо и что плохо в каждом принятом решении, чем это чревато в будущем и так далее. Этот опыт можно только наработать.
Роль Solution architect, так же подразумевает огромный пласт опыта в качестве инженера. Прекрасно подходят T-shape профессионалы, ещё лучше M-shape. Однако, помимо hard-скиллов инженера потребуются развитие soft-скиллов и сдвиг в образе мышления на более широкий компоненто-ориентированный взгляд, а также развитие навыков документирования архитектуры. Крупные корпорации обычно предлагают внутрикорпоративные тренинги для желающих. В онлайн университетах так же можно найти различные курсы на эту тему. Однако, со своей стороны порекомендую отличную подборку книг Нила Форда, известного архитектора, на русском языке [2].
Enterprise architect подразумевает широкие познания как в области IT, так и в бизнесе самой организации. И, на мой взгляд, самые эффективные архитекторы такого плана растут внутри организации. Однако, на просторах интернета есть онлайн курсы, которые помогут стать корпоративным архитектором:
В заключение
Разобраться в том, какой тип архитектора чем занимается не очень тривиальная задача. Хотя бы взять во внимание разброс требований в описаниях вакансий на одни и те же позиции. Я надеюсь в этой статье, у меня получилось рассказать о профессии архитектора в IT, а также описать вертикаль роста для разработчика.