Практики масштабирования гибкой разработки

58
Паттерны масштабирования разработки ПО Асхат Уразбаев Agile Coach ScrumTrek

Upload: askhat-urazbaev

Post on 23-Dec-2014

850 views

Category:

Software


4 download

DESCRIPTION

Бизнес требует от ИТ постоянно ускорять обороты. Сроки выхода на рынок постоянно сокращаются. Применение гибких методологий в небольшой команде позволяет значительно уменьшить Time-to-Market. Однако в крупной компании прямое использование Agile/Scrum затруднено: даже простое на первые взгляд изменение бизнес процесса может затрагивать несколько систем, за которые отвечают разные команды. Выпуск релиза приходится координировать с большим количеством заинтересованных лиц. Это сильно замедляет и проектирование и финальное интеграционное тестирование. В результате добиться снижения Time-to-Market кажется очень непростой задачей, осложненной к тому же непростой политической ситуацией, типичной для крупной организации. Мы поговорим о системном подходе к снижению Time-to-Market для сложных задач координации релиза, характерных для крупных организаций

TRANSCRIPT

Page 1: Практики масштабирования гибкой разработки

Паттерны масштабирования разработки ПОАсхат УразбаевAgile CoachScrumTrek

Page 2: Практики масштабирования гибкой разработки

Асхат Уразбаев

• ScrumTrek• Agile Coach• Управляющий партнер

• В прошлом• Программист, менеджер,

архитектор процессов

Page 3: Практики масштабирования гибкой разработки
Page 4: Практики масштабирования гибкой разработки

Front End

Back End

Testers

Architect

OPS

6 ppl

8 ppl

4 ppl

BossДо-о-олго!

Page 5: Практики масштабирования гибкой разработки

С точки зрения заказчика

РазработчикиФичиПродукт

Page 6: Практики масштабирования гибкой разработки

Внимание, черный ящик

Разработчики специализированы по… • Ролям • Знанию технологий• Знанию бизнес домена• Знанию компонентов

Идея

анализ

проектирование

разработка

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

релиз

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

Page 7: Практики масштабирования гибкой разработки

Backlog (список фич)

Продукт

Page 8: Практики масштабирования гибкой разработки

Почему может быть долго?

Продукт

Очередь здесьЖдет начала работы

Очередь здесьС начала работы до окончания

Page 9: Практики масштабирования гибкой разработки
Page 10: Практики масштабирования гибкой разработки

Закон Литтла

• Среднее время ожидания = размер очереди / скорость обслуживания

• Lead Time = WIP / Average Completion Rate

200 человек / 20 чел в час = 10 часов

Page 11: Практики масштабирования гибкой разработки

Почему WIP большой?

Page 12: Практики масштабирования гибкой разработки

1. Бизнес «упихивает задачи»

Продукт

Входной поток больше выходного

Здесь жизни нет

Page 13: Практики масштабирования гибкой разработки

2. Узкое место (bottleneck)

Продукт

Несбалансированная команда

Page 14: Практики масштабирования гибкой разработки

2. Узкое место (bottleneck)

ПродуктВариации в баклоге

Page 15: Практики масштабирования гибкой разработки

3. Дефекты

Продукт

Page 16: Практики масштабирования гибкой разработки

ДефектыИдея

анализ

проектирование

разработка

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

релиз

Page 17: Практики масштабирования гибкой разработки

Стоимость исправления дефектов

Page 18: Практики масштабирования гибкой разработки

4.Изменение требований

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

Page 19: Практики масштабирования гибкой разработки

5. Большие фичи

Продукт

Время реализации растетПоявляются узкие места

Page 20: Практики масштабирования гибкой разработки

Паттерн «Кроссфункциональная команда»

• Взаимопомощь • Взаимозаменямость• Ранняя интеграция• Быстрое

исправление дефектов

• Минимум бюрократии

Размер: 7±2

Page 21: Практики масштабирования гибкой разработки

Scrum и Kanban

• Таймбокс • WIP Limit

РазработкаОчередь Тест Готово

3 2

Готово

Page 22: Практики масштабирования гибкой разработки

Интеграция с онлайн-банком

Разбиение работ на Пользовательские Истории

База данных Server Side Front end

Оплата ЖКХ

Свободный платеж

Оплата мобильного телефона

Page 23: Практики масштабирования гибкой разработки

Spotify.com

http://agilerussia.ru/practices/spotifyscaling/

Page 24: Практики масштабирования гибкой разработки

• s

Page 25: Практики масштабирования гибкой разработки

Front End

Back End

Testers

Architect

OPS

6 ppl

8 ppl

4 ppl

BossДо-о-олго!

Page 26: Практики масштабирования гибкой разработки

Boss

Feature Team 1 Feature Team 2 Feature Team 3

Architect

Отстойно!

Я больше не могу

контролировать ВСЕ!

Page 27: Практики масштабирования гибкой разработки

Boss

Feature Team 1 Feature Team 2 Feature Team 3

Architect

Page 28: Практики масштабирования гибкой разработки

Паттерн «Виртуальная команда»

• Из разных команд• Регулярно собираются вокруг

общей проблемы– Архитектура, инфраструктура,

тестирование, …

Page 29: Практики масштабирования гибкой разработки

Spotify

http://agilerussia.ru/practices/spotifyscaling/

Page 30: Практики масштабирования гибкой разработки

Service Team, Functional Teams

• Service Team– Помогает другим командам– Не несет прямой ценности

пользователю– Заказчики — другие команды

• Functional Team– Команда специалистов сходной

компетенции

Page 31: Практики масштабирования гибкой разработки

Flow Design

Web

Core Lib

Backend

Video Encoding

iOS AndroidWinPhone

Testing

Page 32: Практики масштабирования гибкой разработки
Page 33: Практики масштабирования гибкой разработки

Работа над одной фичей разными командами

Page 34: Практики масштабирования гибкой разработки

Технологический стек Feature Team

Android

iOS

C++

Obj C

Video

Java

JavaScriptHTML/CSS

Ruby/Python

Page 35: Практики масштабирования гибкой разработки

Feature Team

• Большой размер• Проблемы с

взаимопомощью • Изолированные

работы• Проблемы с

поставкой• Бессмысленность

стендапов

Page 36: Практики масштабирования гибкой разработки

Flow Design

Web

Core Lib

Backend

Video Encoding

iOS AndroidWinPhone

Testing

Узкое место

Page 37: Практики масштабирования гибкой разработки

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

Бутылочное горлышко

Capacity problem Rework problem

Page 38: Практики масштабирования гибкой разработки

Паттерн #X. Устранение узких мест

~throughput

Page 39: Практики масштабирования гибкой разработки

Паттерн #X. Устранение узких мест

Page 40: Практики масштабирования гибкой разработки

Теория ограничений

• Identify. Определить ограничение• Exploit. Использовать по

максимуму• Subordinate. Подчинить работу

ограничению• Elevate. Расширить ограничение

по максимуму

Page 41: Практики масштабирования гибкой разработки

Identify

Type I• Быстрая

реакция• Работа на

пределе, переработки

• Некогда улучшать качество

Type II• Долгие

ожидания результата

• Длина очереди заявок со стороны других командType III

• Долгая реализация

Page 42: Практики масштабирования гибкой разработки

Exploit

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

• Освободить от лишних митингов, добавить PM для административной работы

Page 43: Практики масштабирования гибкой разработки

Subordinate

• Уменьшить планы до возможностей команды-бутылочного горлышка

Page 44: Практики масштабирования гибкой разработки

Elevate

• Нанимать по мере возможности

Page 45: Практики масштабирования гибкой разработки

Rework

Page 46: Практики масштабирования гибкой разработки

Rework problem

Page 47: Практики масштабирования гибкой разработки

Design

Web

Core Lib

Backend

Video Encoding

iOS AndroidWinPhone

Testing

Где узкое место?

Page 48: Практики масштабирования гибкой разработки

Паттерн «Интеграционная команда»

• Кросс-функциональная команда

• Там где rework максимальный

• Супер-спецы

Размер: 7±2

Page 49: Практики масштабирования гибкой разработки

Структура баклога

Интеграционные фичи ~ 30% баклога

Team 1Team 2Team 3

Page 50: Практики масштабирования гибкой разработки

Узкое место может измениться

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

• «Путь» фичи через команды может быть различным

• Количество фич разного типа меняется

Page 51: Практики масштабирования гибкой разработки

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

Page 52: Практики масштабирования гибкой разработки

Releases и Portfolio Kanban

• Короткие релизы • WIP Limit

Business CaseОчередь Development Готово

Готово

Список фич

Релиз

Page 53: Практики масштабирования гибкой разработки

Tiger Team• Временная• Команда

формируется вокруг таска

• Небольшая • Сложнее

балансировать• Проще набрать

Feature Team• Постоянная• Таски выдаем

команде• Крупная• Проще

балансировать нагрузку

• Сложнее набрать

Page 54: Практики масштабирования гибкой разработки

4 keystone habits (by Ahmed Sidky)1. Коммуникации и

взаимопомощь2. Поставлять

эволюционными улучшениями

3. Интегрировать как можно раньше

4. Собирать обратную связь на всех уровнях как можно раньше

Page 55: Практики масштабирования гибкой разработки

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

Page 56: Практики масштабирования гибкой разработки

Специальные роли

• Subject Matter Expert – Консультант – Присоединяется где нужен

• System Owner– Отвечает за качество и целостность

компонента

Page 57: Практики масштабирования гибкой разработки

Summary

• Functional Team

• Feature Team• Tiger Team• Service Team• Virtual Team• SME • System Owner

РазработкаОчередь Ревью Готово3 2

Готово

РазработкаОчередь Интеграция Готово

В работе

Готово

Концепт

Доска задач продукта

Доски команд

РазработкаОчередь Ревью Готово3 2

ГотовоРазработкаОчередь Ревью Готово

3 2

Готово