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

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

Embed Size (px)

DESCRIPTION

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

Citation preview

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

Готово