О software-архитекторах сейчас не говорит только ленивый. По мере усложнения структуры современных приложений команды разработки все больше нуждаются в «дирижере» для своего «оркестра», в специалисте, который предсказывает, какими нефункциональными требованиями будет обладать система и как довести ее до нужных характеристик.



Однако у рядового разработчика вопросов о сути работы «софтварных» архитекторов нередко остается больше, чем ответов:

Чем именно архитектор занимается? Какими навыками должен обладать? Да и как им вообще можно стать?

На наш взгляд, развитие 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)


  1. speshuric
    13.09.2024 20:25
    +8


    1. vkni
      13.09.2024 20:25
      +4

      Senior - проверочное слово "Синька"!

      Вообще, конечно, смесь французского с нижегородским умиляет.


  1. MrLuce
    13.09.2024 20:25

    Откуда у тимлида сильные хард скилы?


    1. BronzeSeal
      13.09.2024 20:25

      Ну, пока он пишет код и где-то пол года после его хард-скилы еще сильные


  1. vdshat
    13.09.2024 20:25
    +3

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

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

    Архитектор ответственен за выпуск продукта, выбор доступных инструментов и подходов. Если он сам понятия не имеет, с чем работает, то что он построит?

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


  1. onets
    13.09.2024 20:25

    Начали с software архитектора а закончили enterprise. Нет, это так не работает.

    Солюшен архитектор - по сути интегратор. На входе у него бизнес-процесс и он из готовых компонентов «собирает» его. Компоненты - это от эксель файлов до информационных систем 3rd party или самописных.

    Software (или system) архитектор с которого началась статья - это архитектор конкретного компонента - информационных систем, ну или другими словами софта. Откуда у вас там появился бюджет на железки? Для такого архитектора - железки это за неким слоем абстракции.

    А вот enterprise архитектор - этот человек по сути и координирует работу и учитывает все обеспечение - железки, 3rd party софт типа баз данных и очередей, 1с, информационные системы разрабатываемые своими силами, методологическое обеспечение (подходы и процессы), организационное (топ менеджмент, руководители отделов) и тому подобное.

    Разумеется, в зависимости от размера компании и поставленных задач один человек может надевать шляпы всех трех архитекторов в той или иной степени. Но это не значит, что софтвар архитектор (как роль) обязан уметь считать железки или командовать dba или копаться в 1с.