Как стать архитектором ПО?
Системный архитектор (он же архитектор программного обеспечения, он же инженер проекта) — одна из специальностей в сфере информационных технологий, которая подразумевает составление программы проекта в соответствии с требованиями заказчика. Специальность не самая простая для освоения, однако заработная плата достаточно высокая. При этом, на сегодняшний день профессия особенно актуальна благодаря высокой цифровизации большинства областей и её необходимости внутри крупных компаний.
Кто такой архитектор ПО и чем он занимается
Системный архитектор помогает бизнесу строить IT-системы для решения задач компаний. Если говорить проще, то всё, чем занимается инженер проекта, направлено на упрощение функционирования бизнес-процессов и их автоматизацию.
Например, если производитель захочет предоставлять свои услуги онлайн, то целью системного архитектора будет продумать, как сделать так, чтобы взаимодействие покупателя с магазином в онлайне было наиболее простым и функциональным. Он может заниматься разработкой приложения или веб-версии сайта.
При этом в обязанности архитектора ПО, помимо основной работы, входит также встреча с клиентами, внедрение и тестирование готовой системы.
Если говорить подробнее, то в задачи инженера проекта входит, в частности, создание системных требований: он не только определяет, что требуется для выполнения проекта, но и рассчитывает затраты с учетом выделенного бюджета. Также он создает прототипы IT-систем, то есть создает план, которого нужно придерживаться. Специалист заранее придумывает прототипы (визуальные либо функциональные наброски программ или веб-сервисов), а затем разрабатывает их (в большинстве случаев).
Инженер проекта, помимо вышеупомянутого, часто занимается и наймом персонала. Он может отвечать за найм конкретных специалистов или же сразу всего штата. Помимо найма, в его обязанности входит и управление персоналом, он следит за выполнением работы.
Системный архитектор чаще всего занимается именно архитектурой. Ему не так важно, на каком языке программирования она разрабатывается. Архитектор сосредоточен на том, чтобы продумать и помочь командам сформировать интерфейсы взаимодействия сервисов для того, чтобы эти сервисы могли масштабироваться, расширяться, развиваться и не мешать друг другу.
Кроме того, от такого специалиста ожидается и глубокое понимание предметной области бизнеса, с которым он работает. Важно понимать и следить за основными трендами, связанными с продуктом, который разрабатывает компания.
Что должен уметь специалист по архитектуре ПО
Архитектор программного обеспечения сопровождает проект на всех этапах разработки системы, поэтому он должен уметь не только технически создавать архитектурный шаблон, но и консультировать членов команды разработки, взаимодействовать с заказчиком и давать экспертную оценку готовому продукту.
Есть два основных типа системных архитекторов: Solution architect (SA) и Enterprise architect (EA). В чем их отличия? Если говорить просто, то Enterprise разбирается в том, что делать, а Solution – как делать.
К кругу вопросов и задач, которые стоят перед EA, можно отнести определение оборудования, на котором будет работать приложение и/или его части. Также он занимается определением потоков данных и взаимодействием с другими информационными системами в компании и за её пределами. Кроме того, разрабатывает план разворачивания приложения, его администрирования и вопросов доступа\безопасности.
Вопросы перед Solution Architect более знакомы простым разработчикам, например, это выбор фреймворков для работы, контроль за развитием приложения и решение спорных моментов с разработчиками.
EA разрабатывает глобальный план работы приложения, взаимодействия его с другими приложениями, а SA, в свою очередь, работает над конкретным ПО. При этом EA постоянно следит за тем, как именно развивается приложение и может вносить коррективы в концептуальные части приложения.
Например, у компании появилась потребность разработать новое приложение, которое использует данные другого приложения. В таком случае ЕА принимает решение о выделении части первого приложения в отдельный сервис, который будет поставщиком данных для второго приложения. Таким образом, логично следует вывод, что EA должен очень хорошо прорабатывать, анализировать и следить за тем, как работают все приложения вместе, а также иметь всю информацию в наглядном и структурированном виде, для того, чтобы можно было принимать все эти описанные решения.
Что касается SA, то это скорее практикующий программист, для которого требуется знать продукты и фреймворки с которыми предстоит работать, знать ограничения и сильные стороны технологий, которые будут использованы.
Архитектор взаимодействует со всеми ответвлениями проекта и сотрудниками. Задач у такого специалиста много.
Для выполнения базовых задач инженер проекта должен владеть навыками проектирования в Enterprise, Solution и Technical Architecture, создавать архитектурные артефакты, уметь работать с микросервисной архитектурой.
Системный архитектор также должен обладать следующими личными качествами, без которых в профессии будет сложно: аналитический склад ума, внимательность, способность долгое время выполнять рутинную работу, точность, коммуникабельность, умение организовать свое время и время команды, стрессоустойчивость, умение четко ставить задачи, а также умение говорить на одном языке с бизнесом.
Типичный рабочий день системного архитектора предполагает:
- участие в групповом планировании, митингах, совещаниях с заказчиком;
- консультирование команды по актуальным вопросам;
- проектирование и написание технической документации;
- изучение новых технологий;
- работа с кодом проекта, прототипирование, оптимизация, рефакторинг.
Что нужно знать системному архитектору?
Требования к кандидатам на должность инженера проекта довольно высокие.
Одного знания языков программирования недостаточно, поскольку главное требование — иметь практический опыт, то есть напрямую участвовать в разработке.
Среди требований, которые обычно указываются в вакансиях на место архитектора программного обеспечения обычно указываются:
- стаж работы senior-разработчиком не менее трех лет;
- наличие опыта в веб-разработке;
- опыт работы в должности solution-архитектора;
- знание архитектурных паттернов, к которым относятся многослойная архитектура, SOA, микросервисная архитектура.
Кроме того, нужно понимать, как устроена IT-система, ее ключевые сервисы, сетевые взаимосвязи, домены и другие составляющие. Ввиду того, что системный архитектор курирует проект самостоятельно, для него также важно уметь находить общий язык с заказчиками и нанятыми сотрудниками.
Что нужно знать и уметь на входе в профессию
Чтобы попасть на работу проектировщиком, нужно иметь представление о базовых понятиях и принципах построения IT-инфраструктуры и разбираться в продуктах основных вендоров. Как и на любой должности в сфере IT, нужно уметь читать и составлять документацию на русском на английском языках.
Но главное — иметь сильное желание трудиться в сфере информационных технологий, способность быстро обучаться и усваивать большие объемы информации. Немаловажный фактор — внимание к деталям.
Плюсы и минусы профессии
Как и в любой другой работе, среди задач системного архитектора можно найти как положительные, так и отрицательные стороны. К преимуществам можно отнести достаточно высокую заработную плату, востребованность на рынке труда, крутые перспективы роста и возможность участия в интересных проектах, а также просто престижность профессии.
Однако вам также придётся столкнуться с высокой ответственностью, которая ляжет на ваши плечи, так как цена ошибки архитектора выше, чем цена ошибки другого технического специалиста на проекте; ненормированным графиком и сидячим образом жизни, который сопровождает большинство IT-специальностей. Вспомним также и о дедлайнах, которые будут сопровождать вас на протяжении всей работы.
Как стать системным архитектором?
Обязательным при найме на работу является наличие уже имеющегося опыта в подобной сфере. Однако большим плюсом станет, если у вас есть техническое образование. В России нужные факультеты можно найти в МГТУ им. Баумана, Высшей школе экономики и МГУ им. Ломоносова.
Для обучения можно выбрать одно из самых распространенных IT-направлений: прикладная математика и информатика, компьютерные науки, вычислительная техника, программная инженерия, бизнес-информатика. Для всех этих направлений нужно сдавать ЕГЭ по математике, русскому языку, физике и, возможно, информатике.
Помимо высшего образования, стоит обратить внимание и на онлайн-курсы, однако их на рынке не так много. Например, обучение на соответствующую специальность предлагает онлайн-школа Skillbox. Авторы курса обещают, что в ходе обучения вы сможете познакомиться с инструментами для построения архитектуры ПО, научитесь выбирать архитектурный стиль под конкретную бизнес-задачу и создавать приложения.
Длительность обучения составляет четыре месяца, оно рассчитано на middle- и senior-разработчиков, senior-системных аналитиков и уже работающих архитекторов ПО. Первым курс поможет разобраться в архитектурных стилях и паттернах, планировать архитектуру будущей системы. Таким образом специалисты смогут выйти на новый уровень в ПО. Вторым курс пригодится, чтобы изучить основы проектирования архитектуры, начать работать с API Gateway, «Сага» и CQRS и другими паттернами.
Уже готовым специалистам курс может помочь в развитии собственных навыков — узнать множество лайфхаков от экспертов и повысить свою эффективность.
В ходе курса вы изучите проблемы отладки системы в распределённой архитектуре и узнаете, что такое Observability и Monitoring. Познакомитесь с тремя столпами Observability — Logs, Metrics и Tracing. Узнаете, как наделить систему свойством наблюдаемости, научитесь собирать метрики, встраивать трассировку и аудировать действия пользователей.
Но не стоит забывать и о самообразовании. В свободное время нужно работать над своими проектами. Единственный верный способ стать системным архитектором — это начать создавать эти самые архитектуры и доводить до совершенства настолько, насколько это возможно — это начнёт получаться со временем.
Карьерный рост архитектора программного обеспечения
Если говорить о вариантах развития на должности системного архитектора, то здесь повышается сложность проектов и оплата за них.
Однако после получения нужной практики ничего не мешает стать еще более продвинутым разработчиком мобильных приложений, фронтенда или бэкенда. Многие уходят в развитие инженерных практик, подключаются к автотестированию, SRE или администрированию.
Каких-либо ограничений в развитии специалистов в этой области нет. IT-архитектор может развиваться в разных направлениях, выбрав то, в чём у него больше опыта или к чему лежит душа.
Как правило, архитекторы программного обеспечения работают в компаниях-разработчиках, таких, как Mail.ru или Yandex. Также такие специалисты востребованы в IT-отделах крупных организаций, вроде Сбербанка или Газпрома.
Работу также можно найти в системных интеграторах, то есть компаниях, которые занимаются разработкой комплексных решений по автоматизации процессов на предприятиях.
Сколько получают архитекторы программного обеспечения?
Согласно данным портала hh.ru, минимальная зарплата, которую предлагают на рынке системным архитекторам, составляет 125 тыс. рублей. Однако чаще требуются специалисты, которым будут платить от 200 тыс. рублей. Максимальная зарплата, которую предлагают за работу архитектора программного обеспечения, составляет 400 тыс. рублей.
При этом, откликов на эти вакансии не так много, где-то можно даже стать первым кандидатом. Это связано с тем, что у разработчиков в современных реалиях не всегда есть необходимый опыт работы с IT-системами и требуемые навыки, чтобы быть именно бизнес-ориентированным специалистом, ведь это самое быстро развивающееся направление.
Стоит отметить, что, как правило, зарплата в 150 тыс. рублей предлагается специалистам среднего уровня, с опытом работы более 1-3 лет. В перечень его задач входит владение навыками проектирования Enterprise Architecture, Solution Architecture, Technical Architecture с использованием представлений, узлов, компонентов, контейнеров, коннекторов, конфигураций и интерфейсов. Такой специалист должен иметь опыт описания системной архитектуры, то есть он должен представить хотя бы пару завершенных проектов. Средний специалист также должен уметь создавать архитектурные артефакты — то есть владеть принципами, технологическими стандартами, руководствами, моделями/картами возможностей, технологическими дорожными картами, ландшафтными схемами, проектами решений. Также важно, чтобы он имел опыт разработки ПО с микросервисной архитектурой и имел системное мышление.
Архитектор ПО с опытом более трех лет, помимо основных технических обязанностей, должен также руководить командой. Требования к нему строже. Так, он должен владеть языками программирования, инструментами проектирования систем и стека технологий для разработки ПО, должен уметь анализировать текущие архитектурные решения, определять проблемные места, проектировать изменения. Кроме того, такой специалист должен разрабатывать техническую документацию и должен уметь обосновать выбор стека технологий для тех задач, которые он решает. Он также будет принимать участие в создании прототипов, разработке критически важных участков кода и алгоритмов, контроле качества кода; оценивать, обучать и консультировать разработчиков и обеспечивать командную слаженную работу.
Кто такой фронтенд-разработчик Фронтенд-разработчик (англ. Frontend developer) – специалист, который занимается разработкой пользовательского интерфейса программы, веб-сайта или мобильного приложения. Он отвечает за внешнюю часть приложения или с...
GitLab — это комплексное решение для управления репозиториями Git, которое позволяет разработчикам эффективно сотрудничать, управлять кодом, автоматизировать процессы развертывания и следить за состоянием проектов. GitLab объединяет в себе инструмен...
Python-разработчики — это специалисты, которые используют язык программирования Python для разработки программного обеспечения, включая веб-приложения, системы автоматизации и проекты в области машинного обучения. Язык Python популярен благодаря про...
В мире, где технологии развиваются быстрее, чем новые слова появляются в слэнге подростков, выбор правильного курса программирования для вашего ребенка может стать настоящим испытанием. Сегодня мы погрузимся в лабиринты кода и алгоритмов, чтобы помо...
В этой статье мы расскажем о разных программах для программирования, какие из них подойдут новичкам и что предпочитают профи. Редактор кода Это специальная программа для написания и редактирования кода компьютерных программ. Она обычно предлаг...
Системный администратор — это важный специалист в любой организации, который следит за тем, чтобы компьютеры и сети работали без сбоев. В этой статье мы расскажем, кто такие системные администраторы, какие задачи они выполняют, какие навыки им нужны...