Роли и задачи членов команды - AttractorSchool/ESDP-AP-10-1 GitHub Wiki

Процесс работы команды

В процессе работы вы будете разделены на определенные роли. Всего ролей три:

  1. Капитан
  2. Аналитик
  3. Разработчик

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

Основные задачи капитана

  1. Обеспечивать прогресс команды: постоянно следить за работой каждого участника команды, убеждаться, что работа движется, и если работа встала, то подключаться и помогать решать возникшую проблему до момента пока работа опять не пойдет. Подключаться капитан может как к разработчику, так и к аналитику. Привлекать ментора или других экспертов к решению проблемы в случае необходимости.
  2. Принимать наиболее активное участие в проектировании решения задачи.
  3. Принимать работу разработчика, давать обратную связь по созданным артефактам (программный код, коммиты, тикеты, документация).
  4. Постоянно отслеживать изменения состояния задач в проекте. Проверять с помощью ручного или автоматизированного тестирования те функции, которые помечены аналитиком, как уже разработанные.
  5. Во время и после встречи с заказчиком в паре с аналитиком расставлять приоритеты задачам, выявлять наиболее важные требования, которые в первую очередь будут реализованы на текущей фазе проекта.
  6. Следить за выполнением правил принятых в команде, делать замечания другим участникам при нарушении правил.
  7. Вести отчеты о посещаемости команды и прогрессе за неделю (итерацию).
  8. Составлять отчет для ментора и команды о результатах и процессе итерации.
  9. Составлять план и репетировать демонстрацию разработанного функционала перед встречей с заказчиком.
  10. Работать в паре с разработчиком над задачей, или работать самостоятельно над другой задачей, если основные обязанности реализованы.

Основные задачи аналитика

  1. Постоянное взаимодействие с заказчиком: обеспечивать коммуникацию с заказчиком любыми доступными средствами (телефон, почта, телеграмм), своевременно получать ответы на возникающие вопросы, довыяснять требования.
  2. Вести протоколы встреч с заказчиком: использовать диктофон для записи встреч, при необходимости записывать текстом наиболее важные моменты.
  3. Подготовка к встречам с заказчиком: составлять перед встречей список вопросов к заказчику, а после встречи составлять текстовый отчет о встрече с вопросами ответами заказчика. Сохранять в документации проекта после встречи все артефакты встречи со всеми требования из всех источников (аудио и видео-записи встречи, фотографии записей на бумаге и маркерной доске и т.д.)
  4. Сбор и анализ требований: записывать требования в виде тикетов в issue-трекере (функционал для хранения задач в проекте). В идеальном случае требования должны быть формализованы в виде сценариев тестирования. Формализованные требования обязательно должны быть согласованы с заказчиком до того, как программист приступит к реализации.
  5. Определение критериев приемки задачи: составлять сценарии тестирования и другие критерии приемки.
  6. Принимать работу разработчика: давать обратную связь по тикету. Убеждаться, что выполненная разработчиком работа соответствует критериям приемки, описанным в тикете.
  7. Принимать наиболее активное участие в демонстрации результатов работы заказчику.
  8. Помогать капитану создавать отчет о выполненной работе и результатах итерации.
  9. Планировать следующую итерацию совместно с капитаном.
  10. Работать в паре с разработчиком над задачей, или работать самостоятельно над другой задачей, пока нет других дел.

Основные задачи разработчика

  1. Оценивать время, необходимое для выполнения задач, перед выполнением задачи и фиксировать оценку в тикете.
  2. Проектировать задачи совместно с аналитиком и капитаном.
  3. Прототипировать решение в случае неопределенности.
  4. Решать задачи по текущей фазе работ, беря новые задачи в соответствии с рабочим планом в issue трекере.
  5. Вести записи о наблюдениях и прогрессе, каждый день записывать свой прогресс.
  6. Если в процессе работы над какой-либо задачей или проблемой были найдены внешние источники с описанием путей решения, обязательно сохранять ссылку в тикете.
  7. Составлять план реализации своей задачи и следовать ему.
  8. Своевременно сообщать капитану команды о проблемах и возникающих вопросах по функционалу.
  9. Прежде, чем передавать аналитику на тестирование разработанную часть функционала, самостоятельно убеждаться в ее соответствии критериям приемки.
  10. Записывать в тикет время, затраченное на решение задачи. В случае, если на задачу потрачено гораздо больше времени, чем было запланировано, описать причины задержки.
  11. Работать в паре с капитаном команды и другим(и) разработчиком(-ами) для достижения результата.

Общие требования ко всем участникам команды

  • Активно участвовать в коммуникации внутри команды, с ментором и с заказчиком.
  • Своевременно сообщать команде о проблемах в ходе своей работы.
  • Если кажется, что в результате коллективно принимаемых решений в будущем могут возникнуть проблемы - не умалчивать это, а сообщать всей команде.
  • Своевременно предупреждать команду об изменениях в своих планах (отсутствие на занятиях, невозможность приступить к решению задач).
  • Не бояться обращаться за помощью по любым вопросам, даже если кажется, что проблема тривиальна.
  • Не отказывать в помощи другому участнику команды. В парной работе следить за тем, чтобы у обоих в паре существовало общее понимание проблемы и путей ее решения.
  • Честно оценивать время выполнения задач, стараться давать оптимальную оценку - не слишком пессимистичную и не слишком оптимистичную. Избегать спешки, суматохи, но и не застревать.