Найти в Дзене
Master Jedi

Кто все эти люди? Роли в процессе разработки ПО

В предыдущей статье я описал с чего обычно начинается процесс разработки ПО, а также упомянул про состав команды разработки. В данной статье я постараюсь более подробно рассказать про эти роли, чем они занимаются, с кем взаимодействуют и как ими становятся. Руководитель проекта Человек в этой роли является связующим звеном между различными ролями внутри команды разработки, а также между командой разработки и заказчиками (внешними или внутренними). Он занимается планированием работ по проекту, контролем ключевых показателей (сроки выполнения задач, эффективность команды и т.п.), ведёт отчётность (например по затраченному времени для выставления счетов заказчику). Как правило руководители проектов вырастают из других ролей, чаще всего из аналитиков, реже из разработчиков и тестировщиков. Руководитель проекта обязан владеть различными специальными инструментами и методологиями для планирования и ведения работ: Jira, MS Project, Kanban, Scrum, Agile (про всё это не буду писать, т.к. знание
Оглавление

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

Руководитель проекта

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

Руководитель проекта обязан владеть различными специальными инструментами и методологиями для планирования и ведения работ: Jira, MS Project, Kanban, Scrum, Agile (про всё это не буду писать, т.к. знание этого не требуется для того чтобы начать разрабатывать ПО). Также от него требуется быть хорошим менеджером, уметь эффективно организовывать слаженную работу множества людей, понимать потребности бизнеса.

Как правило, это одни из самых высокооплачиваемых людей в команде.

Архитектор

-2

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

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

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

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

Аналитик

-3

Описание функциональных требований (ФТ) (или техническое задание) для разработки ПО необходимо также как чертёж для строительства дома. Данным описанием, или правильнее сказать формализацией бизнес-требований занимается аналитик ПО. Разработчики и тестировщики ПО используют именно ФТ как входные данные для разработки и тестирования программы соответственно.

В ФТ описываются все объекты, их атрибуты, связи между ними, описание алгоритмов, интерфейсов, взаимодействий и т.п. Грамотно, понятно и чётко написанные ФТ - это уже 50% от успеха проекта.

Хороший опытный аналитик как правило получает зарплату на уровне разработчика. Аналитиками становятся либо с нуля, либо иногда вырастают из тестировщиков.

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

Разработчик

-4

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

Разработчик должен знать и уметь применять множество различных методологий, фреймворков, библиотек, инструментов и много другого для разработки ПО. Также он должен знать основные стандарты, принципы, шаблоны разработки ПО, протоколы, СУБД. Обычно разработчик знает несколько языков программирования (ЯП), поскольку даже в не очень больших проектах может использоваться не один, а два или даже больше различных языков. Но, как правило, у разработчика всегда есть какой-то один основной ЯП, который он знает лучше всего.

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

Тестировщик

-5

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

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

Тестировщики как правило обучаются с нуля, а затем могут перейти в принципе в любую другую роль (чаще всего в аналитику, реже в разработку и менеджмент).

Зарплаты тестировщиков (особенно тех, кто умеет тестировать только руками без знания средств автоматизированного тестирования) значительно ниже зарплат других ролей (в среднем в 1,5-2 раза).

Заключение

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

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