IT карьера: Software Architect
24 мая 2021 г., 20:05:04Содержание статьи:
- Особенности профессии
- Плюсы и минусы
- Должностные обязанности
- Необходимые навыки
- Soft skills системного архитектора
- Какие архитекторы еще есть?
- Как стать Software Architect
- Конкуренция и заработная плата
- Рекомендации
- Вакансии Software Architect
- Полезные ссылки
- Итог
Особенности профессии
Еще лет 10 лет назад роль архитектора (Software Architect или Solution Architect) на проектах выполняли сами разработчики. Теперь это отдельная профессия, довольно востребованная и активно обсуждаемая. Архитектор программного обеспечения – это специалист, который занимается профессиональным проектированием IT-системы. Данного специалиста программного обеспечения также называют архитектором ПО или ИТ-архитектором. Software Architect — это IT-специалист, принимающий решения относительно внутреннего устройства и внешних интерфейсов программного комплекса с учётом проектных требований и имеющихся ресурсов. В ходе выполнения своих должностных обязанностей этот профессионал занимается построением и разработкой специализированных систем, которые, говоря простым языком, предназначены для решения самых разнообразных бизнес-задач.
Таким образом, можно сделать вывод о том, что системный архитектор – это специалист, без которого не сможет существовать и развиваться ни одна современная компания. Профессионал высокого класса, обладающий необходимым опытом, а также соответствующим объемом знаний, поможет предприятию автоматизировать или упростить некоторые деловые процессы, сэкономить деньги и увеличить выручку, а также выйти на новый, более высокий, уровень.
В связи с этим следует иметь в виду, что системный архитектор должен обладать знаниями из самых разных сфер и областей человеческой жизни: программирование, бизнес и т. д.
Плюсы и минусы
Как и любая другая профессиональная деятельность, работа системного архитектора характеризуется большим количеством достоинств и недостатков. Прежде чем ступать на такой карьерный путь, следует полноценно оценить все преимущества и недостатки профессии, а также оценить свои возможности и способности.
Рассмотрим преимущества работы архитектора ПО.
- Высокая оплата труда. Материальное вознаграждение системного архитектора является достойным. Соответственно, многих молодых людей эта профессия привлекает в отношении возможных финансовых перспектив.
- Востребованность. Специальность очень востребована на рынке труда, соответственно, вы не останетесь без работы.
- Постоянное саморазвитие. Специалисты, занимающие должность системного архитектора, постоянно развиваются и самосовершенствуются. Однозначно должны много знать и иметь огромный опыт программирования.
- Ты все еще программист! Должность архитектора привлекает разработчиков открытыми возможностями знакомиться с новыми технологиями и идеями, влиять на процесс разработки и судьбу проекта, а также решать глобальные задачи, оставаясь при этом программистом.
К недостаткам профессии можно отнести несколько факторов.
- Высокая ответственность. Для людей боящихся брать на себя ответственность за команду, за проект - в целом, это является огромным вызовом и испытанием, с которым далеко не все могут справиться.
- Стрессоустойчивость. Системному архитектору на постоянной основе приходится взаимодействовать с людьми (коллеги, заказчики, начальник). В ходе такого общения могут возникать трудности, конфликты и недопонимания.
- Порог входа. Большой опыт работы. Архитектором практически невозможно стать без опыта программирования и участия в разработке достаточно масштабных проектов. Нужно проработать не менее 5 лет чтобы подняться до карьерного уровня равного Software Architect .
Таким образом, достоинства профессии системного архитектора перевешивают ее недостатки.
Должностные обязанности
Архитектор отвечает за видение будущей системы. Он придумывает, как построить решение, чтобы оно работало эффективно и соответствовало потребностям заказчика.
Архитектор обязан иметь целостное видение всей системы и грамотно определять, как система будет разбита на модули, и как эти модули будут взаимодействовать между собой, — только после принятия этих решений команда разработчиков сможет приступить к работе над отдельными модулями.
В обязанности архитектора входит:
- Проектирование системы на основе требований заказчика;/li>
- Определение архитектуры приложенияи, каждого компонента этой системы в отдельности на высоком уровне;
- Выбор технологии для каждого звена системы;
- Выбор способов взаимодействия между компонентами системы;
- Создание рабочего прототипа;
- Дизайн интерфейсов и компонентов приложения;
- Подбор или проектирование фреймворков;
- Анализ и исправление проблем производительности;
- Анализ архитектуры. (Да, да он существует);
- Ревью кода;
- Рефакторинг кода;
- Написание и поддержка стандартов кодирования, каталогов проектных паттернов и антипаттернов;
- Документирование всех архитектурных решений, постоянное обновление документации;
- Риск-менеджмент;
- Обучение и консультирование программистов.
- Контроль за архитектурой проекта, на каждом шаге его релиза.
Одной из самых главных обязанностей является полная техническая поддержка проекта, от момента его начала до конечного релиза и добавления расширенного функционала. А также техническая поддержка следующих релизов этого проекта. Вам придётся большое количество раз переключаться с одной задачи на другую в течении рабочего дня.
Для начала необходимо определить промежуточные цели, чтобы в конечном счете реализовать, поставленную ранее стратегию становления архитектором ПО.
Кроме этого, от архитектора ожидается глубокое понимание предметной области бизнеса, знание основных стандартов и трендов, связанных с разрабатываемым продуктом. Или, если от противного, — незнание специалистом каких-либо бизнес-деталей, необходимых для проектирования, не может служить оправданием неспособности архитектора выполнить свою работу.
Одной из самых важных частей является чёткий и понятный анализ поставленного плана. Что сделано, что необходимо рассмотреть, и где нужно ускориться, а что убрать из целей, в качестве ненадобности.
Если вас заинтересовала эта вводная статья или если у вас возникла мысль попробовать этот путь, то хорошенько подумайте, точно ли вы этого хотите.
Во-первых, люди боятся всего нового. Новая должность, новый вид стрессовых ситуаций, все это вызывает страх в отличии от текущего положения вещей. Разумеется, выбор не всегда однозначен и не всегда зависит от вашего желания изменить что-либо в своей жизни. Но в тоже время, он может зависеть не только от вас, а также от таких факторов, как: семья, ваше финансовое положение и от множества других вещей.
Во-вторых, такой путь займет несколько лет. Процесс становления архитектором ПО не происходит за одну ночь. Один из архитекторов, сообщил, что он, спустя 18 месяцев после назначения на должность, понял, что входит в его обязанности. Подобные интервалы времени считаются нормальными, и вы просто должны для себя понять готовы ли вы преодолеть этот путь. Но даже если у вас нет четкого плана действий, вы можете начать с небольших шагов по достижению намеченной цели, а не топтаться на одном месте.
Необходимые навыки
Умение абстрагироваться
ИТ-архитекторы разрабатывают сложные решения под определенные задачи компании. Это приводит к тому, что на рынке практически нет универсальных, то есть типовых кейсов, которые можно использовать всегда и везде. Вроде бы одинаковый набор решений и продуктов может объединяться в различные ИТ-системы, иметь разную структуру и как результат, обеспечивать именно тот функционал, который требуется компании. Для ИТ-архитектора важно развивать гибкость мышления, чтобы взглянуть на проект под другим углом, суметь разбить его на логические части и найти наиболее верное и подходящее решение. Нет проторенной тропы: каждому проекту — уникальное решение.
Менеджмент и любовь к людям
Архитектор — это не просто человек, который отлично разбирается в информационных технологиях и способен с завязанными глазами спроектировать и построить частное облако. Он отличный менеджер, который взаимодействует с людьми. Интровертам на этой должности бывает очень сложно, потому что большая часть работы проектная и подразумевает непрерывный контакт как с командой, так и с заказчиком. Это играющий тренер, который знает сильные и слабые стороны каждого участника и может замотивировать на результат.
Высокая обучаемость
Знаний, которые можно приобрести в университете, недостаточно, поэтому специфика работы системного архитектора подразумевает непрерывное образование и развитие. Важно знать не только как работают и где можно применить новые решения, но и развиваться в других направлениях. Даже самые нетипичные для ИT-специалиста навыки могут пригодиться в работе: например, знание специфики продаж поможет обосновать и защитить свой проект.
Желание быть «на гребне волны»
Системный архитектор обязан следить за зарубежными тенденциями развития ИТ-инфраструктуры и работы с ней. Подразумевается, что такой специалист должен знать один, а лучше несколько иностранных языков, регулярно ездить на профессиональные конференции и повышать свою квалификацию. Желательно, за счет работодателя.
Владение языком бизнеса
От архитектора ожидают не только экспертных знаний, но и умения представить проект заказчику и топ-менеджменту. При этом необходимо оперировать теми ценностями и аргументами, которые приняты в бизнесе. Их не привлечет метла Nimbus-2000 просто потому что это последняя и самая быстрая модель, но она сможет их привлечь, если грамотно аргументировать, что ее покупка сможет помочь решить бизнес-задачи с максимальной эффективностью.
Наличие опыта
От ИT-архитектора требуется принимать решения крайне оперативно, и у него практически нет права на ошибку. Нет волшебной таблетки, которая поможет при возникновении проблем. Этот навык приобретается только в полях, методом проб и ошибок. Главное —поставить цель и помнить, что все начинали с малого и не родились сразу крутыми специалистами, а также не забывать, что самый ценный опыт –– это тот, который пришел вместе с шишками.
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.
Полезные ссылки для старта карьеры и расширения кругозора архитектора
Важные статьи, видео и книги для тех, кто хочет трансформироваться в архитектора:
- Много полезных статей и видео, которые пригодятся для перехода из разработчиков в архитекторы.
- Software Architecture in Practice, L.Bass — азы бытия архитектором.
- Software Systems Architecture: Working With Stakeholders Using Viewpoints and Perspectives — одна из основных книг, которая наиболее полно раскрывает принципы работы архитектора.
- Release It!: Design and Deploy Production-Ready Software — истории про то, как надо проектировать ПО и что бывает, когда оно спроектировано криво.
- Patterns of Enterprise Application Architecture — мемуары Мартина Фаулера о том, как надо проектировать ПО.
- Domain-Driven Design — Tackling Complexity in the Heart of Software © E.Evans — про правильное моделирование.
- Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development © C. Larman — проеĸтируй @ доĸументируй.
- Разработĸа требований ĸ программному обеспечению, К.Вигерс — Microsoft пишет про разработĸу требований.
- Обзор паттернов проектирования.
Итог
Это работа по-хорошему нагружает «технический мозг», и главное — позволяет проявить свои творческие способности, общаться с профессионалами и большими начальниками, и даже иногда спасти мир или как минимум заслужить уважение коллег, оказавшихся с тобой в одной лодке сложного и непонятного проекта.
Если все вышеописанное находит отклик в вашем сердце - дерзайте. Или становитесь куратором технических проектов на стороне своей компании. Главное — проявляйте инициативу, интересуйтесь «железом» во всем его проявлении и используйте эти знания в проектировании комплексных вычислительных систем. За ними — весь современный мир!