Agile, SCRUM, Планирование – что в этом для программистов?

23
Agile, SCRUM, Планирование – что в этом для программистов? Малышкин Фёдор ([email protected] ) 30 ноября 2007

description

Agile, SCRUM, Планирование – что в этом для программистов?

Transcript of Agile, SCRUM, Планирование – что в этом для программистов?

Page 1: Agile, SCRUM, Планирование – что в этом для программистов?

Agile, SCRUM, Планирование – что в этом для программистов?

Малышкин Фёдор ([email protected])

30 ноября 2007

Page 2: Agile, SCRUM, Планирование – что в этом для программистов?

Страница 2 из 23

Введение

Разве не естественно знать как распределяется Ваше время?

На основании чего распределяются заданий? И почему после всех приложенных усилий оказывается,

что проект не укладывается в сроки? Разве не хочется принять участие в данном процессе – в

процессе планирования?

Page 3: Agile, SCRUM, Планирование – что в этом для программистов?

Страница 3 из 23

Терминология

Agile development – подход к разработке программного обеспечения, который среди прочего учитывает такие аспекты как: изменяемость условий, короткие пути между идеей и разработкой и упрощённые процессы общения.

Планирование – попытка плавно подойти к сроку сдачи проекта с готовым продуктом и минимум пролитой крови.

SCRUM – попытка объединить два предыдущих пункта данного глоссария для получения максимума из того минимума времени, что выдаётся на проект. Является конкретным продуктом Agile подхода.

Про Agile дальше упоминаться будет всё меньше и меньше….

Page 4: Agile, SCRUM, Планирование – что в этом для программистов?

Страница 4 из 23

SCRUM в регби

Page 5: Agile, SCRUM, Планирование – что в этом для программистов?

Страница 5 из 23

SCRUM в разработке ПО

Page 6: Agile, SCRUM, Планирование – что в этом для программистов?

Страница 6 из 23

Отличительные черты SCRUM & Agile подходов

Упрощённые методы планирования сложных процессов В то время как старые методы направлены на сохранение

курса – новые на выдачу результата, ценного для бизнеса, всё время…

В то время как условия изменяются всё более быстро и условия становятся всё более сложными – новые методы нацелены на адаптацию к ним.

Всё направляется на взаимодействие людей, а не на использование технологий.

Разработка-тестирование-выдача является основной линией работы (причём «тестирование» - не только отделом качества).

Проектирование по - контракту («Автора!!!»)

Page 7: Agile, SCRUM, Планирование – что в этом для программистов?

Страница 7 из 23

Основные цели введения SCRUM

Принятие новых требование более оперативно, чем с классическими подходами к планированию.

Повышение мотивации участников проекта (спросите автора!!!)

Повышение взаимодействия между заказчиком и исполнителем

Введение новой культуры лидерства, путём изменения ролей в процессе разработки

Передача части ответственности с менеджера проекта конечным разработчикам

Page 8: Agile, SCRUM, Планирование – что в этом для программистов?

Страница 8 из 23

Внимание!!!

В нашей фирме используется комбинированный подход к планированию: часть SCRUM, часть классического проектирования. Нет чётко выделенных ролей – они размыты между многими людьми, а иногда один человек объединяет несколько ролей.

Данное замечание – предназначено для того, что бы не было замечаний, что у нас применяется не «чистый» SCRUM.

Page 9: Agile, SCRUM, Планирование – что в этом для программистов?

Страница 9 из 23

Основные понятия SCRUM

SCRUM основан на таком понятии как Sprint – сфокусированные усилия группа на небольшой участок времени (неделя, 2 недели, но обычно не более месяца)

Page 10: Agile, SCRUM, Планирование – что в этом для программистов?

Страница 10 из 23

Основные понятия SCRUM

Владелец проекта – собирает общие требования к проекту и приоритизирует будущий функционал (своего рода «адвокат дьявола» для группы разработки).

Заказы проекта (project backlog) – результат работы владельца проекта. Это список задач с расставленными приоритетами, из которых самые приоритетные попадают в…

Заказы Sprint’а (sprint backlog) – список задач для реализации в рамках ближайшего спринта.

Scrum группа – группа разработчиков (программисты, дизайнеры, тренеры), которые совместно с владельцем проекта, обсуждают заказы Sprint’a, разбивают его атомарные задачи. Группы обычно самоорганизуемы и каждый обладает определённой ответственностью за взятые на себя атомарные задачи.

Page 11: Agile, SCRUM, Планирование – что в этом для программистов?

Страница 11 из 23

Основные понятия SCRUM

Scrum мастер (Scrum master) – производит постоянную тренировку команды, устраняет препятствия для реализации задач, фиксированных для данного Sprint’а.

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

Page 12: Agile, SCRUM, Планирование – что в этом для программистов?

Страница 12 из 23

Роли

Scrum группа – группа, производящая фактическую работу по реализации функционала спринта. Количество людей в группе в среднем составляет 5-9 человек, что по данным анализов и исследований является наиболее эффективным количеством для реализации подобного рода задач.

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

В группе нет заранее предопределённых ролей (программист, дизайнер, архитектор) – каждый в праве взять на себя какую пожелает роль. Таким образом каждый может быть экспертом какой-то области.

Page 13: Agile, SCRUM, Планирование – что в этом для программистов?

Страница 13 из 23

Роли

Владелец продукта – является представителем заказчика и следит за тем, что бы группа работала в правильном направлении в области бизнес требований.

Следит за актуальностью задач проекта и корректирует его в случае изменения требований.

Документ или ресурс с текущим состоянием списка должен быть доступен рамках всей организации и особенно группы.

Page 14: Agile, SCRUM, Планирование – что в этом для программистов?

Страница 14 из 23

Роли

Scrum мастер – является своего образа тренером, контроллёром проекта и человеком находящимся в курсе всего проекта.

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

После каждого спринта им производится так называемая «Sprint ретроспектива» - рассмотрение принятых решений и достигнутых целей. Цель – повысить знание всех участников проекта о состоянии работы, повысить общий уровень знания и опыта.

Page 15: Agile, SCRUM, Планирование – что в этом для программистов?

Страница 15 из 23

Процесс

1. Создание списка задач проекта – владелец продукта производит сбор требований к продукту, которые являются основными для нового продукта (требования, change-request’ы, новый функционал и баги) .

2. Расстановка приоритетов - владелец продукта расставляет приоритеты для продукта. Расставляет последовательность, в которой данные задачи должны быть реализованы.

3. Определение времени на реализацию – Scrum группа собирается вместе с Scrum мастером и производит анализ первоочередных задач: разделяет их на атомарные задачи и прогнозирует время. Когда задач будет достаточно для первого спринта – формируется список задач спринта и процесс прекращается.

Page 16: Agile, SCRUM, Планирование – что в этом для программистов?

Страница 16 из 23

Процесс

4. Закрепление задач и старт спринта – список задач спринта «замораживается» и команда приступает к работе.

5. Ежедневные Scrum’ы – каждый день в одно и то же время Scrum мастер и Scrum группа встречаются. Цель – устранить препятствия в работе. Каждый участник должен ответить в той или иной форме на 3 вопроса:

1. Что ты сделал со времени последней встречи?

2. Что ты намерен сделать до следующей встречи?

3. Есть ли что-либо, что препятствует тому, что ты задумал?6. Первые два вопроса предназначены для того, что бы все

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

Page 17: Agile, SCRUM, Планирование – что в этом для программистов?

Страница 17 из 23

Процесс

7. Главное в высказывании проблемы – чётко описать проблему и высказать предложение о возможном решении (если конечно идеи о решении есть).

8. Каждый может принимать участие в ежедневном Scrum’е, но только участники Scrum команды и Scrum мастер могут иметь право голоса.

Page 18: Agile, SCRUM, Планирование – что в этом для программистов?

Страница 18 из 23

Демонстрация

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

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

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

Page 19: Agile, SCRUM, Планирование – что в этом для программистов?

Страница 19 из 23

Отличительные черты SCRUM & Agile подходов

Упрощённые методы планирования сложных процессов В то время как старые методы направлены на сохранение

курса – новые на выдачу результата, ценного для бизнеса, всё время…

В то время как условия изменяются всё более быстро и условия становятся всё более сложными – новые методы нацелены на адаптацию к ним.

Всё направляется на взаимодействие людей, а не на использование технологий.

Разработка-тестирование-выдача является основной линией работы (причём «тестирование» - не только отделом качества).

Проектирование по - контракту

Page 20: Agile, SCRUM, Планирование – что в этом для программистов?

Страница 20 из 23

Основные цели введения SCRUM

Принятие новых требование более оперативно, чем с классическими подходами к планированию.

Повышение мотивации участников проекта (спросите автора!!!)

Повышение взаимодействия между заказчиком и исполнителем

Введение новой культуры лидерства, путём изменения ролей в процессе разработки

Передача части ответственности с менеджера проекта конечным разработчикам

Page 21: Agile, SCRUM, Планирование – что в этом для программистов?

Страница 21 из 23

Что делать если группа не успевает?

SCRUM не разрешает откладывать сроки окончания спринта! Удалите часть задач спринта – и заканчивайте оставшиеся задачи…

Page 22: Agile, SCRUM, Планирование – что в этом для программистов?

Страница 22 из 23

Положение в нашей фирме

Спринты – 1 – 1,5 недели (что не есть хорошо, так как не позволяет самой группе разработки планировать свою работу и подготавливать демонстрацию).

Частые переносы сроков окончания спринтов. Часть роли Scrum мастера (касаемо планирования)

перенесена менеджера проекта, остальные аспекты - перенесены на опытных программистов.

Отсутствие чётко сформулированных задач спринта (каждая задача может быть удобным стартом для парных программистов).

Не участие программистов во временной оценке задач при составлении списка задач спринта.

Page 23: Agile, SCRUM, Планирование – что в этом для программистов?

Страница 23 из 23

Вопросы?

? Попрошу мнения «Yandex’а» и «Google» не озвучивать!