Однако у рядового разработчика вопросов о сути работы «софтварных» архитекторов нередко остается больше, чем ответов:
Чем именно архитектор занимается? Какими навыками должен обладать? Да и как им вообще можно стать?
На наш взгляд, развитие IT-специалиста можно сравнить с классическим мифическим путем героя: победил дракона — стал лидом.
Чтобы узнать, как этот «путь» выглядит в архитектуре ПО, мы пообщались с Анной Мелеховой (AnnaTref), Software Architect & Software Development Group Manager в KasperskyOS — собственной микроядерной операционной системе «Лаборатории Касперского». Мы пройдем путь героя вместе: посмотрим на основные карьерные треки, выявим их особенности и выясним, каких драконов надо победить. Поехали!
Дисклеймер: реальная жизнь (к сожалению) сложнее, чем сюжеты видеоигр, поэтому в статье представлены лишь некоторые возможные треки развития архитектора. Если у вас есть альтернативные истории становления — ждем их в комментариях :)
Подготовка: Choose your fighter
Каждый уважающий себя геймдевер знает, что в начале AAA-игры надо выбрать персонажа, c которым и предстоит «сродниться». В нашем случае перед человеком, решившим посвятить себя архитектуре ПО, стоит выбор между тремя вариантами.
Тимлид — ему прилетают конкретные запросы от продактов: сделать задачу, запилить фичу и так далее. Он хорошо видит свой компонент и понимает его сильные и слабые стороны, легко прокачает перформанс и отобьется от безопасников. Однако его видение ограничено соседними компонентами и бизнес-задачи для него далеки.
Сильные стороны:
- Задел авторитета среди других тимлидов, проджектов и прочих decision maker-ов.
- Сильные хард-скилы.
- Базовое понимание процессов компании.
Слабые стороны:
- Сложности с восприятием цельной картины, где «родной» компонент лишь один из кирпичиков, а прокачать какую-то характеристику нужно для всей системы.
- Незнание архитектурных фреймворков и практик, помноженное на уверенность в своем авторитете, что приводит к «велосипедам».
- Риск при общении с бизнесом увязнуть в технических деталях и ограничениях.
- Свое сильное техническое мнение, которое может мешать услышать альтернативные предложения.
Сениор-разработчик также может попасть в архитекторы напрямую, минуя статус тимлида. К примеру, он занялся задачей улучшения перформанса своего компонента и увидел, что вопрос упирается в соседнюю команду. Но в той команде утверждают, что у них все хорошо, — и тогда сениор пытается взглянуть на проблему целиком и в итоге выясняет, что можно кэшировать запрос где-то на гейтвее и тем самым улучшить ситуацию.
А дальше его начинают привлекать к аналогичным задачам все чаще и чаще. Так постепенно он начинает меньше кодить и принимать больше решений по перформансу, становясь эдаким performance champion.
Сильные стороны:
- Технический бэкграунд — возможность проще и быстрее проверять гипотезы.
- Задел уважения как минимум в своей и соседних командах.
Слабые стороны:
- Возможен недостаток опыта в коммуникации со всей командой.
- Нехватка опыта общения с бизнесом.
- Фрагментарные знания процессов.
- Незнание архитектурных фреймворков.
Менее распространенный вариант — рост с позиции джуниор-архитектора.
В основном речь идет об условном мидле, который внезапно осознал, что кодинг его не особо вдохновляет, — ему гораздо более интересно понимать, как все эти процессы друг с другом взаимодействуют. В то же время этот мидл понимает, что по хард-скилам на классического архитектора он пока не тянет. Тогда вместо хрестоматийного пути (мидл — сениор — [тимлид] — архитектор) он может сразу встать на позицию junior architect.
Сильные стороны:
- Знание архитектурных фреймворков — у мидла может быть больше времени на подтягивание своих архитектурных навыков, и, вероятно, на позицию джун он будет претендовать, уже основательно почитав книги, послушав лекции и поднатаскавшись.
- Слабая техническая база компенсируется развитыми софт-скилами.
- Отсутствие самомнения (не из чего пока :)) — вероятно, будет внимательно слушать, и это может круто помочь.
Слабые стороны:
- Отсутствие задела уважения и репутации в команде.
- Из-за слабого технического бэкграунда собрать цельную картину будет совсем сложно.
- Незнание некоторых процессов в компании потребует больше времени на их изучение.
Для самого спеца это выгоднее тем, что его хард-скилы будут формироваться не от кодинга, а от его опыта решения именно архитектурных задач. Но в то же время от него требуется последовательность и терпение, чтобы прокачать тех. качества и заслужить признание у тимлидов.
Итак, герой выбран — теперь в игру, Ватсон, в игру!
Уровень 1. Копим ману
Что ж, персонаж выбран, самое время выбрать, какую ману ему копить. Но что выбирать, чтобы вырасти максимально быстро — и не прибегнуть при этом к читам и донатам (ибо и осуждаем, и едва ли такое возможно в реальной жизни :))?
● Хард-скилы. Разве может быть архитектор, совершенно не ориентирующийся во «внутренностях» своих решений? Да, большинство «хардов» могут разниться в зависимости от конкретного домена, но в то же время есть несколько универсальных базовых скилов — технологическая насмотренность, умение реализовывать интересные тебе решения на деле, в «коде». Если ты сразу можешь написать и проверить на практике интересную тебе фичу, это экономит много времени для тебя и команды в целом.
Не менее важно понимать типичные operations твоей системы, работать с такими функциями, как rollback, бэкап, переконфигурация и другие.
Архитектурные скилы. В первую очередь это, конечно, знание архитектурных методологий. Ты должен без труда нырять в любой фреймворк — и уметь его использовать.
Важно уметь декомпозировать задачи, разделять их на конкретные и понятные для команды отрезки. Архитектор должен знать, что такое data- и control-flow-системы, и понимать, как выстраивать их между компонентами.
Кроме того, архитектор, в отличие от разработчика, всегда живет в контексте ограничений бизнеса: на каждую вилку бюджета ты должен предоставить свою комплектацию железа — и желательно без лишних обращений к кошельку заказчика :) В каком-то смысле это выдвигает требование к особому складу ума, который вырабатывается кровью и потом — и в итоге формирует целую «библиотеку тактик» на все случаи жизни.
Но как ни странно, значительную часть скилов архитектора составляют «софты»:
● Коммуникация. Нужно уметь общаться и с коллегами на уровне разработки, и с бизнесом на уровне стоимости повышения availability на еще одну девятку в конце.
Не менее важно познать и искусство ведения переговоров. Предположим, архитектор пытается решить проблему взаимодействия между пятью юнитами, у каждого из которых свои представления об интерфейсе. Нашему герою надо не только все их увидеть/вычислить и выбрать оптимальный вариант — ему нужно быть отличным переговорщиком, которому поверят и за которым пойдут. Иначе будет очень сложно договориться о компромиссе.
Или, например, у тебя есть классная идея, которая хорошо ложится в первый, второй, третий модуль. А тимлид из четвертого модуля что-то промычал в ответ. Опытный архитектор понимает, что это мычание, если в нем не разобраться, может привести к тому, что вся идея рассыпется; и ответственным будет именно архитектор — потому что не услышал того самого тимлида.
● Дзен-гармоничность. Чем дольше ты проектируешь, тем яснее понимаешь, что вообще-то решить одну и ту же задачу можно разными способами. Но приняв одно решение, ты потеряешь другое.
Условно, у тебя в голове есть пятьдесят разных возможных решений, но у каждого есть своя цена. Один шаг повысит перформанс, увеличит сложность и дропнет безопасность. На другой вариант придется изрядно раскошеливаться. И так далее. Ты просто выдаешь бизнесу варианты и их стоимость — а дальше сам бизнес решает, что ему важнее: сэкономить или не уронить секьюрити. Тебе же просто остается это спокойно принять.
Уровень 2. Сhoose your destiny
Ура, скилсет сформирован! Теперь – самое время выбрать тип архитектора, c которым ты и будешь проходить игру.
Quality Attribute architect (security architect, performance architect, availability engineer) Это человек, который отвечает за конкретные качества системы. Например, вы всем коллективом строите кузницу и заботитесь о том, чтобы она была построена в заданный срок. Но должен быть и человек, который отвечает за то, что она в принципе пожаробезопасна. И в его KPI не должно быть мыслей о сроках, он думает только о том, что не должно случиться пожара.
Больше всего подойдет для игроков с прокачанными скиллами: коммуникация, hard skills, знание системы
Solution architect. Он отвечает за бизнес и его развитие и фокусируется на понимании бизнес-потребностей. Здесь уже почти нет технологий в хрестоматийном виде, но есть умение конструировать и адаптировать решения к разным клиентам: из чего те будут состоять и как именно внедряться.
Больше всего подойдет для игроков с прокачанными навыками: хард-скиллы, коммуникация, знание системы
Enterprise architect. Этот герой практически не сталкивается с технической работой, но это и не нужно: его основная задача – построение бизнес-стратегий и глобальное планирование. В отличие от, например, quality attribute архитекторов, такой человек редко появляется на каких-то публичных конференциях и митапах – это те самые “серьезные дяди”, которые активно коммуницируют с бизнесом и принимают основные решения. Из-за специфики позиции такие архитекторы не сильно разбираются в технических кишочках (хотя, конечно, бывают исключения). Потому что тут вполне достаточно абстрактного понимания проекта и минимальной опоры на конкретные инструменты.
Больше всего подойдет для игроков с прокачанными навыками: коммуникация, архитектурные фреймворки, дзен-гармоничность
Харизма = + 100 очков к прокачке персонажа
Уровень 3: Дракон неминуем!
Вместе с новым статусом у персонажа при повышении уровня всегда появляются новые уязвимости, с которыми надо бороться. Это главный “дракон” для архитектора, не победив которого – не получится пройти игру. Имя этому дракону – рабочие “боли”:
Фантомная голова, или Голова несостоявшегося проекта
Любому архитектору часто приходится “думать в воздух”. Допустим, тебя просят оценить проект; ты в деталях продумываешь архитектуру, выкатываешь оценку – а оказывается, что заказчик говорит, что готов заплатить вдвое меньше. И…потрачено! Архитектор вложил нервы время и интеллект, но самого результата нет – и уже не будет.
Расфокусированная голова, или Голова-тумблер
Если разработчик в течение года может работать параллельно над двумя-тремя проектами, то архитектору приходится переключаться между таким количеством буквально на протяжении одного созвона.
К тебе может прийти одновременно 15 заказчиков, и при общении с каждым ты должен уметь менять контекст и погружаться в каждый кейс одинаково глубоко. Только что тебе пришла задача по интеграции условного продукта в Amazon cloud, а следом приходит разработчик и начинает спрашивать тебя про flow диаграммы – и все это нужно держать в уме.
Тревожная голова, или Голова-перфекционист
Еще одна большая трагедия для каждого архитектора – тотальная неидеальность.
Полностью подходящего решения не существует. Каждая написанная строка кода, добавление библиотеки, любое изменение конфигурации решает одну проблему, но создает следующую. “Лучшее – враг хорошего”.
Уровень 4: Game Over?!
Вот и все: занавес, фанфары, “directed by”! Но остался бонусный этап – ваше будущее. Надо выбрать, какую игру проходить дальше. И здесь есть несколько вариантов:
Principal Architect. У некоторых больших компаний есть целая иерархия архитекторов, покорению которой можно посвятить целую карьеру! Но даже если такой опции нет, можно просто сменить домен – и вперед!
TechLead/CTO. Ведь архитектор – это еще и про процессы. Так, в security-направлениях есть SDL, в performance ты выбираешь, каким измерениям доверять, а каким нет (то есть тоже строишь процесс). И так далее. Короче говоря, архитектор это всегда методолог, и с таким бэкграундом – стоит только погрузиться в бизнес-часть и пипл-менеджмент – уже можно идти на позицию технического менеджера.
Однако, как говорят истинные ценители хорошего геймдева, по-настоящему понять и прочувствовать игру можно только если ты ее хотя бы раз перепрошел. В общем, нет времени объяснять, жмите кнопку play у нас в “Лаборатории Касперского” :)
Комментарии (6)
vdshat
13.09.2024 20:25+3Перестаньте писать, что архитектор может не иметь хорошей технической базы и не быть разработчиком. Он, конечно, может ее не иметь, но это будет плохой архитектор. И таких, к сожалению, развелось хоть пруд пруди!
Смешно было наблюдать на одних переговорах, когда такой "архитектор" по каждому техническому вопросу выбегал из переговорки и звонил кому-то, советовался. Под конец уже сами заказчики смеялись в голос и комментировали.
Архитектор ответственен за выпуск продукта, выбор доступных инструментов и подходов. Если он сам понятия не имеет, с чем работает, то что он построит?
Нужно как в строительстве, чтоб ответственность за продукт была пожизненно, тогда, глядишь, инженеры будут в отрасли, а не случайные люди.
onets
13.09.2024 20:25Начали с software архитектора а закончили enterprise. Нет, это так не работает.
Солюшен архитектор - по сути интегратор. На входе у него бизнес-процесс и он из готовых компонентов «собирает» его. Компоненты - это от эксель файлов до информационных систем 3rd party или самописных.
Software (или system) архитектор с которого началась статья - это архитектор конкретного компонента - информационных систем, ну или другими словами софта. Откуда у вас там появился бюджет на железки? Для такого архитектора - железки это за неким слоем абстракции.
А вот enterprise архитектор - этот человек по сути и координирует работу и учитывает все обеспечение - железки, 3rd party софт типа баз данных и очередей, 1с, информационные системы разрабатываемые своими силами, методологическое обеспечение (подходы и процессы), организационное (топ менеджмент, руководители отделов) и тому подобное.
Разумеется, в зависимости от размера компании и поставленных задач один человек может надевать шляпы всех трех архитекторов в той или иной степени. Но это не значит, что софтвар архитектор (как роль) обязан уметь считать железки или командовать dba или копаться в 1с.
speshuric
vkni
Senior - проверочное слово "Синька"!
Вообще, конечно, смесь французского с нижегородским умиляет.