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

1
6289

Статья посвящена этапам становления архитектором ПО. Первая из серии статей, посвященных этой тематике. Начни с неё и может ты захочешь пройти этот путь!

Есть ли жизнь после 45

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

Существует несколько возможностей карьерного роста, которыми разработчики могут воспользоваться:

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

Да, вот это мой путь

За последние восемь лет, я вначале работал с Java EE, затем перешел на работу с iOS и стал тим лидом. Я был руководителем различных команд разработчиков и работал с различными стеками технологий, включая Android и Web стеки. Создал архитектуру сетевого уровня взаимодействия для нескольких сервисов, разрабатываемых компанией, с помощью сокетов и REST API. За это время работы я познакомился с ролью управленца и с перспективами развития в этом направлении, при том, что позицию тим лида занимал уже более двух лет. На своей следующей позиции, моей целью является быть архитектором ПО.

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

Кто может извлечь выгоду из этого?

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

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

Кто же такой этот архитектор?

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

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

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

Во-первых, давайте рассмотрим характерные черты архитектора:

  • Коммуникабельность. Разговаривая со многими архитекторами программных решений, я все время слышал, что коммуникабельность является одной из наиболее важных особенностей архитектора. В течении рабочего дня они разговаривают с заказчиками на языке бизнеса, управленцами любого уровня, бизнес-аналитиками и разработчиками. Если в вас присутствует природная харизма и вы знаете как убеждать людей, то это будет гигантским плюсом для вас, так как очень важно уметь объяснять свои действия корректно. Архитекторы – это лаконичные, красноречивые и компетентные спикеры. Архитектор, с которым я разговаривал имеет отлично развитые навыки коммуникации и убеждения. Еще одной причиной, почему навык коммуникации очень важен является то, что роль архитектора требует от него принимать участие в большинстве дискуссий, и зачастую, компромисс должен быть достигнут с учетом, что результат дискуссий должен удовлетворять всем его участникам, то есть быть приемлемым и выгодным для всех.
  • Широкий и глубокий уровень технических знаний. Это должны быть очевидно, так как никто, например, с медицинским бэкграундом, не сможет стать архитектором программных решений. Вдобавок, архитектор, чаще всего обладает знаниями нескольких технологических стеков, и при этом на довольно приличном уровне, а также должен иметь хорошее представление об еще нескольких. Архитектор также должен быть готов к тому, что ему придется составлять огромное количество технической документации, отчетов и диаграмм.
  • Ответственность. Вы должны понимать, что решения архитектора чаще всего стоят очень дорого. Поэтому человек на данной позиции берет на себя большое количество ответственности и должен подходить к своей работе и решениям также ответственно. Если ошибка разработчика стоит нескольких дней работы одного человека, то ошибка архитектора может стоить нескольких лет человеко-часов работы, если проект сложный!
  • Стрессоустойчивость. Эта должность подразумевает, что вы будете принимать решения, а значит, что вы будете задавать вопросы и вам необходимо получать на них ответы. Вы будете работать с различными людьми из разных сфер, и вам придется привыкнуть к тому, что требования могут быстро поменяться или даже условия ведения бизнеса могут измениться. Исходя из этих причин, вы должны быть готовы к стрессовым ситуациям и вам следует научиться скрывать свои негативные эмоции. Эмоциям, в принципе, нет места на работе. Работа всегда намного приятнее, если приносит вам только положительные эмоции. Поэтому, если вы выбрали эту должность только из-за денег, то еще раз хорошо подумайте.
  • Управленческие способности. Сюда входят как организационные, так и управленческие способности. Способность руководить командой, которая может состоять из абсолютно разных специалистов, это очень полезный навык.
  • Аналитические способности. Даже если специалист имеет очень широкий кругозор технических знаний, он испробовал различные технологии в своих личных проектах или принимал участие в различных совместных проектах, это не гарантирует, что он сможет легко изменить образ своего мышления и рассуждать как архитектор. Одной из наиболее важных задач является способность объяснять абстрактные проблемы в форме некоторых конечных реальных объектов системы, которые разработчики, в свою очередь, оценивают, проектируют и разрабатывают. Отличные навыки коммуникации являются необходимостью для того, чтобы понятно объяснять абстракции в форме конечной системы для всех участников команды и заказчика. Всегда есть необходимость в уравновешивании, так называемой «чаши весов». На одной стороне этой чаши находится бизнес составляющая, а на другой располагается, непосредственно, разработка. Архитектору необходимо соблюдать баланс, основываясь на требованиях обоих сторон.

Если мы говорим об обязанностях архитектора, то есть отличный пример из 19 века, суть которого заключается в конструкции моста. В то время тестирование новопостроенных мостов состояло из следующего: ответственные за постройку моста инженеры, архитекторы вставали под мост и находились там, пока первые машины проезжали по нему. Получается, что они отвечали за прочность конструкции своими жизнями. Итак, если у вас возникает вопрос – за что отвечает архитектор программных решений в проекте? То ответ будет таким – он отвечает за все.

Если убрать все громкие и красивые фразы, то работа архитектора включает в себя:

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

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

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

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

  • Изучить несколько стеков технологий и опробуйте их на практике. Мои текущие знания сконцентрированы только в области iOS разработки. Следует попробовать Android, несколько серверных языков, начать работу с Python, и освежить знания Java EE. Архитектор – это специалист широкого профиля (full-stack developer), поэтому очень важно иметь большой объем технических знаний.
  • Читайте литературу. Очень важно, определить для себя некоторое количество значимых книг и статей, которые будут помогать вам развиваться в этом направлении. Обычно, самым простым способом найти подобную литературу – это спросить у профессионалов в этой области, чтобы получить их рекомендацию. В одной из следующих статей, я планирую привести список такой литературы.
  • Найдите наставника. Желательно найти архитектора программных решений на вашем текущем месте работы. Зачастую, проще получить опыт от уже натренированного специалиста, чем начинать рассматривать каждую из областей с нуля. Очень важно быть подготовленным по части задавания вопросов своему наставнику, так как глупые вопросы никому не нравятся.
  • Проходите курсы, получайте сертификаты. Существует множество различных курсов и сертификатов, но лишь немногие стоят своих денег, а курсы по высокоуровневым технологиям стоят больших денег. Лично для себя я прошел несколько курсов, посвященных становлению архитектором, на Luxoft (http://www.luxoft-training.com/it-course/ARC-001/), которые полностью оправдали потраченные на них средства. Очень важно, чтобы лектор был профессионалом своего дела и мог спокойно ответить на любой вопрос из этой области. Что касается сертификатов, перед началом, лучше разобраться, а будет ли котироваться тот или иной сертификат, авторитетна ли та система, которая их выдает, среди архитекторов программных решений, и стоит вообще его получать. Эту проблему я рассмотрю следующей статье этой серии.

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

Проверьте свой уровень готовности

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

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

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

Стояние на одном месте в области IT – это есть синоним слову стагнация и личной скованности в жизни.

Другие статьи по теме

4 ключевые ошибки при построении карьеры в IT-сфере
Отказ после собеседования: как стоит реагировать
Дайджест материалов по трудоустройству в сфере IT
Готовимся к собеседованию в Google: 8 месяцев непрерывной работы

Ссылка на оригинальную статью
Перевод: Александр Давыдов




1 комментарий

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