Зона ответственности каждого участника проектной команды определяет и его роль в разработке ПО. Как в любом деле, в команде разработки есть основной состав — ключевые игроки, без которых проект не двинется дальше.
Менеджер
Успех проекта во многом зависит от качественного планирования, при котором каждый участник команды хорошо понимает общую цель, свои задачи, а ещё учитывает сроки и ограничения. Планирование работы требует времени и сил, и, чтобы команда ничего не упустила, эту задачу на себя берёт отдельный человек — менеджер.
Менеджер проекта (project manager, PM, он же проджект, он же руководитель проекта, РП или просто менеджер) — участник команды, который отвечает за то, чтобы проект был успешно завершён в срок.
Как определить успешность проекта? По довольным пользователям и заказчикам? Это относительный критерий, ведь для пользователей успех проекта — приложение, которое решает их проблемы. Заказчики же могут оценивать успешность по-другому, поэтому для определения эффективности в управлении проектами используют «проектный треугольник». Он строится на принципе:
Вся запланированная функциональность → должна быть реализована в оговорённые сроки → в рамках согласованного бюджета.
Что именно менеджер делает для того, чтобы успешно и вовремя завершить проект:
- Планирует работы — составляет план, в котором указано, кто, что и когда делает.
- Контролирует исполнение плана — «Всё ли у нас в порядке? Идём по графику? Что нужно сделать, чтобы войти в график, если отстаём?»
- Управляет рисками на проекте — думает о том, что может пойти не так, и имеет «план б» на этот случай.
- Отвечает за коммуникацию в команде и вне её (согласование, улаживание конфликтов и прочее).
- Решает проблемы, которые угрожают успеху проекта.
Менеджер участвует во всех этапах создания ПО: от разработки идеи до запуска проекта и его дальнейшей поддержки. Когда идея и цели проекта сформулированы, в работу включается системный аналитик.
Системный аналитик
Системный аналитик — специалист, который разрабатывает требования к программному обеспечению. Системный аналитик участвует в большинстве этапов разработки программного обеспечения, но в первую очередь его основная задача — описать требования к ПО. Эту работу он проводит, когда проектная команда находится на первых двух этапах разработки (анализ и проектирование).
Обязанности системного аналитика:
- Собрать и описать подробные требования к будущему продукту (сформулировать, что должно делать ПО).
- Изучить различные документы и источники данных (стандарты, документацию, электронные базы и прочие).
- Спроектировать решение (сформулировать, как должно работать ПО).
- Ответить на вопросы команды и пользователей в процессе разработки ПО, внести уточнения и правки.
- Задокументировать результаты разработки (например, написать руководство пользователя).
Разработчики
После того, как системный аналитик собрал требования к продукту, спроектировал этот продукт и согласовал его со всеми заинтересованными лицами, проектом начинает заниматься разработчик.
Разработчик — это специалист, который создаёт и развивает ПО с помощью языков программирования.
Язык программирования используется для взаимодействия человека и компьютера. Так же, как у человеческих языков, у языков программирования есть свой алфавит, синтаксис и грамматика. Благодаря правильному набору символов и знаков компьютер понимает, какое именно задание ему дал разработчик, и выполняет его в соответствии с программой.
Проще говоря, разработчик пишет программный код. Именно он, например, отображался в виде бегущей зелёной строки в фильме «Матрица».
Разработчика, как и системного аналитика, можно назвать переводчиком. Только системный аналитик переводит язык пользователей на язык проектной команды, а разработчик — язык проектной команды на язык программирования.
Всю разработку можно условно разделить на две группы:
- Frontend-разработка
- Backend-разработка
Frontend-разработчик отвечает за визуальную (клиентскую) часть программного обеспечения, с которой взаимодействует пользователь. Эта часть называется графический пользовательский интерфейс.
Чтобы описать внешний вид всех элементов интерфейса и придать ему интерактивность, frontend-разработчик использует специальные языки программирования и разметки (например, HTML, CSS, JavaScript), библиотеки и фреймворки (React, Angular и другие).
Основные обязанности frontend-разработчика:
- Сделать интерфейс таким, каким его изобразил на макете дизайнер.
- «Оживить» интерфейс — например, сделать так, чтобы при наведении курсора выпадало меню, а пропуски в форме для заполнения подсвечивались красным, если пользователь оставил обязательные поля пустыми.
- Сделать так, чтобы введённые пользователем данные передавались на сервер для обработки, а данные, полученные от сервера в ответ, корректно отображались у пользователя.
- Сделать интерфейс адаптивным, то есть подстроить его не только под разные браузеры, но и под различные устройства.
- Найти и устранить ошибки в работе клиентской части ПО.
Backend-разработчик отвечает за серверную часть программного обеспечения, которая хранит и обрабатывает информацию. Напрямую пользователь не взаимодействует с серверной частью и отправляет ей команды через интерфейс (кнопка «Поиск», например, — команда серверной части о том, что нужно выполнить поиск по базе данных с учётом применённых фильтров).
Клиентской частью автомобиля, к примеру, можно считать элементы, которые позволяют водителю управлять машиной: руль, педали, рычаг переключения передач, приборную панель. «Серверная часть» — то, что скрыто под капотом и обеспечивает выполнение команд водителя — двигатель, коробка передач, рулевая рейка и прочие детали.
Backend-разработчик владеет одним или несколькими серверными языками программирования (например, Python, Java, C#, C++, PHP), языками для управления данными (SQL, GraphQL) и другими необходимыми инструментами.
Основные обязанности backend-разработчика:
- Обеспечить формирование и ведение базы данных, с которой работает приложение.
- Разработать алгоритмы обработки данных.
- Сделать так, чтобы серверная часть приложения взаимодействовала с клиентской или с другими приложениями.
- Найти и устранить ошибки в работе серверной части ПО.
Существуют также fullstack-разработчики, которые совмещают навыки и знания frontend-разработчика и backend-разработчика, а значит, могут выполнять любые задачи. У такого специалиста есть свои плюсы и свои минусы. С одной стороны, fullstack-разработчик универсален и может закрывать любые задачи по разработке. С другой стороны, отдельные frontend- и backend-разработчики, как правило, обладают более глубокой экспертизой в своей области.
Тестировщики
Когда разработчик выполнил свою задачу — написал с нуля или доработал программный код, — результаты его работы нужно проверить. Действительно ли написанный код делает то, что требуется? Конечно, ответственный разработчик и сам проверяет свой код, но, для того, чтобы убедиться, насколько качественно будет работать ПО во всех возможных сценариях использования, нужно привлечь соответствующих специалистов — инженеров по тестированию (QA-engineer) или тестировщиков.
Инженер по тестированию — это специалист, который отвечает за выполнение работ по обеспечению качества и, как следствие, — за конечный продукт. Он проверяет, работает ли всё так, как задумано, выявляет ошибки и сбои, сообщает, надо ли их исправить.
Основные задачи инженера по тестированию:
- Описать проверяемые сценарии использования ПО.
- Проверить эти сценарии вручную или с помощью специальных инструментов для тестирования.
- Зафиксировать возникшие ошибки и оценить, насколько они влияют на работу ПО.
- Убедиться в том, что все критичные ошибки исправлены и теперь ПО работает как надо.
Под конец разработки именно инженер по тестированию даёт добро на выпуск продукта — подтверждает, что продукт достаточно качественный и им можно пользоваться. Поскольку сразу и навсегда достичь идеала невозможно, цель QA — обеспечить приемлемый для конкретного продукта уровень качества. Например, в медицинских и финансовых организациях требования к качеству ПО будут выше, чем в случае с веб-сайтом о кошках.
Чтобы лучше понять работу тестировщика, попробуйте придумать пять условий, при которых человек может пойти в магазин за молоком и не купить его.
Без этих участников проектной команды разработку ПО вряд ли удастся довести до ума, но иногда для успеха проекта может потребоваться больше ведущих игроков. Кого и в каких случаях дополнительно привлекают к работе над проектом, вы узнаете в следующем уроке. А пока закрепите знания об основной команде.