Написать пост

Software Architect: рассказ от первого лица о новой, но очень востребованной профессии

Аватар Типичный программист

Рассказ о том, как стать архитектором ПО и в какой стране лучше работать с подобной квалификацией.

рассказывает Анна Мелехова, Acronis Software Architect

Когда студенты приходят в вуз, им не рассказывают, кто такой Software Architect, чем он занимается, и сколько ему платят. И это не удивительно, ведь потребность в архитектуре нарастала по мере увеличения сложности продуктов. Сегодня об этой профессии, зарплатах и условиях работы в разных странах расскажут три специалиста из компании Acronis, которые выполняют роли программных архитекторов в России, Сингапуре и США.

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

Кстати, архитекторы тоже бывают разными — в компаниях можно найти архитекторов решений, архитекторов систем, главных корпоративных архитекторов, архитекторов ПО, архитекторов БД. Каждый из этих титулов говорит о том, что специалист занимается выстраиванием процессов и взаимодействий в своей сфере на самом высоком уровне. Архитектор в любом случае должен иметь большой кругозор, так как он принимает сложные технические решения. Ему должен доверять бизнес, ведь часто в необходимости вкладываться в развитие архитектуры нужно убедить всех участников процесса.

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

Я не сразу стала архитектором: долгое время я вообще не представляла, что существует такое направление со своей объемной теоретической базой, сложившимися практиками и концепциями. Но когда я работала в компании Parallels на должности lead developer, в компанию пришел Майк Тотонги (Michael Toutonghi), который начал говорить об архитектуре ПО, как об отдельной дисциплине, я начала изучать материалы, знакомиться с концепциями и нарабатывать опыт. Оказалось, что многие вещи я уже делала как архитектор, но не знала правильных названий и была ограничена своим опытом и опытом коллег. Чтение литературы/лекции позволило расширить границы.

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

Обязанности

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

Зарплата и национальные особенности

Сразу скажу, что единой сетки зарплат для программных архитекторов не существует. Размер оклада может быть разным в зависимости от размеров компании, масштабов создания ПО, а также количества команд разработчиков. Например, в Москве архитектор ПО может получать от 220 тысяч рублей в месяц, при этом можно найти вакансию со значительно большей зарплатой.

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

Кому подходит быть архитектором

Быть программным архитектором — значит постоянно расширять свой кругозор, мыслить системно, а также находить компромиссы и уметь принимать чужую точку зрения. Архитектор не может быть приверженцем какой-то технологии. Он не будет навязывать свои личные технические предпочтения. Архитектор редко говорит «нет», потому что он уже слишком много видел и прекрасно знает, что практически в любом решении есть и плюсы, и минусы. Главная задача архитектора — проявить их и соотнести с целями компании. Software-архитектор должен быть гибким и ориентированным на поиск компромисса, но не «мутным». Важное качество архитектора — явно доносить все возможные последствия от каждого шага, и если принятое решение имеет много минусов, он должен убедиться что руководство понимает цену и сознательно идет на этот шаг.

Поэтому не все могут быть архитектором просто по складу личности. Я бы советовала почитать такую книгу, как «Software architecture in practice» от профессоров Carnegie-Mellon University. Если она покажется вам слишком дотошной, значит архитектура — не ваше призвание.

Как стать программным архитектором

Путь в системные архитекторы часто лежит через должность старшего разработчика, Чтобы совершить это рывок нужна прокачка Soft Skills и расширение своей экспертизы. Но существует и другой путь, и теперь на архитектора можно даже выучиться. Например, я веду курс программной архитектуры в университете «Иннополис». После такого обучения можно стать Junior Software Architect с уже «поставленным» критическим и системным мышлением, а реальный опыт накапливать уже в процессе работы.

Устроиться сразу после университета в хорошую компанию на должность Software Architect очень сложно, потому что на этой должности требуется большой опыт. Как и в случае с Software Engineer, QA или Product Manager, более опытный кандидат стоит дороже и, вероятно, будет решать поставленные задачи эффективнее. Сегодня я выполняю роль архитектора ПО в Acronis, находясь в американском офисе компании. И я уверен, что достичь этого мне помог именно предыдущий опыт.

Свой путь в сфере Software Engineering я начал больше 10 лет назад. На работу в компанию Acronis я пришел как Software Developer. После этого меня повысили до старшего разработчика, а после и до Team Lead’а. Сейчас я нахожусь на весьма необычной должности, которая совмещает в себе большую часть роли Software Architect и немного от программного менеджера.

Я бы сказал, что позицию Software Architect не стоит рассматривать как «вершину» пути разработчика. По пути Software Engineer можно достичь столь же высокой оплаты и быть ценным для компании. К тому же, любая должность (независимо от ее названия) — это всегда совмещение нескольких ролей, но  их баланс будет всегда различным. Software Architect это весьма сложная и интересная позиция, которая включает в себя много разных ролей.

Обязанности

Личной мой баланс задач на сегодняшний день состоит на 60% из задач выбора и внедрения архитектуры, и на 40% из анализа рынка, работы с другими продакт-менеджерами. Я трачу достаточно много времени на то, чтобы понять потребности рынка, а также транслировать требования к разработчикам на технический язык.

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

Зарплата и национальные особенности

Зарплата архитектора ПО в США так же, как и оплата других позиций в сфере software development, находится на достаточно высоком уровне. Несмотря на то, что зарплаты архитекторов в среднем выше, чем у разработчиков, зачастую сетки окладов пересекаются — все зависит от компаний и конкретных позиций. Я бы сказал, что стремиться к должности программного архитектора только из-за дохода не имеет смысла.

При этом поиск хорошего архитектора ПО для стартапа или небольшой компании может быть непростой задачей. Да, такие гиганты как Google или Microsoft собирают лучшие кадры с рынка, но остальным приходится искать специалиста с релевантным опытом. А это не всегда быстро и просто.

Кому подходит быть архитектором?

Архитектору ПО важно понимать базовые основы операционных систем и сетей, знать и владеть разными языками программирования, знать и уметь применять (или наоборот, уметь не применять) общепринятые подходы в программирование и проектировании. Как говорится, нужно быть в тренде всего технического. Это все то, что должен уметь и опытный разработчик.

Но если разработчик может себе позволить быть «узким» специалистом, то для архитектора это недопустимо. Архитектор должен уметь разбираться в любой технической проблеме, документировать и аргументировать любые решения, уметь выслушивать позиции других людей и помогать бизнесу достигать своих целей. Эта работа подходит для стрессоустойчивых и коммуникативных людей с широким спектром интересов и прокачанными Soft Skills.

Как стать архитектором ПО

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

Я работаю в отрасли уже 16 лет, и начинал как бэкенд-разработчик. Перед тем, как стать архитектором ПО, я побывал в разных компаниях на руководящих ролях, в том числе относящихся к R&D.

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

Обязанности

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

Зарплата и национальные особенности

У меня есть опыт работы в Индии и Сингапуре. До начала своей карьеры в Acronis я работал в таких крупных фирмах, как Veritas и Avaya. Практика показывает, что в Дели достаточно легко найти программного архитектора, так как на рынке труда достаточно квалифицированных кадров. Как следствие, в Индии зарплата программного архитектора не будет значительно отличаться от оплаты труда другого технического специалиста аналогичного уровня и квалификации. В Сингапуре «вилка» может быть более значительной.

В Сингапуре намного проще найти архитектора решений. ИТ-отрасль больше ориентирована на сервис, и поэтому культура создания архитектуры решений намного более развита. Архитекторы ПО здесь встречаются реже. Но зато специалисты больше ориентированы на новые технологии. Здесь проходит больше митапов, на которых обсуждаются облачные решения, контейнеры, современные языки программирования.

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

Кому подойдет быть программным архитектором?

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

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

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

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

Как стать программным архитектором?

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

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

В качестве источника важных знаний я бы рекомендовал такие книги как Software Architecture in Practice и Designing Software Architectures: A Practical Approach. Кроме этого для самообразования будет полезна документация успешных облачных провайдеров. Лично я использую концепции AWS, чтобы узнать больше о новых подходах к архитектуре ПО.

Следите за новыми постами
Следите за новыми постами по любимым темам
6К открытий6К показов