Теория ограничений в agile команде

22
Теория ограничений в Agile команде Андрей Геоня, 2GIS 19.05.2012

Upload: yiiconf

Post on 15-Jun-2015

1.266 views

Category:

Documents


14 download

DESCRIPTION

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

TRANSCRIPT

Page 1: Теория ограничений в Agile команде

Теория ограничений в Agile команде

Андрей Геоня, 2GIS 19.05.2012

Page 2: Теория ограничений в Agile команде

Введение в Теорию ограничений

Теория ограничений (ТО) - философия управления, направленная на повышение скорости генерирования прибыли любого предприятия.

Разработанная в 1980-х гг. доктором Элияху Голдраттом.

Page 3: Теория ограничений в Agile команде

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

● Выработка - количество продукции, произведенной за единицу времени;

● Запасы - активы, используемые в качестве сырья, материалов и т. п. при производстве продукции;

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

Page 4: Теория ограничений в Agile команде

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

● Выработка - готовые бизнес-фичи;● Запасы - незавершенные бизнес-фичи;● Операционные расходы - все, что не несет ценности для

бизнеса, но требуется при разработке (багфиксинг, рефакторинг и т. п.).

Page 5: Теория ограничений в Agile команде

Цель

Увеличение выработки при сохранении или снижении операционных расходов и запасов: ● Готовые бизнес-фичи ++;● Ожидающие бизнес-фичи --;● Багфиксинг, рефакторинг и т. п. --.

Page 6: Теория ограничений в Agile команде

Команда

Команда(ы) - это система взаимосвязанных элементов. Пример зависимостей: Аналитика~>Дизайн~>Верстка~>Разработка~>Тестирование

Page 7: Теория ограничений в Agile команде

Производительность

Производительность всей системы = производительности её "слабого звена" (ограничения): Аналитика~>Дизайн~>Верстка~>Разработка~>Тестирование

Page 8: Теория ограничений в Agile команде

Шаги к цели

1. Найти ограничение(я) системы - "слабое звено";

2. Принять решение об эффективном

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

работы с ограничением; 4. Увеличить пропускную способность

"слабого звена"; 5. Если ограничение перестало быть

ограничением, тогда начать все сначала.

Page 9: Теория ограничений в Agile команде

Как найти ограничение

● Спросить у команды - провести ретроспективу; ● Проверить нагрузку на каждое "звено"; ● Определить загруженность

"звеньев" - элементы системы, идущие после "слабого звена" будут простаивать.

Page 10: Теория ограничений в Agile команде

Как использовать ограничение?

Чтобы понять, как эффективно использовать ограничение, нужно выяснить, что ему мешает: ● Определить во время ретроспективы;● Взглянуть на процесс в целом.

Page 11: Теория ограничений в Agile команде

Как подчинить команду ограничению

Все ресурсы, не являющиеся ограничениями, не должны работать больше, чем от них требует ограничение, но при этом своевременно обеспечивать ограничение нужными ресурсами.

Page 12: Теория ограничений в Agile команде

Как "прокачать" ограничение

● Исключить простаивание;● Улучшить качество работы перед ограничением;● Распределить обязанности "слабого звена" между членами

команды (обычно это "соседние звенья").

Page 13: Теория ограничений в Agile команде

Грабли. Опыт нашей команды

Page 14: Теория ограничений в Agile команде

Use case. Белоснежка и 7 гномов Тестировщик и 7 программистов

Ресурсы:● 1 тестировщик;● 7 разработчиков Проблема:● Много задач для

тестирования;● Мало пользы.

...~>Разработка(7)~>Тестирование(1)

Page 15: Теория ограничений в Agile команде

Как мы дали QA "разгрести" буфер задач

Нет, не так:

Вот так:● Разработчики выполнили ряд исследовательских задач;● Разработчики начали декомпозировать задачи backlog-а.

Page 16: Теория ограничений в Agile команде

Как мы исключили простаивание QA● Разработчики начали следить за буфером задач QA;● И начали поддерживать равномерный буфер, не давая ему

закончиться. Простаивание QA - это очень дорого! Буфера тестировщиков:

Page 17: Теория ограничений в Agile команде

Как мы улучшили качество перед QA

● Перестали пропускать задачи в QA без code review;● Составили детальный checklist для code review;● Настроили уведомления Jenkins-а по commit-у;

Page 18: Теория ограничений в Agile команде

Как мы ускорили само тестирование

● Улучшили покрытие функционала авто-тестами;● Начали группировать задачи на тестирование в

функциональные группы.

Page 19: Теория ограничений в Agile команде

Что мы получили

● Больше нагрузку на программистов;● Меньше нагрузку на QA;● Больше готовых фич в конце спринта.

Page 20: Теория ограничений в Agile команде

Но хочется большего1. Сократить цикл работы над фичей:● Свести тестирование фичи к одной итерации (в худшем

случае - одна итерация + одна верификация) Для этого:● Программировать по checklist-у (по готовым тест-кейсам),

тем самым улучшить качество фичи до попадания в QA 2. Привлечь пользователей к тестированию● Внедрить Continuous delivery

Page 21: Теория ограничений в Agile команде

Литература

Page 22: Теория ограничений в Agile команде

Контакты: Twitter: @AndreyGeonya Email:[email protected]

Вопросы?