Как выстраивать работу в командах, чтобы она была не только эффективной, но и адаптивной к изменениям?
В последнее время я часто отвечаю на этот вопрос, рассказывая про фреймворк Team Topologies, описанный в книге Мэтью Скелтона и Мануэля Пайса. Он предлагает структурированный подход к организации команд и выстраиванию взаимодействия между ними.
Авторы провели масштабное исследование различных компаний и на его основе разработали фреймворк, который описывает четыре типа команд и три вида коммуникаций между ними.
Типы команд
- Stream-aligned team — это основной тип команды в организации. Такие команды сосредоточены на конкретном потоке ценности (продукте, услуге или функции) и полностью отвечают за разработку и поддержку своих продуктов. Они стремятся минимизировать внешние зависимости, чтобы сосредоточиться на быстрой поставке инкрементов, полезных для пользователей. Как правило, такие команды кросс-функциональные, то есть включают специалистов с различными компетенциями, необходимыми для самостоятельного выполнения задач.
- Platform team — создают платформенные решения, необходимые для работы других команд. Обычно это команды, которые превращают инфраструктуру в сервис для разработчиков. Они должны наладить сбор обратной связи от пользователей их платформы.
- Complicated subsystem team — работают над системами, требующими глубоких специализированных знаний. Примеры таких систем — поиск, рекомендации, финтех.
- Enabling team — помогают другим командам улучшать свои процессы, внедрять новые технологии или решать сложные задачи. Например, это может быть команда экспертизы по качеству, которая проводит аудит и помогает улучшить качество работы, или команда, которая помогает выделить функционал из монолита.
Виды взаимодействия
- Collaboration — команды работают вместе для достижения общей цели. Это самый «дорогой» вид коммуникации, поэтому его стоит использовать только тогда, когда это действительно необходимо.
- X-as-a-service — команды предоставляют сервисы или платформы другим командам с четкими SLA и документированными интерфейсами. Это снижает потребность в частых коммуникациях.
- Facilitating — основной тип взаимодействия для Enabling team. В его рамках они помогают другим командам улучшать процессы или решать технические вызовы.
Чтобы применить фреймворк на практике, необходимо разметить все свои команды по одному из предложенных типов, провести интервью с ними и зафиксировать, какие связи существуют между командами и какого они типа.
Существует бенчмарк, согласно которому, для быстрой и эффективной работы поставки ценности, большинство команд в организации должно быть Stream-aligned team, а их взаимодействие преимущественно — по типу X-as-a-service.
Далее необходимо определить идеальное состояние, к которому хочется прийти, оценить текущий разрыв (гэп) и составить план по его сокращению.
Из приятных бонусов — возможность отслеживать прогресс, контролируя количество команд разных типов, а также типы и количество связей между ними. Можно даже установить целевые метрики, которые помогут отслеживать путь к желаемому состоянию.