Apeiron
RU UA EN

IT карьера: Software Architect

24 мая 2021 г., 20:05:04


Содержание статьи:

Особенности профессии

Еще лет 10 лет назад роль архитектора (Software Architect или Solution Architect) на проектах выполняли сами разработчики. Теперь это отдельная профессия, довольно востребованная и активно обсуждаемая. Архитектор программного обеспечения – это специалист, который занимается профессиональным проектированием IT-системы. Данного специалиста программного обеспечения также называют архитектором ПО или ИТ-архитектором. Software Architect — это IT-специалист, принимающий решения относительно внутреннего устройства и внешних интерфейсов программного комплекса с учётом проектных требований и имеющихся ресурсов. В ходе выполнения своих должностных обязанностей этот профессионал занимается построением и разработкой специализированных систем, которые, говоря простым языком, предназначены для решения самых разнообразных бизнес-задач.

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

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

Software Architect - It карьера


Плюсы и минусы

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

Рассмотрим преимущества работы архитектора ПО.

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

К недостаткам профессии можно отнести несколько факторов.

  • Высокая ответственность. Для людей боящихся брать на себя ответственность за команду, за проект - в целом, это является огромным вызовом и испытанием, с которым далеко не все могут справиться.
  • Стрессоустойчивость. Системному архитектору на постоянной основе приходится взаимодействовать с людьми (коллеги, заказчики, начальник). В ходе такого общения могут возникать трудности, конфликты и недопонимания.
  • Порог входа. Большой опыт работы. Архитектором практически невозможно стать без опыта программирования и участия в разработке достаточно масштабных проектов. Нужно проработать не менее 5 лет чтобы подняться до карьерного уровня равного Software Architect .

Таким образом, достоинства профессии системного архитектора перевешивают ее недостатки.

Должностные обязанности

Архитектор отвечает за видение будущей системы. Он придумывает, как построить решение, чтобы оно работало эффективно и соответствовало потребностям заказчика.

Software Architect - role


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


В обязанности архитектора входит:

  • Проектирование системы на основе требований заказчика;/li>
  • Определение архитектуры приложенияи, каждого компонента этой системы в отдельности на высоком уровне;
  • Выбор технологии для каждого звена системы;
  • Выбор способов взаимодействия между компонентами системы;
  • Создание рабочего прототипа;
  • Дизайн интерфейсов и компонентов приложения;
  • Подбор или проектирование фреймворков;
  • Анализ и исправление проблем производительности;
  • Анализ архитектуры. (Да, да он существует);
  • Ревью кода;
  • Рефакторинг кода;
  • Написание и поддержка стандартов кодирования, каталогов проектных паттернов и антипаттернов;
  • Документирование всех архитектурных решений, постоянное обновление документации;
  • Риск-менеджмент;
  • Обучение и консультирование программистов.
  • Контроль за архитектурой проекта, на каждом шаге его релиза.

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

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

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

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

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

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

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

Необходимые навыки

Умение абстрагироваться

ИТ-архитекторы разрабатывают сложные решения под определенные задачи компании. Это приводит к тому, что на рынке практически нет универсальных, то есть типовых кейсов, которые можно использовать всегда и везде. Вроде бы одинаковый набор решений и продуктов может объединяться в различные ИТ-системы, иметь разную структуру и как результат, обеспечивать именно тот функционал, который требуется компании. Для ИТ-архитектора важно развивать гибкость мышления, чтобы взглянуть на проект под другим углом, суметь разбить его на логические части и найти наиболее верное и подходящее решение. Нет проторенной тропы: каждому проекту — уникальное решение.

Менеджмент и любовь к людям

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

Высокая обучаемость

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

Желание быть «на гребне волны»

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

Владение языком бизнеса

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

Наличие опыта

От ИT-архитектора требуется принимать решения крайне оперативно, и у него практически нет права на ошибку. Нет волшебной таблетки, которая поможет при возникновении проблем. Этот навык приобретается только в полях, методом проб и ошибок. Главное —поставить цель и помнить, что все начинали с малого и не родились сразу крутыми специалистами, а также не забывать, что самый ценный опыт –– это тот, который пришел вместе с шишками.

Software Architect skills


Soft skills системного архитектора

Хотя этот специалист должен иметь все описанные выше профессиональные навыки, есть также требования непосредственно к его человеческим качествам.

  • Аналитическое мышление.
  • Усидчивость и терпеливость.
  • Высокая ответственность.
  • Любознательность и постоянное желание развиваться.
  • Навыки работы с документами.
  • Умение разбираться с бизнес-процессами предприятия.
  • Личная дисциплина.
  • Коммуникативные навыки и умение работать в команде.
  • Навыки лидера.

В процессе трудоустройства решающими для приема на работу станут как профессиональные, так и личностные качества. Их удачное сочетание даст максимальную вероятность устроиться на высокооплачиваемую работу.

Какие архитекторы еще есть?

Помимо Software Architect вы можете встретить в сети еще такие вакансии и описание должностей:

Enterprise Architect – создает и поддерживают архитектуру целого предприятия, которая состоит из множества решений.
System Architect – выстраивает инфраструктурную сторону решения, фокусируясь на инфраструктурных облачных сервисах, на ПО, необходимом для поддержки решения после его развертывания.
Quality Architect – выстраивают стратегию тестирования и определяет подход к управлению качеством создаваемого продукта.

Как стать Software Architect

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

Большинство специалистов переходят на позицию Software Architect с должности старшего разработчика. В этом случае требуется развитие системного мышления и экспертизы, прокачка Soft Skills, чтобы постоянно формировать единое видение развития продукта, не создавая конфликтов внутри компании.

Помимо разработчиков, попробовать себя в архитектуре решений могут бизнес-аналитики, деливери-менеджеры, проектные менеджеры, ресурсные менеджеры, а также тестировщики-автоматизаторы: для них есть даже специальная поддисциплина — Solution Architecture in Test Automation.

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

Карьерный рост

  • Первое и, наверное, самое очевидное – это карьерный рост в сфере вашей работы. Если вы junior-developer, то развивайтесь до middle и senior-developer, а затем уже занимайте роли тим лидов.
  • Переход на другой стек технологий. В настоящее время большое количество разработчиков уходит в мобильную разработку на iOS и Android, которые только набирают силу.
  • Ведущий инженер-разработчик, тим лид. Вы сейчас находитесь на пике карьеры разработчика. Для того, чтобы развиваться дальше, перед вас стоит выбор: выучить еще один стек технологий и сменить направление работы; уйти из разработки, или стать архитектором ПО.
  • Перейдите на управленческую роль. Талантливый управленец очень дорого обходится компании, поэтому их сложно найти. Если управленец будет иметь технический бэкграунд, то это позволит ему быть на одной волне с разработчиками.

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

Сложности

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

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

Обучение

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

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

Конкуренция и заработная плата

Зарплаты Software Architect могут варьироваться в большом диапазоне. Все зависит от размеров компании, масштабов программной разработки, численности сотрудников и команд. Оклад Software Architect в 2022 начинается от 3000-4000$ в месяц. 5000 — это медиана. Бывают и значительно большие цифры.

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

Рекомендации для начинающего архитектора

1. Начните с размышлений об абстрактных компонентах, а не о схемах развертывания

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

2. Не начинайте с выбора шаблонов

Шаблоны – отличный инструмент проектирования структурных компонентов. Но их использование в качестве отправной точки часто приводит к чрезмерно сложной системе или избыточной рекламе.

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

3. Не ожидайте слишком многого от первой итерации дизайна

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

4. Создайте представление верхнего уровня о функциональных требованиях

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

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

5. Тщательно определите нефункциональные требования

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

Вот несколько примеров:

  • Расширяемость

Усилия, необходимые для расширения определенной функции.

  • Производительность

Короткое время отклика / высокая производительность.

  • Масштабируемость

Способность системы выполнять увеличивающийся объем работы.

  • Портативность

Удобство использования системы в различных средах.

  • Соблюдение

Соответствие системы политикам и стандартам.

И не забывайте постоянно учиться. Процесс познания нового не заканчивается никогда, если вы действительно хотите достигнуть высокого профессионального уровня.

Вакансии Software Architect

Для поиска вакансий на сайте Apeirondb.com выберите в разделе с вакансиями город, страну и технологию, которые вас интересуют: Технология Architecture. А также, очень легко осуществить поиск при помощи телеграм бота HIRE:bot(t.me/hireIT_bot) @hireIT_bot, который при правильной настройке, будет отправлять вам только вакансии Software Architect.

Полезные ссылки для старта карьеры и расширения кругозора архитектора

Важные статьи, видео и книги для тех, кто хочет трансформироваться в архитектора:


Итог

Это работа по-хорошему нагружает «технический мозг», и главное — позволяет проявить свои творческие способности, общаться с профессионалами и большими начальниками, и даже иногда спасти мир или как минимум заслужить уважение коллег, оказавшихся с тобой в одной лодке сложного и непонятного проекта.

Если все вышеописанное находит отклик в вашем сердце - дерзайте. Или становитесь куратором технических проектов на стороне своей компании. Главное — проявляйте инициативу, интересуйтесь «железом» во всем его проявлении и используйте эти знания в проектировании комплексных вычислительных систем. За ними — весь современный мир!