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

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

description

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

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

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

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