Не разработчиками едиными
Программисты и разработчики
Напомним, что в прошлый раз мы с Андреем обозначили 5 must-have ролей, без которых не обходится ни одна проектная IT-команда, и детально разобрали три из них — Аккаунт, Руководитель проекта и Аналитик.
Предлагаем продолжить разговор с момента, на котором остановились: разработчик не равно программист. А именно, программист – создатель технологической ценности, создающий наиболее совершенные и оптимальные алгоритмы. Разработчик же – создатель бизнес-ценности. Он создает новые свойства разрабатываемой системы творчески, и при этом нацелен на наиболее эффективное решение бизнес-задач заказчика.
Да, конечно. У каждого разработчика в арсенале имеются свои технологии, языки программирования и платформы. Все это вместе называется стеком технологий, которым владеет разработчик. Разработчики также могут различаться и по смыслу решаемых задач.
На самом деле, сложно сказать, кем станет разработчик. Наиболее вероятный вариант развития — рост до руководителя команды (тимлида). Тимлид (team leader — капитан, руководитель команды) — это лидер группы разработчиков. Ему необходимо иметь опыт в разработке и организации работы команды, а также быть грамотным менеджером и мотивировать команду на достижение цели. Это самая очевидная, но далеко не единственная ступень карьерной лестницы разработчика. Разработчик, как показывает практика нашей компании, может дорасти до архитектора программного обеспечения (ПО).
Можно сказать, это суперразработчик. Архитектор проектирует сложные IT-системы и задает стандарты разработки, и ему не обойтись без должного опыта, широкого кругозора и глубокого уровня технических знаний.
Следующим к работе приступает Тестировщик. Его задача — смоделировать различные ситуации, которые могут возникнуть при работе приложения, и выявить вероятные ошибки и сбои в функционировании. Можно сказать, это профессиональный взломщик, и, если им обнаружены дефекты, приложение возвращается на доработку разработчикам.
Совсем недавно желающие попасть в разработку начинали свой путь в IT с тестирования ПО, но наш взгляд, рост до аналитика более логичен, чем переход в разработку. Все дело в разной логике процессов разработки и тестирования.
Сейчас на рынке ценятся тестировщики, которые умеют выполнять нагрузочное тестирование и реализовывать алгоритмы регрессионного тестирования. Суть нагрузочного тестирования заключается в проверке работоспособности системы при стандартных нагрузках, чтобы определить максимально возможный пик, при котором система работает стабильно. Регрессионное тестирование проверяет, не поломают ли систему новые функции и улучшения.
С основными ролями разобрались. Кто еще может быть вовлечен в работу над созданием программного обеспечения?
Например, кто пишет инструкции для пользователей?
Это задача технического писателя. Также он готовит всю техническую документацию по проекту. Его обязанности близки к обязанностям аналитика. То есть технический писатель формирует из всего, что собрали аналитики, комплект технической документации (техническое задание, технический проект, руководство пользователей и т.д.). Если технический писатель работает над материалом для пользователей, то сначала он работает с ПО как пользователь, а затем уже пишет инструкцию по эксплуатации приложения.
Мы считаем, что удобство использования так же важно, как и внешний вид конечного продукта, потому у нас даже есть своя студия дизайна.
Дизайнеров, которые отвечают за красоту продукта и занимаются отрисовкой пользовательского интерфейса, называют UI-дизайнерами: они подбирают цвета, шрифты, стиль, оформление и проектируют интерфейс продукта (отсюда и название — User Interface, дословно «пользовательский интерфейс»). А есть дизайнеры, которые отвечают за удобство использования приложением и решение пользовательских задач — это UX-дизайнеры (User Experience, дословно «опыт пользователя»). Например, можно сделать 30 красивых кнопочек на одной форме, но пользоваться ими будет невозможно. А можно сделать одну, которая сделает всё, что нужно.
Как правило, нет. Системы стали большими и сложными, и уже давно проектирование пользовательского опыта — задача не для новичка (который, как правило, начинает с проектирования интерфейса и постепенно дорастает до UX-дизайнера). В нашей компании мы стараемся четко разделять UI и UX.
Хорошо. Программный продукт создан и передан заказчику.
Кто-то из компании может его сопровождать, помогая использовать продукт с максимальной пользой?
Да, иногда в проект подключается системный администратор, если по контракту предполагается не только создание, но и внедрение программного продукта, сопровождение в процессе эксплуатации. В его обязанности входит создание оптимальной инфраструктуры (установка, настройка, подключение всего, чтобы заработало), мониторинг сбоев и реагирование на них.
Как правило, системный администратор выполняет функции в целом в рамках компании. Однако, обязанности системных администраторов могут сильно отличаться в зависимости от компании. К проектам же чаще всего мы подключаем не просто системных администраторов, а DevOps-инженеров.
Если коротко, то DevOps-инженер — это специалист, выполняющий функции Development и Operations. Development — это программирование. Operations — это административные функции (собрать проект, опубликовать его, установить и так далее).
DevOps — это набор практик, которые позволяют автоматизировать администрирование. DevOps-инженеры занимаются тем, что разрабатывают скрипты и наборы команд, которые позволяют избежать ручных операций администрирования при разработке, внедрении и сопровождении программных продуктов.
С данными можно работать по-разному. Если рассматривать с точки зрения обеспечения к ним доступа, безопасности и хранения, то эти функции выполняет администратор баз данных (БД). Если необходим анализ данных, то этим обычно занимаются аналитики данных.
Например, в работе над крупными проектами без администратора БД не обойтись, потому что объем данных может быть просто колоссальным. На его плечи ложится обязанность проектирования структуры хранения данных и обеспечение функционирования базы данных. Администратор БД контролирует работу сервера и обеспечивает бесперебойный доступ пользователей к базе. Также он несет ответственность за безопасность БД.
Аналитики данных занимаются исследованием массивов данных, поиском закономерностей в них и причинно-следственных связей. Результаты их работы становятся основой для инструментов автоматизации процессов принятия решения и выполнения рутинных операций.
Поскольку мы работаем с государственными компаниями, вопрос безопасности зачастую критически важен. В нашем случае, специалист по информационной безопасности (ИБ) разбирается в российском законодательстве в части безопасности информационных систем. В его обязанности входит установка, настройка и сопровождение технических средств по защите данных информационной системы. На мой взгляд, это довольно узкая область, которая сейчас набирает обороты, так как спрос на таких специалистов превышает предложение.
Если говорить о карьерной лестнице, специалист по ИБ должен обладать знаниями системного администратора и системного аналитика. Ему необходимо понимать, из чего состоит система, как взаимодействуют между собой компоненты, и где потенциально могут возникнуть угроза безопасности. Поэтому, если специалист имеет опыт работы в одной из этих ролей и получил образование в области ИБ, он вполне может справляться с ролью специалиста по ИБ.
Я бы сказал, что аналитиков и разработчиков. Разработчик — это специалист, который создает непосредственно исходный код программного продукта. Все остальные отвечают за предварительную подготовку и проектирование информационной системы в целом, а также за контроль качества и сопровождение на выходе.
Несмотря на то, что в обязанности некоторых из перечисленных ролей не входит написание и разработка кода напрямую, знания того, как создается и проектируется программный код, из чего состоит работа разработчика —важны. Почему? Судя по нашей практике, из тех специалистов, которые знают основы программирования, формируются более тесные команды, потому что они лучше понимают друг друга и говорят на одном языке.
Большое спасибо за ответы на наши вопросы. Благодаря Вам многие читатели определятся со своим дальнейшим путем в IT-отрасли. Какое наставление, на Ваш взгляд, необходимо новичку? Что бы вы порекомендовали?
В первую очередь, не идите в IT только ради денег. Если Вы приходите ради денег, вы сможете получить их в краткосрочном периоде, но в долгосрочном мотивации «хочу денег» не достаточно: профессиональное выгорание среди IT-специалистов происходит в том числе и по этой причине. Ищите другие цели.
Если Вы уже определились и намерены связать свою жизнь с IT, помните сфера многогранна и развивается так же быстро, как и технологии. Потому учитесь постоянно и следуйте за изменениями оперативно, чтобы оставаться востребованным и высокооплачиваемым специалистом.
Если вы не читали первую часть интервью, вот она.
Если вы еще не решили, по силам ли вам стать частью ИТ-сообщества, пройдите наш тест на Junior Java Developer.
авторизуйтесь