Array
(
    [SRC] => 
    [WIDTH] => 0
    [HEIGHT] => 0
)

Технологии

Архитектор программного обеспечения. Почему это перспективная профессия и как стать профессионалом
2435

28.03.2023

Архитектор программного обеспечения. Почему это перспективная профессия и как стать профессионалом

Познакомились со специалистом международной компании EPAM и узнали подробности о работе архитектора программного обеспечения.


Дмитрий Довнар, 35 лет, город — Астана, архитектор программного обеспечения в компании EPAM

2 (39).png

Как пришел в профессию

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

В EPAM я пришел в 2009 году. Сначала на практику и постепенно стал частью команды. Меня взяли в штат младшим инженером-программистом и я приступил к выполнению реальных задач. За пять лет прошел путь от младшего до ведущего разработчика на платформе .NET. На нескольких крупных проектах выполнял задачи архитектора. Поэтому логичным оказалось развиваться дальше в этом направлении. Уже девять лет я работаю архитектором ПО. И люблю то, что делаю.

Зачем нужен архитектор программного обеспечения

10 лет назад заказчик обращался к производителям программного обеспечения только за специалистами. У него было четкое представление о том, что и как должно быть выполнено.

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

Без архитектора такие вещи делать на порядок труднее, особенно если речь идет о сложных задачах и бизнес-процессах.

О работе архитектора программного обеспечения

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

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

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

1 (36).png

Архитектор работает на стыке профессий: может предложить отличное техническое решение и знает, как его описать, но также понимает, как распланировать работу команды. Он применяет Soft skills, некоторые навыки руководителя команды, проектного менеджера и бизнес-аналитика.

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

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

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

О преимуществах и недостатках

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

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

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

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

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

Что должен знать и уметь архитектор программного обеспечения

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

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

Нужно изучать архитектурные подходы, стандарты проектирования и описания архитектур, иметь опыт написания архитектурных документов.

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

Где учиться на архитектора программного обеспечения

Могу посоветовать несколько хороших книг:

1. Fundamentals of Software Architecture: An Engineering Approach, Neal Ford, Mark Richards. Книга рассказывает обо всем, что нужно знать будущему архитектору, разъясняет основные принципы и подходы, а также указывает на разницу работы инженера и архитектора.

2. Patterns of Enterprise Application Architecture, Martin Fowler. Классический труд одного из самых известных авторов в области проектирования. Здесь собрано более 40 подходов и паттернов для создания больших программных систем.

3. Design of Design, The: Essays from a Computer Scientist, Frederick Brooks Jr. Это не практическое руководство по проектированию, а взгляд на процесс под иным углом. Автор показывает, что нет разницы в проектировании архитектуры компьютера, сложной системы, здания или машины. Во времена автора размеры систем были большими: проектировалось не только ПО, но и вычислительная машина целиком. Поэтому к его мнению стоит прислушаться. Терминология середины 60-х и наших дней может отличаться, но общие принципы актуальны до сих пор.

Прежде всего, архитектор опирается на свой и чужой опыт

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

Прежде всего, архитектор опирается на свой и чужой опыт. Первое достигается ежедневной практикой, а второе — конференциями, митапами и вебинарами. Много интересных идей я почерпнул как раз на мероприятиях. Такие встречи проводятся сообществами EPAM Kazakhstan. Узнать о них можно на Community платформе.

Советы начинающим

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

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

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

Главное — практический опыт и технический кругозор. Всегда пробуйте новое. Обычно разработчики ограничены подходами и технологиями, которые используются на проекте. Выходом может быть создание чего-то своего, чтобы освоить новую технологию, язык программирования или фреймворк. Так вы опробуете технологии в деле и определите для себя их плюсы и минусы. Не останавливайтесь на достигнутом, и у вас все получится.

Меню

Люди WE

Профессионалы

Город 24

Возможности

Наши в мире