solit 2014, scrum для большого проекта. Как это работает на...

36
Константин Слисенко JazzTeam Scrum для большого проекта Как это работает на практике

Upload: solit

Post on 01-Nov-2014

165 views

Category:

Technology


1 download

DESCRIPTION

Слисенко Константин, Минск. Компания JazzTeam, Senior Software Engineer «Scrum для большого проекта. Как это работает на практике». Development секция. Agile отделение. «MapReduce и машинное обучение на Hadoop и Mahout». Development секция. Для разработчиков. Высокий уровень подготовки.

TRANSCRIPT

Page 1: Solit 2014, Scrum для большого проекта. Как это работает на практике, Слисенко Константин

Константин СлисенкоJazzTeam

Scrum для большого проектаКак это работает на

практике

Page 2: Solit 2014, Scrum для большого проекта. Как это работает на практике, Слисенко Константин

О проекте❏ CRM-система❏ 73 региона, 20 тыс пользователей,

60 миллионов клиентов❏ Распределенная команда ~100

человек (большая часть в Москве)❏ Сочетание Scrum, Agile и

традиционных методологий❏ Поставка в прод новой версии

каждые 2 недели❏ Основа - коробочный продукт

Amdocs CRM CRM 8.1

Page 3: Solit 2014, Scrum для большого проекта. Как это работает на практике, Слисенко Константин

Почему Agile/ScrumПервое внедрение❏ Строительство нового здания для центра обслуживания

клиентов, закупка нового оборудования, мебели и т.д.❏ Закрытие маленьких региональных офисов, перевод

сотрудников в новое здание

Новый центр должен работать на нашей CRM!Дата запуска центра чётко обозначена!

Реальный пример agile-заказчика:❏ Важна работающая версия в конце каждой короткой

итерации чтобы в любой момент начать внедрение❏ Если не укладываемся в сроки - режем скоуп❏ Активная заинтересованность в процессе разработки

Page 4: Solit 2014, Scrum для большого проекта. Как это работает на практике, Слисенко Константин

Почему Agile/Scrum

В итоге❏ Разработать CRM успели❏ Здание не приняли сразу, строительство

не успело в срок

Scrum оправдал себя

Page 5: Solit 2014, Scrum для большого проекта. Как это работает на практике, Слисенко Константин

Подходы к процессамПреимущества agile/scrum❏ Постоянно рабочая версия системы❏ Минимальный риск сделать не то, что хочет

заказчик❏ Следуем приоритетам, не делаем лишнего❏ Быстрое развитие команд, более быстрый

въезд новых разработчиков❏ Фокус на готовом функционале, а не на

спецификациях❏ Маленький прирост функционала после

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

Когда не совсем подходит agile/scrum❏ Заказчик не понимает scrum, и

scrum - это не то что он хочет❏ Крупный заказчик не хочет

формально принимать проект по маленьким кусочкам

❏ Бюрократия, много стадий согласований, заказчик хочет много документации

❏ Scrum плохо работает для fixed time, price, scope

❏ Много человек на проекте (около 100)

Page 6: Solit 2014, Scrum для большого проекта. Как это работает на практике, Слисенко Константин

Успех = комбинация подходовСвойственно agile/scrum❏ Разделение на небольшие мобильные

команды❏ Короткие двухнедельные спринты, частые

демо, планирования, scrum poker, story mapping, ежедневные митинги, ретроспективы

❏ Нет чёткой специализации среди разработчиков, “все делают всё”

❏ Применение scrum of scrums для объединения команд

❏ Добавление небольшой части нового функционала после каждого спринта❏ используем feature toggling

Мало свойственно agile/scrum❏ Планирование надолго вперёд в

виде release vision на несколько месяцев

❏ Формальная сдача проекта большими кусками, фиксированные сроки

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

Page 7: Solit 2014, Scrum для большого проекта. Как это работает на практике, Слисенко Константин

Структура проекта

С точки зрения заказчика (по функциональности)❏ Продажи❏ Корпоративные клиенты❏ Техподдержка❏ Обслуживание❏ Удержание

С точки зрения разработчиков (по компонентам)

❏ Бизнес анализ❏ Разработка CRM❏ Интеграция❏ Миграция❏ Администрирование❏ Тестирование

Page 8: Solit 2014, Scrum для большого проекта. Как это работает на практике, Слисенко Константин

Каким образом построены команды

Интеграторы

Миграторы

Администраторы

Архитектурный комитет (scrum of scrums)

скрам-мастер5 разработчиковтестировщикавтоматизатор

Бизнес-анализ

Разработка

Интеграция

Миграция

Администрирование

Корпоративные клиенты

Техподдержка Продажи

Синхронные спринты

скрам-мастер5 разработчиковтестировщикавтоматизатор

скрам-мастер5 разработчиковтестировщикавтоматизатор

Общее демо

Общий транк

Функциональность

Page 9: Solit 2014, Scrum для большого проекта. Как это работает на практике, Слисенко Константин

Процессы - обо всём по порядку

Составление Release Vision❏ цели❏ требования, ограничения❏ сроки❏ архитектурные риски,

способы борьбы❏ ответственные аналитики

Story mapping по каждому процессуобсуждение одного бизнес- процесса❏ составление user stories❏ приоретизация

времяvision story-mapping

Page 10: Solit 2014, Scrum для большого проекта. Как это работает на практике, Слисенко Константин

Планирование

1. Предварительное планирование❏ Во время спринта❏ То что будем делать потом

(возможно в следующем спринте)2. Основное планирование

❏ В начале спринта❏ Только то, что разбирали раньше на преплане

3. Допланирование❏ Если сделали всё раньше❏ Аналитики не подготовили достаточно историй

Планирование итеративное, как и сама разработка

Page 11: Solit 2014, Scrum для большого проекта. Как это работает на практике, Слисенко Константин

Структура скрама

Архитектурный комитет (scrum of scrums)

скрам-мастер5 разработчиковтестировщикавтоматизатор

скрам-мастер5 разработчиковтестировщикавтоматизатор

скрам-мастер5 разработчиковтестировщикавтоматизатор

Представители команд, руководители разработки, бизнес-анализа, архитектор

обсуждается новый функционал, планы на будущее

Каждая команда проводит отдельно1. планирования2. митинги3. ретроспективы

Демо общее

Page 12: Solit 2014, Scrum для большого проекта. Как это работает на практике, Слисенко Константин

Planning poker

На перплане (общая оценка историй)

2 4 8 16

На планировании (оценка для каждой задачи в рамках истории)

1 3 5 8 13

❏ Результат - не средняя оценка!❏ Соглашаемся на уровне команды

на одну из оценок

Page 13: Solit 2014, Scrum для большого проекта. Как это работает на практике, Слисенко Константин

Ежедневный scrum-митинг1. какие задачи сделаны?2. какие не сделаны?3. почему не сделаны?4. почему лень - не ответ на пункт 3

❏ Выяснить вопросы с аналитиками❏ Сообщить о проблеме команде❏ Дать понять тестировщикам что можно проверять❏ Договориться о реализации чего-либо с другими

разработчиками

время

УчастникиАналитикиСкрам-мастерКоманда

текущий спринтvision story-mapping

Page 14: Solit 2014, Scrum для большого проекта. Как это работает на практике, Слисенко Константин

Предварительное планирование

❏ имеем описанную бизнес-задачу❏ задаём вопросы для дальнейшей

проработки требований❏ предлагаем высокоуровневую

реализацию❏ даём общую оценку истории по

сложности (2, 4, 8, 16)❏ препланируем на следующий спринт!

время

УчастникиПредставитель заказчикаАналитикиСкрам-мастерКомандаПредставители других команд

vision story-mapping

3 преплана

текущий спринт

Page 15: Solit 2014, Scrum для большого проекта. Как это работает на практике, Слисенко Константин

Планирование

❏ то что разбирали на преплане❏ все вопросы выяснены!❏ есть спецификации интерфейсов

сторонних систем❏ разбиение на маленькие задачи❏ оцениваем каждую задачу

(1, 3, 5, 8, 13)

время

УчастникиАналитикиСкрам-мастерКомандаПредставители других команд

следующий спринтпланированиеvision story-mapping

3 преплана

текущий спринт

Page 16: Solit 2014, Scrum для большого проекта. Как это работает на практике, Слисенко Константин

ДемоDefinition of done❏ в новом функционале нет багов❏ не сломали существующий функционал❏ новый функционал задеплоен на систему заказчика

Демо❏ внутреннее и внешнее❏ общее для всех команд❏ аналитик зачитывает историю❏ показываем, отвечаем на вопросы❏ аналитик приминает решение

❏ принято❏ принято с замечаниями (фикс в следующем спринте)❏ не принято

время

демо

- Деда, деда, смотри, Exception!- Т-сс, что не видишь, демо идёт, глянь что демоны вытворяют.

* Де́мон — компьютерная программа в системах класса UNIX, запускаемая самой системой и работающая в фоновом режиме (википедия)

следующий спринтпланированиеvision story-mapping

3 преплана

текущий спринт

Page 17: Solit 2014, Scrum для большого проекта. Как это работает на практике, Слисенко Константин

Ретроспектива❏ Отдельная для каждой команды (никто не запрещает сходить поругаться к соседям)❏ Составление доски замечаний (snake on the board)

❏ каждое замечение назначается на исполнителя❏ скрам-мастер следит чтобы все замечания были решены за спринт

время

демо и ретроспектива

следующий спринтпланированиеvision story-mapping

3 преплана

текущий спринт

Долгое ревью, виноват Вася!

Нечёткие требования по историям техподдержки

“Плохой код” в логике назначения заявки

Частые изменения требований, пришлось много переделывать

Косяк на демо, не заработала интеграция со сторонней системой

Page 18: Solit 2014, Scrum для большого проекта. Как это работает на практике, Слисенко Константин

ПримерРазработка простой CRM-системы

1. Бизнес-требования2. Release vision3. Story mapping

Page 19: Solit 2014, Scrum для большого проекта. Как это работает на практике, Слисенко Константин

1. Бизнес-требования

Тех. поддержкаКлиент Тех. обслуживание

Реализация процесса технической поддержки❏ Клиент звонит в

поддержку❏ Оператор создаёт заявку

в системе❏ Специалист по

техническому обслуживанию выполняет ремонт

Page 20: Solit 2014, Scrum для большого проекта. Как это работает на практике, Слисенко Константин

Заявка Клиенты

ФИО Номер пасспорта

Иванов Иван 12312

Петров Вася 31241

ПоискОписание

Сохранить

РешенаТребует решения

Текущий функционал CRM

1. Выбираем клиента

2. Заполняем заявку

3. Сохраняем

Page 21: Solit 2014, Scrum для большого проекта. Как это работает на практике, Слисенко Константин

Новый функционал CRM

Тех. поддержкаКлиент Тех. обслуживание

Клиент с признаком оттока

Тех. поддержка

Кризис-менеджер

❏ Добавляется новая роль - кризис-менеджер

Page 22: Solit 2014, Scrum для большого проекта. Как это работает на практике, Слисенко Константин

2. Пример release visionRelease 1.0 Старт: 10.12.2013

Завершение: 10.03.2014

Цели релиза Функциональные требования

Бизнес1. Запуск подразделения обслуживания клиентов на платформе CRM2. Уменьшение ухода клиентов благодаря взаимодействию с ними специального сотрудника кризис-менеджера (запуск процесса удержания)Технические1. Добиться устойчивой работы системы в минимальном функционале

1. Поиск заявок2. Поиск клиентов3. Назначение заявок на кризис-

менеджера4. Повышение приоритетов заявок

отточных клиентов5. Отображение признака отточных

клиентов на карточке клиента

Границы релиза Архитектурные риски

Бизнес1. Процессы: техподдержка,

удержание 2. Территория запуска: урал, сибирь

Технические1. Использование существующей

платформы CRM

Новая клиентская модель - способы борьбы:1. быстрое прототипирование2. консультации у заказчика

Ответственные аналитики: Иванов Иван, Петров Вася

время

Диаграмма Ганта

Release plan UAT Bugfixing

Page 23: Solit 2014, Scrum для большого проекта. Как это работает на практике, Слисенко Константин

Клиент Специалист ТП Кризис-менеджер Специалист ТО

Добавляем карточки участников процесса

Page 24: Solit 2014, Scrum для большого проекта. Как это работает на практике, Слисенко Константин

Позвонить в ТП

Принять звоноки создать заявку с признаком оттока

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

Выбрать заявку и позвонить клиенту

Передать заявку на ТО

Клиент Специалист ТП Кризис-менеджер Специалист ТО

Отследить выполнение заявки, перезвонить клиенту

Добавляем действия участников процесса

Page 25: Solit 2014, Scrum для большого проекта. Как это работает на практике, Слисенко Константин

Позвонить в ТП

Принять звоноки создать заявку с признаком оттока

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

Выбрать заявку и позвонить клиенту

Заведение роли для КМ

Разделить список заявок для КМ и ТО

Кнопка пере- направления заявки в ТО

Передать заявку на ТО

Галочка оттока на форме заявки

Клиент Специалист ТП Кризис-менеджер Специалист ТО

Отследить выполнение заявки, перезвонить клиенту

Покрываем минимальный функционал

Page 26: Solit 2014, Scrum для большого проекта. Как это работает на практике, Слисенко Константин

Позвонить в ТП

Принять звоноки создать заявку с признаком оттока

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

Выбрать заявку и позвонить клиенту

Заведение роли для КМ

Разделить список заявок для КМ и ТО

Добавление признака оттока на карточку клиента

Возможность снятия признака оттока с карточки пользователя вручную - только для КМ

Кнопка пере- направления заявки в ТО

Передать заявку на ТО

Галочка оттока на форме заявки

Отдельный список с отточными клиентами

Клиент Специалист ТП Кризис-менеджер Специалист ТО

Отследить выполнение заявки, перезвонить клиенту

Наращиваем функционал

Page 27: Solit 2014, Scrum для большого проекта. Как это работает на практике, Слисенко Константин

Позвонить в ТП

Принять звоноки создать заявку с признаком оттока

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

Выбрать заявку и позвонить клиенту

Заведение роли для КМ

Автоматическое повышение приоритета всех заявок отточного клиента

Разделить список заявок для КМ и ТО

Добавление признака оттока на карточку клиента

Возможность снятия признака оттока с карточки пользователя вручную - только для КМ

Кнопка пере- направления заявки в ТО

Передать заявку на ТО

Галочка оттока на форме заявки

Отдельный список с отточными клиентами

Email-нотификация при появлении отточного клиента

Клиент Специалист ТП Кризис-менеджер Специалист ТО

Отследить выполнение заявки, перезвонить клиенту

Email-нотификация для КМ при выполнении отточной заявки

Page 28: Solit 2014, Scrum для большого проекта. Как это работает на практике, Слисенко Константин

Позвонить в ТП

Принять звоноки создать заявку с признаком оттока

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

Выбрать заявку и позвонить клиенту

Заведение роли для КМ

Автоматическое повышение приоритета всех заявок отточного клиента

Разделить список заявок для КМ и ТО

Добавление признака оттока на карточку клиента

Возможность снятия признака оттока с карточки пользователя вручную - только для КМ

Кнопка пере- направления заявки в ТО

Передать заявку на ТО

Галочка оттока на форме заявки

Отдельный список с отточными клиентами

Email-нотификация при появлении отточного клиента

Клиент Специалист ТП Кризис-менеджер Специалист ТО

Отследить выполнение заявки, перезвонить клиенту

Email-нотификация для КМ при выполнении отточной заявки

Sprint 1

Sprint 2

Sprint 3

Page 29: Solit 2014, Scrum для большого проекта. Как это работает на практике, Слисенко Константин

Story mapping

❏ Хорошая модель для дискуссий и коллективного разума❏ Выделяет пользовательские истории из требований❏ Приоретизирует бэклог❏ Хорошо визуализирует функционал, нужный

пользователю, даёт лучшее понимание проекта❏ Позволяет выделить наиболее маленькую часть

доработок, для максимальной бизнес-ценности❏ Помогает видеть проект в целом

Page 30: Solit 2014, Scrum для большого проекта. Как это работает на практике, Слисенко Константин

Процессы разработкиСинхронные спринты для всех команд❏ Полный регресс❏ Общее демо❏ В конце итерации - codefreeze❏ Поставка в прод после каждого

спринта

SVN❏ Один транк ❏ Одна ветка прошлого релиза (для хот-

фиксов, сразу мерж в основную ветку)❏ Комиты только по задачам

❏ Continuous integration + автотесты❏ Деплой на тестовую среду из

jenkins, делают все кому необходимо

❏ Размножение команд почкованием

Page 31: Solit 2014, Scrum для большого проекта. Как это работает на практике, Слисенко Константин

Jira Agile (Greenhopper)

❏ Все задачи в Jira❏ Истории располагаются по

приоритету сверху вниз❏ Каждая задача проходит через

ревью❏ Отдельный таск по тестированию,

включает написание тест-кейсов❏ Разработчики не

специализируются на конкретных типах задач

❏ По скраму работают все: аналитики, админы, миграторы, …❏ у каждой команды своя доска

Page 32: Solit 2014, Scrum для большого проекта. Как это работает на практике, Слисенко Константин

Времязатраты нашего скрамаПрепланы3 раза по 1 часу втечение спринта

Демо, планирование, ретроспектива1 день в спринт

Скрам-митинги15-20 минут в день

КодфризПосле кодфриза нельзя делать новые истории, не успели доделать - откатываем2 дня выделяется на фиксы багов и доработки

Story mapping, архитектурный комитет?

Бывает что историю быстрее реализовать, чем отводится время на планирование

Page 33: Solit 2014, Scrum для большого проекта. Как это работает на практике, Слисенко Константин

Итоги

Плюсы скрама❏ хороший фундамент для саморазвития

команд, обмена опытом❏ помогает приоритезировать, не делать

лишней работы❏ подходит когда у вас хаос

Минусы скрама❏ довольно затратный, много времени

тратится на общение❏ нужно модифицировать процессы

❏ Никто не застрахован от переделок при нечёткой формулировке задачи

❏ Теряется эффективность при отсутствии специализации

❏ Нет возможности оценивать каждого сотрудника в отдельности

❏ Оценка в абстрактных единицах не привязана ко времени

Не стоит работать 100% по скраму как написано в книжке

❏ комбинируем подходы❏ делаем свой скрам, берём всё

лучшее

Do things right! а не do right things

Page 34: Solit 2014, Scrum для большого проекта. Как это работает на практике, Слисенко Константин

Agile = work and travel

Page 35: Solit 2014, Scrum для большого проекта. Как это работает на практике, Слисенко Константин

Всё будет хорошо, главное - мотивация

Page 36: Solit 2014, Scrum для большого проекта. Как это работает на практике, Слисенко Константин

Спасибо за внимание!

[email protected]

Вопросы?