128

Scrum для практиков

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Scrum для практиков
Page 2: Scrum для практиков

Давайте знакомиться

http://www.seadmex.ru/customers/epam

SEADMEX

Денис Петелин

Успел попробовать себя во всех ролях софтверных проектов – от разработчика до владельца компании и Заказчика.

Поскольку во всех ролях работал успешно, то имею востребованный опыт, который передаю другим.

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

[email protected]

Page 3: Scrum для практиков

Окей, мы все через это прошли

29.10.2007 V 2.021 3

Page 4: Scrum для практиков

История создания тренинга

16.01.2008 V 2.021 4

Page 5: Scrum для практиков

Управление ожиданиями

• Agile – это не методология типа RUP, это фрэймворк

• Моя задача – рассказать ЧТО должно быть сделано, КАК вы будете это делать – это ваш выбор

• Я расскажу как МЫ делаем Agile• (Это не значит, что ВЫ будете

делать Agile также)• Я не расскажу вам все в деталях

(но дам доп. Материалы)

Page 6: Scrum для практиков

Подход к обучению

29.10.2007 V 2.021 6

Page 7: Scrum для практиков

Рабочие соглашения

• Сотовые – выключить

• Почту – не читать

• Коллег – не перебивать

• Говорить – строго по одному

29.10.2007 V 2.021 7

Page 8: Scrum для практиков

Потенциальные проблемы

• Некоторые слайды «перегружены»

• Говорю слишком быстро или слишком медленно

• Говорю слишком громко или слишком тихо

• Непонятные моменты

• Телефоны и пейджеры

• Просьба о перерыве

Page 9: Scrum для практиков

Орг. Вопросы

• Туалеты – влево и вниз по лестнице

• Формат работы: 1,5 часа – перерыв Х 4

• Вопросы – задавать любые, даже не по теме тренинга

• Материалы – будут выложены на Office Live

16.01.2008 V 2.021 9

Page 10: Scrum для практиков

Вопрос

• Зачем я сюда пришел (пришла)?

– Пример: Завтра мне начинать проект по Agile.С чего начать?

• Что я хочу узнать?

– Пример: Хочу чтоб в голове сложилось последовательность действий менеджера, устанавливающего Agile на проекте.

29.10.2007 V 2.021 10

Page 11: Scrum для практиков

Почему Agile?Лекция 1

Page 12: Scrum для практиков

Начнем – с начала

Алиса: «Не подскажете, каким путем мне идти, чтобы отсюда выбраться?»

Кот: «Ну, это в значительной степени определяется тем, куда вы хотите попасть.»

Алиса: «Мне, в общем-то, все равно...»

Кот: «Тогда не имеет никакого значения, каким путем идти.»

Алиса в Зазеркалье,

Льюис Кэррол

29.10.2007 V 2.021 12

Page 13: Scrum для практиков

Что такое проект?

Проект – уникальный набор скоординированных действий, имеющий начальную и конечную точки, направленный на получение определенного конечного результата в рамках ограничений времени, цены, качества и объема работ.

29.10.2007 V 2.021 13

Page 14: Scrum для практиков

Успешный проект

• Проект – уникальный набор скоординированных действий, имеющий начальную и конечную точки, направленный на получение определенного конечного результата в рамках ограничений времени, цены, качества и объема работ.

Чтобы быть успешным, проект должен:

1. Произвести конечный результат (решить задачу), который бы устраивал всех заинтересованных участников проекта.

2. Закончиться не позже запланированной даты (вовремя).

3. Остаться при этом в рамках требований качества, ограничений бюджета и объема работ.

29.10.2007 V 2.021 14

Page 15: Scrum для практиков

Измерения успешности• Набор основных измерений

– Требования (Scope)• Запланировано = реализовано

• Заказчик доволен

– График (Schedule)• Продолжительность план = продолжительность

факт

– Бюджет (Budget)• Трудозатраты план = трудозатраты факт

• Бюджет план = бюджет факт

– Качество (Quality)• Покрытие тестами ~100%

• «Критический\серьезный» дефекты = 0

Page 16: Scrum для практиков

Проектный треугольник

• Мастер ($100/день) делает 1 кресло в день• Нам нужно 1 кресло (у нас есть день и $100)• Нет заноз и кресло не разваливается

Задачи

Время

Люди

Page 17: Scrum для практиков

«Почему у нас никак не получается?!!»

• «Потому что строем не ходите!»– делали вещи посложнее

– невероятные требования к надежности

– сроки выдерживали

• Потому что методология!– MIL-STD (2167…)

– DOD-STD (498…)

29.10.2007 V 2.021 17

Page 18: Scrum для практиков

«Водопад»

(с) Steve McConnel. «Rapid Development»

Концепция

Сбор Требований

Разработка Архитектуры

Проработка Архитектуры

Кодирование и отладка

Тестирование

29.10.2007 V 2.021 18

Page 19: Scrum для практиков

Никогда в жизни не сработает!

Page 20: Scrum для практиков

Как следствие

• Наблюдения за 3 года:

– Средняя задержка – 20%

– Среднее превышение бюджета – 30%

– Сделано больше чем планировалось

– Заказчик все равно недоволен

– Качество сделанного ПО оставляет желать лучшего

– Разработчики еще почему-то ругают руководство и Заказчика

16.01.2008 V 2.021 20

Page 21: Scrum для практиков

«Мы совсем неплохо оцениваем»

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

Том де Марко. «Вальсируя с медведями»

Page 22: Scrum для практиков

Время

Ба

ги, н

еуч

тен

ны

е р

иск

и, и

зм

ен

ен

ия Релиз билд билд билд билд

«Предел возможностей»

«Большой взрыв»

Page 23: Scrum для практиков

Agile Manifesto

• Нужды Заказчика – прежде всего

• Требования должны меняться

• Разработчики и Заказчик работают вместе

• Релизы должны происходить часто

• Коммуникации – лучшая документация

• Команда – основная ценность

• Совершенство заключается в простоте

• Постоянно стремиться сделать для Заказчика больше

16.01.2008 V 2.021 23

Page 24: Scrum для практиков

Agile-фрэймворки

16.01.2008 V 2.021 24

Page 25: Scrum для практиков

Смысл один и тот же

Время

Ба

ги, н

еуч

тен

ны

е р

иск

и, и

зм

ен

ен

ия Релизбилдбилд билд билд

«Предел возможностей»

Page 26: Scrum для практиков

Ценности Agile

• Коммуникации вместо длинных контрактов

• Рабочий софт вместо длинных спек

• Ответ на изменение вместо следования плану

• Храбрость и принятие ответственности

16.01.2008 V 2.021 26

Page 27: Scrum для практиков

Как устроен Agile-проект?

Пользователи пишут «хотелки» и тесты для

них

Заказчик выбирает из длинного списка

короткий - «сделать в эту итерацию»

Программисты пишут программу вместе с

Заказчиком, консультируясь с

Заказчиком

Тестеры проверяют наличие ошибок и

сообщают программистам

Программисты исправляют ошибки

Администраторы устанавливают

программу на сервер

Заказчики удостоверяются, что программа работает

Заказчики пишут новые требования

[Переходим в начало]

Page 28: Scrum для практиков

Итого

• Agile – не «процесс», а набор ценностей

• Agile использует старые добрые проверенные временем практики

• Agile предлагает сокращать длину итерации

• + гибкость в принятии изменений, что приятно и Заказчику, и Разработчикам

16.01.2008 V 2.021 28

Page 29: Scrum для практиков

Сбор – 12:00

29.10.2007 V 2.021 29

Page 30: Scrum для практиков

Один спринт из жизни AgileЛекция 2

29.10.2007 V 2.021 30

Page 31: Scrum для практиков

Как устроен проект?

Пользователи пишут «хотелки» и тесты

для них

Заказчик выбирает из длинного списка короткий - «сделать

в эту итерацию»

Программисты пишут программу

вместе с Заказчиком

Тестеры проверяют наличие ошибок и

сообщают программистам

Программисты исправляют ошибки

Администраторы устанавливают программу на

сервер

Заказчики удостоверяются, что программа работает

Заказчики пишут новые требования

[Переходим в начало]

Page 32: Scrum для практиков

По шагам

Пользователи пишут «хотелки» и тесты

для них

Заказчик выбирает из длинного списка короткий - «сделать

в эту итерацию»

Программисты пишут программу

вместе с Заказчиком

Тестеры проверяют наличие ошибок и

сообщают программистам

Программисты исправляют ошибки

Администраторы устанавливают программу на

сервер

Заказчики удостоверяются, что программа работает

Заказчики пишут новые требования

[Переходим в начало]

Page 33: Scrum для практиков

Роли в Agile

Заказчик (Product Owner)– Пишет «хотелки», тесты и примеры к ним– Объясняет «хотелки» и расставляет приоритеты– Общается с пользователями– Решает, что важно и что нет

Разработчик– Определяет задачи для реализации «хотелки»– Дает оценки объема работ– Реализует в коде «хотелки» и юнит-тесты к ним

Scrum Master– Собирает и контролирует встречи– Информирует Спонсора– Платит за пиццу– Убирает препятствия (Impediments)

16.01.2008 V 2.021 33

Page 34: Scrum для практиков

С чего все начинается?

Пользователи

Заказчик

«хотелки» пользователей

Scrum Master

Задачи программистам

Заказчик (Product Owner)1. Собирает

информацию от всех2. Отсекает явно

ненужное3. Утверждает «хотелки»

Scrum Master:1. Поддерживает список

«хотелок»2. Управляет

обсуждением и процессом оценки

3. Не оценивает

Page 35: Scrum для практиков

Работа с Заказиком

Сколько времени займет дорисовать кнопку?

(Сколько это будет стоить?)

Page 36: Scrum для практиков

Определение user story

«Хотелка» – это наиболее простая формулировка, позволяющая всем присутствующим согласиться с тем, что существует нечто, что необходимо сделать в рамках проекта.

16.01.2008 V 2.021 36

Page 37: Scrum для практиков

SEADMEX

Storycard – Лицевая сторонаID

Суть задачи

Page 38: Scrum для практиков

Обработка «хотелки»

Page 39: Scrum для практиков

Превосходная «хотелка»

Независима и самодостаточна

Может обсуждаться с разработчиком и корректироваться, уточняться

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

Позволяет оценить трудоемкость

Невелика по объему

Определяет свойство системы, которое может быть протестировано

16.01.2008 V 2.021 39

Page 40: Scrum для практиков

SEADMEX

Storycard – Оборотная сторона

Тест

Тест

Page 41: Scrum для практиков

Важность тестов• «Рассказы» должны формулироваться так, чтобы

соответствующие возможности системы могли быть протестированы

• При невозможности тестирования невозможно определить окончание разработки

• По возможности, тесты должны быть автоматизируемыми– Пример нетестируемой «хотелки»: Пользователь не

должен слишком долго ждать появления диалогового окна.

– Более корректно:Новое окно появляется в течение 2 секунд в 95% случаев

16.01.2008 V 2.021 41

Page 42: Scrum для практиков

Зачем нужен бэклог?

• Бэклог – это форма записи требований

– Без бэклога нельзя сделать Заказчика счастливым

• Бэклог – это форма коммуникации

– Если бэклог непонятен Заказчику –коммуникация не состоялась

16.01.2008 V 2.021 42

Page 43: Scrum для практиков

«Хотелка» в бэклогеID Название Формулировка Источ

никТест № Кто Оценка

56 Hot keys в форме «Заказ»

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

ALVO СоAgileанитьзаказ F2,Перейти к следующему полю – Tab,Ctrl-Enter -сохранить и отправить заказ в работу?Escape -выход без сохранения заказа (с подтверждением)

5 SEGI 2

29.10.2007 V 2.021 43

Page 44: Scrum для практиков

Бэклог продукта

Программист

«Хотелки»+ оценки

Оценка: 4 часа

Оценка: 2 часа

Оценка: 0,5 часа

Оценка: 0,25 часа

Оценка: 8 часов

Оценка: 16 часов

Оценка: 1 час

...

Итого: 100 000 часов

Заказчик

Бэклог спринта

1. «Принесет нам миллион»

2. «Сэкономит нам миллион»

3. «Даст 100 новых клиентов»

Scrum Master

Page 45: Scrum для практиков

Определяем порядок

Page 46: Scrum для практиков

Преимущества

• Переработаем до приемлемого вида очень быстро

• Изменения стоят копейки• Разберемся в деталях• Точно поставим задачу и

программист поймет ее правильно

• Получим удобную Программу с первого раза

Page 47: Scrum для практиков

По шагам

Пользователи пишут «хотелки» и тесты

для них

Заказчик выбирает из длинного списка короткий - «сделать

в эту итерацию»

Программисты пишут программу

вместе с Заказчиком

Тестеры проверяют наличие ошибок и

сообщают программистам

Программисты исправляют ошибки

Администраторы устанавливают программу на

сервер

Заказчики удостоверяются, что программа работает

Заказчики пишут новые требования

[Новая итерация]

Page 48: Scrum для практиков

Бэклог продукта

Программист

«Хотелки»+ оценки

Оценка: 4 часа

Оценка: 2 часа

Оценка: 0,5 часа

Оценка: 0,25 часа

Оценка: 8 часов

Оценка: 16 часов

Оценка: 1 час

...

Итого: 100 000 часов

Заказчик

Бэклог спринта

1. «Принесет нам миллион»

2. «Сэкономит нам миллион»

3. «Даст 100 новых клиентов»

Scrum Master

Page 49: Scrum для практиков

Вспоминаем почему так:

• Мастер ($100/день) делает 1 кресло в день

• Нам нужно 1 кресло (у нас есть день и $100)

Задачи

Время

Люди

Page 50: Scrum для практиков

Процесс оценки

• Оценка «в пингвинах»– Выбираем эталон в 5 пингвинов

– Оцениваем все «хотелки» сравнивая с эталоном

– Отталкиваясь от известного «быстродействия» отбираем нужное количество «хотелок»

• Оценка «в часах»– Знаем емкость команды в часах (160 * N человек)

– Оцениваем каждую задачу в часах

– Отнимаем от общей емкости команды оценки до тех пор, пока не получится ноль

16.01.2008 V 2.021 50

Page 51: Scrum для практиков

«Плэннинг покер»

1. Все смотрят на эталон

2. Заказчик объясняет новую «хотелку»

3. Все выбрасывают по карте

4. Оценка совпала – вписываем

5. Оценка сильно не не совпала:1. Высказывается поставивший

самую маленькую оценку

2. Высказывается поставивший самую высокую оценку

3. Просим пояснений у Заказчика

6. GO TO 4

16.01.2008 V 2.021 51

Эталон

Обсуждаем

Page 52: Scrum для практиков

В чем давать оценки?

29.10.2007 V 2.021 52

Page 53: Scrum для практиков

Оценка в часах

• Чем меньше задача – тем точнее оценка

– Разбивайте большие «хотелки» на меньшие

– Для каждой «хотелки» расписывайте набор задач

– Оценивайте каждую задачу

– Оценивает тот, кто будет делать задачу

29.10.2007 V 2.021 53

Page 54: Scrum для практиков

«Хотелка» и «задача»

• «Парни, я хочу хранить для участка информацию о том, какие конкретно ПИ там живут!»

Задача №00234

Page 55: Scrum для практиков

Быстройдествие = 30

Балансируем треугольникБыстройдествие = 30

29.10.2007 V 2.021 55

A (15)

B (10)

C (5)

D (5)

A (15)

B (10)

D (5)

C (5)

A (15)

D (5)

C (5)

E (5)

Быстройдествие = 30

Page 56: Scrum для практиков

Роли в Agile

Тестер

– Пишет и прогоняет тесты

– Оформляет результаты так, чтобы всем было понятно

Пессимист

– Напоминает всем по риски

– Следит, чтобы мы не принимали желаемое за действительное

16.01.2008 V 2.021 56

Page 57: Scrum для практиков

Преимущества

• То, что реально важно, всегда делается

• Скорость – очень высокая

• Это происходит из-за высокой эффективности работы, а не за счет качества

• Себестоимость при этом получается - ниже

Page 58: Scrum для практиков

По шагам

Пользователи пишут «хотелки» и тесты

для них

Заказчик выбирает из длинного списка короткий - «сделать

в эту итерацию»

Программисты пишут программу

вместе с Заказчиком

Тестеры проверяют наличие ошибок и

сообщают программистам

Программисты исправляют ошибки

Администраторы устанавливают программу на

сервер

Заказчики удостоверяются, что программа работает

Заказчики пишут новые требования

[Новая итерация]

Page 59: Scrum для практиков

Где же менеджер???

16.01.2008 V 2.021 59

Page 60: Scrum для практиков

Definition Of Done

• Story сделан

– Код в SVN, с комментарием

– Юнит-тест в проекте

– Юнит-тесты проекта прошли

– Глупых ошибок на UI нет

• Story закрывает тот, кто его открыл

– Если он недоволен по любой причине – он не закрывает кейс

– Daily Scrum: 10:00, 75-4

SEADMEX

Page 61: Scrum для практиков

Происходит работа...

• Daily Scrum• Программисты делают

сессии по дизайну• Пишут вместе тесты• Потом код• Юнит-тесты проверяют их

работоспособность• Программа сборки делает из

него билды• Тестеры тестируют билды

заглядывая в список What’s New

• До тех пор, пока не сделаны все «хотелки» итерации

Page 62: Scrum для практиков

Task Board и его чтение

16.01.2008 V 2.021 62

Page 63: Scrum для практиков

Роли в Agile

Трэкер

– Собирает со всех информацию об успехах

– При необходимости зовет на помощь Тренера или другого разработчика

Тренер

– Наблюдает и дает советы

– В явном виде помогает

– «Свертывает газету» при необходимости

16.01.2008 V 2.021 63

Page 64: Scrum для практиков

Scrum!!!

16.01.2008 V 2.021 64

Page 65: Scrum для практиков

Daily Scrum

16.01.2008 V 2.021 65

Page 66: Scrum для практиков

Трэкер и «прозрачность»

16.01.2008 V 2.021 66

Page 67: Scrum для практиков

http://www.seadmex.ru/customers/ibs

SEADMEX

«Хотелка» для обсуждения• User Stories не считаются «высеченными в камне». Детали

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

• В момент начала работы над «рассказом» разработчик уточняет у заказчика необходимые подробности

Page 68: Scrum для практиков

Постоянная интеграция

16.01.2008 V 2.021 68

Разработчик

делает коммит

Компилируется

проект

Запускаются

юнит-тесты

Результаты

появляются в

дашборде

Билд

успешен -

Запуск процедуры

развертывания и

обновления

Приложение и база

обновлены

Page 69: Scrum для практиков

По шагам

Пользователи пишут «хотелки» и тесты

для них

Заказчик выбирает из длинного списка короткий - «сделать

в эту итерацию»

Программисты пишут программу

вместе с Заказчиком

Тестеры проверяют наличие ошибок и

сообщают программистам

Программисты исправляют ошибки

Администраторы устанавливают программу на

сервер

Заказчики удостоверяются, что программа работает

Заказчики пишут новые требования

[Новая итерация]

Page 70: Scrum для практиков

Имплементация story

Программист

Список выполненных задач + результирующая программа

Тестер

Задачи по исправлению ошибок

Заказчик

Тестовые данные

Надежная программа

Тестовые примеры

Page 71: Scrum для практиков

Тестовые сценарии

• Тестовый пример: Ввести номенклатуру изделия, Программа пишет расшифровку кода номенклатуры, при этом обрабатывает несуществующие коды и замены.

• Проверить с тестовыми данными:

– 005Е6789: «немыслимый шаровой клапан»

– 005N0000: «код не существует»

– 005Т0098: «снят с производства, возможна замена на 005T0198»

Page 72: Scrum для практиков

По шагам

Пользователи пишут «хотелки» и тесты

для них

Заказчик выбирает из длинного списка короткий - «сделать

в эту итерацию»

Программисты пишут программу

вместе с Заказчиком

Тестеры проверяют наличие ошибок и

сообщают программистам

Программисты исправляют ошибки

Администраторы устанавливают программу на

сервер

Заказчики удостоверяются, что программа работает

Заказчики пишут новые требования

[Новая итерация]

Page 73: Scrum для практиков

Исправление ошибок

• Ошибки сделанные программистом

– НИКОГДА Заказик не платит за исправление ошибок, которые сделал наши программисты

• Ошибки как следствие новых Задач

– ВСЕГДА платит за исправление ошибок, внесенных измененными и\или противоречивыми, новыми, неправильно сформулированными «хотелками»

Page 74: Scrum для практиков

Преимущества

• Менеджер и Заказчик думают о том, как должно работать правильно

• Тестер думает о том, чтоможет работать неправильно

• Тестер думает заранее

• Как следствие Программа (почти) всегда работает как надо

Page 75: Scrum для практиков

По шагам

Пользователи пишут «хотелки» и тесты

для них

Заказчик выбирает из длинного списка короткий - «сделать

в эту итерацию»

Программисты пишут программу

вместе с Заказчиком

Тестеры проверяют наличие ошибок и

сообщают программистам

Программисты исправляют ошибки

Администраторы устанавливают программу на

сервер

Заказчики удостоверяются, что программа работает

Заказчики пишут новые требования

[Новая итерация]

Page 76: Scrum для практиков

Установка программы

Page 77: Scrum для практиков

Две версии

Page 78: Scrum для практиков

Преимущества

• Всегда есть версия программы, которая работает

• Тестирование любой степени извращенности не ломает рабочую версию программы

Page 79: Scrum для практиков

По шагам

Пользователи пишут «хотелки» и тесты

для них

Заказчик выбирает из длинного списка короткий - «сделать

в эту итерацию»

Программисты пишут программу

вместе с Заказчиком

Тестеры проверяют наличие ошибок и

сообщают программистам

Программисты исправляют ошибки

Администраторы устанавливают программу на

сервер

Заказчики удостоверяются, что программа работает

Заказчики пишут новые требования

[Новая итерация]

Page 80: Scrum для практиков

Демо

16.01.2008 V 2.021 80

Page 81: Scrum для практиков

По шагам

Пользователи пишут «хотелки» и тесты

для них

Заказчик выбирает из длинного списка короткий - «сделать

в эту итерацию»

Программисты пишут программу

вместе с Заказчиком

Тестеры проверяют наличие ошибок и

сообщают программистам

Программисты исправляют ошибки

Администраторы устанавливают программу на

сервер

Заказчики удостоверяются, что программа работает

Заказчики пишут новые требования

[Новая итерация]

Page 82: Scrum для практиков

Мы рекомендуем

• Собрать набор пожеланий по итогам просмотра в виде «хотелок»

• Реализовывать только самые необходимые новые «хотелки»

• (При необходимости с них можно начать следующую итерацию)

Page 83: Scrum для практиков

Анализ причин и следствий

16.01.2008 V 2.021 83

Page 84: Scrum для практиков

Ретроспектива & Бэклог препятствий

16.01.2008 V 2.021 84

Page 85: Scrum для практиков

По шагам

Пользователи пишут «хотелки» и тесты

для них

Заказчик выбирает из длинного списка короткий - «сделать

в эту итерацию»

Программисты пишут программу

вместе с Заказчиком

Тестеры проверяют наличие ошибок и

сообщают программистам

Программисты исправляют ошибки

Администраторы устанавливают программу на

сервер

Заказчики удостоверяются, что программа работает

Заказчики пишут новые требования

[Новая итерация]

Page 86: Scrum для практиков

Преимущества

• Нет вероятности «передалать» работающую программу в неработающую

• Работающая программа будет установлена на сервер и будет работать (и приносить деньги)

• В это время будут делаться переделки, новые «хотелки» и т.д.

Page 87: Scrum для практиков

Итого

• Спринт устроен очень просто

16.01.2008 V 2.021 87

Пользователи пишут «хотелки» и тесты

для них

Заказчик выбирает из длинного списка короткий - «сделать

в эту итерацию»

Программисты пишут программу

вместе с Заказчиком

Тестеры проверяют наличие ошибок и

сообщают программистам

Программисты исправляют ошибки

Администраторы устанавливают программу на

сервер

Заказчики удостоверяются, что программа работает

Заказчики пишут новые требования

[Новая итерация]

Page 88: Scrum для практиков

Перерыв – 60 минут

29.10.2007 V 2.021 88

Page 89: Scrum для практиков

Вырабатываем «хотелки»Практика

16.01.2008 V 2.021 89

Page 90: Scrum для практиков

Превосходная «хотелка»

Независима и самодостаточна

Может обсуждаться с разработчиком и корректироваться, уточняться

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

Позволяет оценить трудоемкость

Невелика по объему

Определяет свойство системы, которое может быть протестировано

16.01.2008 V 2.021 90

Page 91: Scrum для практиков

«Независимость хотелки»

• Следует избегать зависимостей между «хотелки», насколько это возможно.

• Зависимости порождают проблемы при определении приоритетов и планировании.

• Как добиваться независимости:

– Объединять «хотелки» в более крупные, но независимые

– Подбирать разбивку функциональности системы на независимые «хотелки»

16.01.2008 V 2.021 91

Page 92: Scrum для практиков

SEADMEX

«Хотелки»: небольшой объем

• Слишком объемные и слишком маленькие «рассказы» сложно использовать для планирования– Объемный «рассказ» может реально включать несколько user stories

• «Правильный» объем зависит от возможностей команды и применяемых технологий

• Правило: максимальный размер хотелки должен быть таким, чтобы одна пара разработчиков могла полностью реализовать его в течение одной итерации.

Page 93: Scrum для практиков

Небольшой объем «хотелки»

• Слишком объемный «рассказ» обычно является:

– Составным. Представляет собой набор менее объемных «рассказов».

либо

– Сложным. Действительно большой и не может быть легко разбит на меньшие «рассказы».

16.01.2008 V 2.021 93

Page 94: Scrum для практиков

Составная «хотелка» - пример• Слишком объемная «хотелка»:

– Пользователь может разместить на сайте свое резюме.

• Реально это означает:± Резюме может включать образование, предыдущие

работы, историю зарплаты, публикации, цель поиска работы

± Пользователь может пометить резюме как неактивное

± Пользователь может одновременно разместить несколько своих резюме

± Пользователь может редактировать резюме

± Пользователь может удалить резюме

16.01.2008 V 2.021 94

Page 95: Scrum для практиков

SEADMEX

Слишком мелкие «хотелки»• Например:

– Пользователь может ввести даты начала и окончания для каждого места работы в резюме

– Пользователь может редактировать даты начала и окончания для каждого места работы в резюме

– Пользователь может ввести даты начала и окончания для каждого места учебы в резюме

– Пользователь может ввести даты начала и окончания для каждого места учебы в резюме

– ...

Page 96: Scrum для практиков

Сложные «хотелки»• Сложные «рассказы» действительно велики и

не могут быть легко разбиты на меньшие «хотелки»

• Можно разбить «рассказ» на следующие задачи:

1. Исследовательская работа по «хотелке» (в заданных временных рамках) для оценки трудоемкости

2. Планирование в соответствии с полученной оценкой и реализация «хотелки»

16.01.2008 V 2.021 96

Page 97: Scrum для практиков

• Официальное правило: пожелания записывает на карточки заказчик.

• Если заказчик не может или не хочет записывать, вы можете помочь ему в этом; если записывать пожелания на карточку будет кто-то другой, заказчик будет чувствовать себя увереннее.

• В процессе работы заказчик может обрести уверенность и начать сам записывать «рассказы».

• В любом случае карточки принадлежат заказчику и только он имеет право формировать «рассказы» либо вносить изменения.

«Хотелки» и Заказчик\PO

Page 98: Scrum для практиков

Разработчицкие «хотелки»

Важно только для разработчиков:

1. Все коннекты к БД выполняются только через пул соединений

2. Вся обработка и протоколирование ошибок реализованы в специальном наборе классов

Более корректный вариант, понятный Заказчику:

1. С приложением, имеющим лицензию на 5 пользователей СУБД, должны работать до 15 пользователей.

2. Все ошибки представляются пользователю и протоколируются единообразно.

16.01.2008 V 2.021 98

Page 99: Scrum для практиков

Метафора

CRM – это система, благодаря которой ни одно обращение Заказчиков не остается без ответа– Все входящие письма на

[email protected] регистрируются в системе и не могут остаться без ответа

– Из писем можно создавать «Сделки»– В сделки вносится ответственный, вероятность,

ожидаемая сумма и т.д.– У сделок есть история, включая письма, задачи

и ответственных, встречи в календаре– Система умеет генерировать отчет «Наш

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

16.01.2008 V 2.021 99

60 мин

Page 100: Scrum для практиков

4 спринта AgileПрактика

29.10.2007 V 2.021 100

Page 101: Scrum для практиков

Сейчас мы проделаем 4 спринта • Я – спонсор Х проектов

– Выберите Product Owner

– Определите кто Scrum Master

– Разбейтесь на команды по симпатиям

– Заказчики, подходите ко мне за бэклогом продукта и инструктажем

16.01.2008 V 2.021 101

90 мин

Page 102: Scrum для практиков

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

• Возьмите бэклог продукта

• Произведите оценку (управляет Scrum Master)

• Попробуйте прикинуть свою производительность (спринт = 10мин)

• Отберите набор «хотелок» на спринт

• Подготовьте бэклог спринта

• По готовности всех команд – начинаем!

16.01.2008 V 2.021 102

Page 103: Scrum для практиков

Конец итерации

• Сообщите мне, какая была рассчетнаяпроизводительность

• Теперь посчитайте реальную производительность

• Ретроспектива – что можно сделать лучше?

• Начинайте новый цикл планирования

16.01.2008 V 2.021 103

Page 104: Scrum для практиков

Выводы

•Какие будут сложности с использованием этого подхода в вашей компании?

16.01.2008 V 2.021 104

Page 105: Scrum для практиков

И что дальше?Лекция 4

29.10.2007 V 2.021 105

Page 106: Scrum для практиков

Причина неудач внедрений

16.01.2008 V 2.021 106

Цели

бизнеса

Цели

внедрения

Adoption through execution: Project-level mentoring to improve software capability

Kurt Bittner, Communities of Practice Architect, IBM

Saif Islam, Rational Services Manager, IBM

2006 2007

Page 107: Scrum для практиков

Успешный проект

Чтобы быть успешным, проект должен:

1. Произвести конечный результат (deliverable(s)), который бы устраивал всех заинтересованных участников проекта.

2. Закончиться не позже запланированной даты.

3. Остаться при этом в рамках требований качества, ограничений бюджета и объема работ.

Page 108: Scrum для практиков

Проектная деятельность

• (Задача: заработать деньги)

Проект, duration \ work

Revenue, $

deliverable

Page 109: Scrum для практиков

Управление проектом

• Управление проектом - это

применение знаний, навыков,

методов, средств и технологий к

проектной деятельности в целях

удовлетворения требований,

достижения или превышения

ожиданий участников проекта, т.е.

обеспечения выполнения работ с

заданным уровнем качества, в

заданный срок и в рамках

выделенных средств.

PM BoK, PMI

Page 110: Scrum для практиков

Scrum Master

• Scrum Master –

человек, полностью

ответственный за успех

или неудачу проекта –

удовлетворение или

превышение ожиданий

всех участников

проекта.

Page 111: Scrum для практиков

Не так быстро

Revenue, $Cost, $

Profit, $

Задачи

Page 112: Scrum для практиков

Вспоминаем почему так:

• Мастер ($100/день) делает 1 кресло в день

• Нам нужно 1 кресло (у нас есть день и $100)

Задачи

Время

Люди = деньги

Page 113: Scrum для практиков

Простые выводы

• Чем мы торгуем?• Откуда мы узнаем, сколько часов

должно быть продано?• Что будет, если мы изначально

неправильно определили количество часов?

• Что будет, если впоследствии количество\тип стульев будет изменено?

• Что будет, если мастер работает плохо (по любой причине)?

Page 114: Scrum для практиков

Проблема Agile

16.01.2008 V 2.021 114

Revenue, $

Sprint = Cost, $

Profit, $

Задачи = ?Sprint = Cost, $Sprint = Cost, $Sprint = Cost, $Sprint = Cost, $

Sprint = Cost, $

Page 115: Scrum для практиков

Советы по отбору проектов

• Старайтесь заложить большую маржу

• Еще лучше – продавайте проекты с «помесячной» оплатой

• Проекты с маленькой маржой должны быть не просто гибкими, а супергибкими

29.10.2007 V 2.021 115

Page 116: Scrum для практиков

Из личного опыта

29.10.2007 V 2.021 116

Page 117: Scrum для практиков

Не начинайте с инструментов!

• Выберите команду, которая горит желанием делать Agile

• Соберите всю команду вместе

• Поместите Заказчика рядом

• Внедряйте одну практику за раз

• Внедряйте все практики

16.01.2008 V 2.021 117

Page 118: Scrum для практиков

Внедряйте все практики

16.01.2008 V 2.021 118

«Типа

спецификация»

Возможно,

«релиз»

Это не Agile!

Page 119: Scrum для практиков

Проблемы с Заказчиком

16.01.2008 V 2.021 119

Skype + SharedView

Page 120: Scrum для практиков

Типичная ситуация

Новая практика

Непонимание

ЗлостьОсвоение

Удовольствие

16.01.2008 V 2.021 120

Page 121: Scrum для практиков

Причины недовольства

• Требования без объяснений

• Предыдущий опыт

• Отсутствие мотивации

• Страх изменения

• Страх неудачи

• Синдром «старой собаки»

• Физическое\умственное состояние

16.01.2008 V 2.021 121

Page 122: Scrum для практиков

Коучинг

• В идеале – менеджер:

– Может заменить любого члена команды

– Может учить по любой теме

– Готов взять на себя самую тяжелую\нудную часть работы

16.01.2008 V 2.021 122

Page 123: Scrum для практиков

Естественный отбор

«Гики»

«Одиночки»

«Командные игроки»

16.01.2008 V 2.021 123

Page 124: Scrum для практиков

Средства автоматизации

16.01.2008 V 2.021 124

Page 125: Scrum для практиков

Итого

• Помните, зачем делается проект - деньги

• Agile – это 12* (двенадцать) практик

• Иначе это не Agile

• Не надо перегружать Agile документами, его прелесть в простоте

• Простота достигается за счет коммуникаций

• Для этого команда и Заказчик должны работать вместе

• Остальное – (сравнительно) просто

16.01.2008 V 2.021 125

Page 126: Scrum для практиков

Рекомендую к прочтению

• Agile Project Management with SCRUM

• (Ken Schwaber)

16.01.2008 V 2.021 126

Page 127: Scrum для практиков

29.10.2007 V 2.021 127

Audaces fortuna juvat!

Page 128: Scrum для практиков

Рефлексия• Зачем я сюда пришел (пришла)?

– Есть ощущение удовлетворения этой потребности?

• Что я хочу узнать?

– Получили нужную информацию и источники?

29.10.2007 V 2.021 128