Комментарии
Я решил сделать небольшие репортажи, как у нас происходит работа над проектами. Не секрет, что мы используем Scrum при работе над более-менее крупными проектами.
Scrum в интернет-агентстве/web-студии: взгляд изнутри
Я решил сделать небольшие репортажи, как у нас происходит работа над проектами. Не секрет, что мы используем Scrum при работе над более-менее крупными проектами.
Владимир Завертайлов
Владимир Завертайлов

Scrum — создание программного продукта кросс-функциональной командой, разделённое на временные стадии (спринты), с учётом регулярно обновляемых чётко расставленных приоритетов. Члены команды на протяжении спринта ежедневно устраивают обсуждения — «митинги». Ключевые в скрам-проекте люди — «владелец продукта», он же представитель заказчика, и скрам-мастер, который следит за соблюдением принципов Scrum и модерирует дискуссии. Каждый спринт, являющийся полноценным циклом работ от планирования до тестирования, теоретически выливается в очередную промежуточную ревизию продукта.

Вообще использование scrum для web-студий — довольно нетипичная тема. Но у нас он прижился. В первую очередь потому, что мы делаем технически сложные проекты, а работу (для ускорения процесса) организовали по командам. Конечно, добавляется ряд накладных расходов, но в целом команда из 2-х человек может сделать проект в 1.5-2.5 раза быстрее, чем программист в одну рожу в одиночку. А еще это сильно мотивирует.

Итак, что есть в scrum:

  1. Планирование итерации (спринта). Как правило, мы планируем работу команды (и бюджет) на ближайшие 1-4 недели. После завершения каждого спринта заказчик получает полностью оттестированный и рабочий проект с приростом функциональности. Плюсы подхода: можно очень гибко корректировать бюджет на большой проект, прямо по ходу работ + заказчик получает результат быстрее, чем это было бы при обычной разработке.
  2. Ежедневные митинги (Daily Meeting).
  3. Демонстрация проекта заказчику.
  4. Ретроспектива.

Есть там и еще кое-какие артефакты, но эти пожалуй основные.

Сегодня у нас как раз стартует третий спринт проекта.

Стартуем третий спринт

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

Как идет планерка:

1. Вся проектная команда (в данном случае — два разработчика и руководитель проекта) собирается в одном помещении, у одного компьютера. Тестировщика и дизайнера не зовем, так как проект слишком технический, однако задачи на дизайн выставляем сразу по ходу планирования. Замечу, что у нас нет отдельного scrum-мастера. В нашем случае эту роль совмещает менеджер проекта (Product Owner). Но про это чуть подробнее в следующий раз.

Ставим задачи на спринт

2. Далее, мы все вместе читаем ТЗ, пункт за пунктом. Каждый пункт переносим в виде тикетов (карточек), на нашу доску задач, чертовски похожую на Канбан. Мы используем JIRA с плагином GreenHoper.

Про доски для канбан
(Многим командам нравится использовать физические доски. Соглашусь, в этом есть определенный кайф, и мы тоже используем физические канбан-доски, но для других проектов/задач. Кстати, если у кого-то проблема с отклеивающимися листочками, рекомендую попробовать пробковые доски и кнопки. Кайф от фтыкания кнопки в такую доску — такой же, как от лопанья полиэтилена с пупырышками).

3. По каждой задаче идет короткое обсуждение. Цель — выработать одинаковое понимание задачи у всех членов команды, составить перечень одинаковых критериев приемки.

Обсуждаем задачи

4. Далее мы выставляем оценки, используя Planning Poker карты.


[тут есть немного видео по хитрым способам оценки проектов, в том числе — про покер]

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

Отмечаем уже оцененные задачи

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

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

7. Для оперативного обсуждения проекта мы создаем специальную группу в Skype, в которой присутствуют только разработчики, менеджер проекта и тестеровщик. В названии группы — записываем время стендапа (когда у нас будут проходить Daily Meeting). Можно даже прикрепить аватарку с проектом в группу, или картинку с дедлайном — очено наглятно ;-) Плюс в том, что информацию можно получать довольно оперативно, и нет необходимости выдергивать людей из потока.

Фаза планирования итерации занимает по-разному, но обычно это около 5% от спринта (то есть на планирование 2-х недельной работы нужно закладывать 4 часа времени команды).

В следующий раз покажу, как у нас проходят Daily Meeting.