35
Как сделать наши проекты немного более управляемыми с Agile Алексей Кривицкий IT Talk, Харьков 25 сен 2008 SCRUMguides.com

Как сделать наши проекты немного более управляемыми с Agile

Embed Size (px)

DESCRIPTION

How to solve project challenges with Agile and Scrum. Alexey Krivitsky, IT talk, Kharkov

Citation preview

Page 1: Как сделать наши проекты немного более управляемыми с Agile

Как сделать наши проекты немного более управляемыми с Agile

Алексей КривицкийIT Talk, Харьков 25 сен 2008 SCRUMguides.com

Page 2: Как сделать наши проекты немного более управляемыми с Agile

22

Кто я

Тренер по Agile/ScrumРазработчик ПО

http://www.linkedin.com/in/alexeykrivitsky

email: [email protected]: alexeykrvicq: 436-471-64gsm: +380 50 358 92 12

Консалтинговый центр по вопросам внедрения Agile-практик

www.scrumguides.com

Page 3: Как сделать наши проекты немного более управляемыми с Agile

3

На вебе

Сообщество Agile Ukrainewww.agileukraine.org

Cтатьи, общение, новости, события, обмен опытом.

Google discussion groupПрисоединяйтесь, там интересно.

Украинский портал по SCRUMwww.scrum.com.ua

Статьи, полезные ссылки, сертификация ScrumMaster.

Page 4: Как сделать наши проекты немного более управляемыми с Agile

4

А кто вы? :)

Page 5: Как сделать наши проекты немного более управляемыми с Agile

5

Проекты, проекты, проекты

Кто из вас в настоящее время работает в проекте по разработке ПО?

Есть ли какие-то проблемы?

В нашей области принято называть проблемы словом «challenges»

Page 6: Как сделать наши проекты немного более управляемыми с Agile

6

Челенджи, челенджи, челенджи

Заказчики– «Невменяемые заказчики» ;)– Заказчики не знают, чего хотят– Давление на команду– Слишком много проектов для одной команды– Заказчик – бывший программист

Требования– Заказчики часто меняют порядок выполнения работ– От заказчиков исходят противоречивые пожелания– Всё критично для реализации в ближайшее время– Требования отсутствуют как таковые, решения над чем

работать принимаются спонтанно

Page 7: Как сделать наши проекты немного более управляемыми с Agile

7

Челенджи, челенджи, челенджи (2)

Статус проекта– Нереальные сроки– Отложенные релизы– Никто не знает текущего состояния дел– Никто не знает, когда закончится проект– 50% задач готовы на 50%

Команда– Проблемы с качеством кода– Неоцениваемые задачи

Руководство– «Некомпетентное руководство» ;)

Page 8: Как сделать наши проекты немного более управляемыми с Agile

8

Анти-паттерны и как с ними бороться

Page 9: Как сделать наши проекты немного более управляемыми с Agile

9

«Заказчики не знают, чего хотят»

Симптомы: Заказчики часто меняют порядок выполнения

работ. Требования отсутствуют как таковые, решения над

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

которых исходят противоречивые пожелания.

Как следствие: Никто толком не знает ближайшие цели проекта. Ощущение хаоса. На вопрос «что вы сейчас разрабатываете?» у

команды нет чёткого и короткого ответа.

Page 10: Как сделать наши проекты немного более управляемыми с Agile

10

«Заказчики не знают, чего хотят» (2)

Пути решения:

Не называйте требования «требованиями». Как вариант - «пожелания».

Заведите на проекте единственный упорядоченный список пожеланий – «product backlog» по Скраму.

Page 11: Как сделать наши проекты немного более управляемыми с Agile

11

Пример упорядоченного списка пожеланий

Backlog item Estimate

Allow a guest to make a reservation 3

As a guest, I want to cancel a reservation 5

Guest can change reservation dates 3

Hotel employee can see future reservations for her hotel

8

Improve exception handling 5

… 30

… 50

Page 12: Как сделать наши проекты немного более управляемыми с Agile

12

«Заказчики не знают, чего хотят» (3)

Определите критерии «здоровья» беклога.

Найдите на стороне заказчика человека, который бы отвечал за поддержание беклога в «здоровой форме» (Product Owner или PO по Скраму)

Не начинайте работать над очередной фазой проекта, пока есть проблемы с наполнением беклога.

Помогайте вашему PO поддерживать беклог. Это его самая важная работа в течение всего проекта.

Page 13: Как сделать наши проекты немного более управляемыми с Agile

13

«Всё критично»

Также может называться «Все й одразу!» :)

Симптомы и другие формы челенджа: У требований нет приоритетов. Все требования имеют приоритет P1. Требования разбиты на приоритеты P1, P2..., но в каждой

группе довольно много элементов. На вопрос, что более критично, что менее для проекта,

заказчики отвечают, что критично всё. Заказчики полностью делегировали принятие решений о

порядке реализации требований команде.

Как сдедствие: Программисты работает над чем хотят. Либо часто перескакивают с задачи на задачу, не завершая

ни одну.

Page 14: Как сделать наши проекты немного более управляемыми с Agile

14

«Всё критично» (2)

Пути решения: Заведите беклог.

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

Заведите понятие текущего релиза, оговорив желаемую дату релиза и цель. Проведите в беклоге черту «текущий релиз».

Зафиксируйте дату релиза и научите вашего PO манипулировать содержимым релиза для сохранения запланированной даты.

1 Dec 2008

5

2

3

8

1

5

13

2

3

13

5

2

3

8

1

13

Page 15: Как сделать наши проекты немного более управляемыми с Agile

15

«Всё критично» (3)

Пути решения: Ведите график количества оставшейся работы в текущем

релизе. Обновляйте его после каждой итерации.

Release Burndown

1050

850

380

180

00

200

400

600

800

1000

1200

1 2 3 4 5

Итерации

О ц

е н

к и

Page 16: Как сделать наши проекты немного более управляемыми с Agile

16

«Мы на середине проекта»

Также может называться: «Мы думаем, что мы успеем» или «Должны успеть!»

Симптомы: Никто не знает, когда закончится проект. Никто не знает текущего состояния дел. «50% задач сделаны на 50%». Вся команда работает монотонно. Все

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

Page 17: Как сделать наши проекты немного более управляемыми с Agile

17

«Мы на середине проекта» (2)

Симптомы: В проекте не принято обсуждать

реалистичность планов. Тестировщики молчаливо работают над

подготовкой тест-кейсов.

Page 18: Как сделать наши проекты немного более управляемыми с Agile

18

«Мы на середине проекта» (3)

Как следствие: Нет ни одной готовой и работающей фичи. Система постоянно в «разобранном

состоянии». Тестировщикам нечего тестировать.

Page 19: Как сделать наши проекты немного более управляемыми с Agile

19

«Мы на середине проекта» (4)

Пути решения: Остановить разработку нового функционала до прогона

функционального и регрессионного тестирования. Тестируют все.

Результаты тестирования поместить в верх беклога.

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

«Какие из незавершённых пожеланий можно будет завершить и протестировать для демонстрации через 3 недели?»

С этого момента работать итерациями. Начало – совещание по выбору пожеланий на итерацию. Завершение – демонстрация работающей системы.

Page 20: Как сделать наши проекты немного более управляемыми с Agile

20

«Заказчик – бывший программист»

Симптомы: Основной заказчик – бывший программист, но

ведёт себя как настоящий. Большая часть требований ставятся команде в

виде программистских задач, диаграмм классов, примеров кода... В требованиях программисткая терминология .

Как следствие: Никто толком не понимает бизнес нужд. Тестировщики не знают, как тестировать систему.

Page 21: Как сделать наши проекты немного более управляемыми с Agile

21

«Заказчик – бывший программист» (2)

Пути решения: Ознакомьтесь с концепцией «User Stories» (историй) - пожеланий,

записанных в формате:

As a <user> I can <do> so that <value>.

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

Упражнение: «All connections to the database go through a connection pool».

«Implement paging control on the list of orders and sort orders by date»

Как можно было бы переписать это в виде истории?Иногда помогает техника «five whys».

Page 22: Как сделать наши проекты немного более управляемыми с Agile

22

«Заказчик – бывший программист» (3)

Пути решения: В начальном списке задач поставьте в

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

Добавьте в список задач задачи по интеграции, тестированию, настройке среды и проч.

Помогайте заказчику описывать новые требования в оговоренном формате.

Page 23: Как сделать наши проекты немного более управляемыми с Agile

23

«Слишком много проектов для одной команды»

Симптомы: Команда разрабатывает и поддерживает

спектр приложений.

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

Page 24: Как сделать наши проекты немного более управляемыми с Agile

24

«Слишком много проектов для одной команды» (2)

Пути решения: Заведите общий беклог на все проекты, для

этого должен быть выбран один PO.

Page 25: Как сделать наши проекты немного более управляемыми с Agile

25

«Слишком много проектов для одной команды» (2)

Или же разделить команду на подкоманды с независимыми беклогами.

Может быть даже различными PO.

Page 26: Как сделать наши проекты немного более управляемыми с Agile

26

«Слишком много проектов для одной команды» (2)

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

Остальные проекты разрабатывайте, как раньше.

Page 27: Как сделать наши проекты немного более управляемыми с Agile

27

«Неоцениваемые задачи»

Симптомы: Команда не может дать оценки

требованиям.

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

Оценки, данные командой, рассматриваются как обещания.

Page 28: Как сделать наши проекты немного более управляемыми с Agile

28

«Неоцениваемые задачи» (2)

Мотивация: Оценки нужны, пусть даже самые грубые,

так как оценки влияют на решения заказчиков по порядку реализации требований и объёму их реализации.

Page 29: Как сделать наши проекты немного более управляемыми с Agile

29

«Неоцениваемые задачи» (3)

Пути решения: Снять давление с команды. Оценки не являются

обещаниями.

Отделить исследования от реализации, создав в беклоге отдельные для них элементы.

Использовать командные подходы к оценкам. К примеру planning poker.

Собирать статистику и сравнивать требования, дефекты, задачи между собой.

Page 30: Как сделать наши проекты немного более управляемыми с Agile

30

«Проблемы с качеством кода»

Симптомы: Код плохо пахнет. Программисты не обсуждают дизайн. Не проводятся ни в какой форме code

review. В проекте нет code conventions. Написание юнит тестов очень трудоёмко. Часто ламается ранее написанная

функциональность. Падает темп работы команды.

Page 31: Как сделать наши проекты немного более управляемыми с Agile

31

«Проблемы с качеством кода» (2)

Пути решения: Использовать дезодоранты для кода

(комментарии)

Ввести code reviews за правило.

Практиковать парное программирование. Как минимум на начальной и конечной фазе реализации сложных фич.

Page 32: Как сделать наши проекты немного более управляемыми с Agile

32

«Проблемы с качеством кода» (3)

Завести беклог рефакторингов, выделить на них адекватный бюджет и выполнять выбранные рефакторинги каждую итерацию.

Page 33: Как сделать наши проекты немного более управляемыми с Agile

33

Советы по улучшению процесса

Не пытайтесь изменить всё и сразу. Не пытайтесь сделать это самостоятельно. Начните с регулярных неформальных

обсуждений процесса и поиска зон улучшений с командой и заказчиком (ретроспективы).

Пытайтесь коллективно каждый месяц вводить выбранное одно-два улучшения.

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

Page 34: Как сделать наши проекты немного более управляемыми с Agile

34

Не бойтесь менять процесс

You can always start changing.

You can always start now.

You can always start from yourself.

© Kent Beck, co-author of XP

Page 35: Как сделать наши проекты немного более управляемыми с Agile

35

Спасибо! Вопросы?