Большая статья в блоге Мартина Фаулера про платформенные команды. В статье рассказывается, чем платформенные команды отличаются от продуктовых и рассмотрены основные паттерны взаимодействия между ними на разных этапах развития платформы.
Чем платформенные команды отличаются от продуктовых? Основное различие в определении пользователя. Для продуктовых команд пользователи - это внешние пользователи продукта. Для платформенных команд пользователи - это другие команды компании
Есть 3 стадии развития платформы:
- Миграция на платформу
- Использование платформы
- Эволюция платформы
Миграция на платформу, это когда продуктовая команда должна начать использовать платформу. В этом случае у платформенной команды есть несколько основных способов это реализовать:
- Завести задачу в продуктовую команду
- Внедрить инженера платформенной команды в продуктовую (чтобы он сделал изменения). Это называется Tour of Duty
- Сделать изменения самим. Тут есть 2 варианта - если продуктовая команда доверяет платформенной, то это паттерн Trusted Outsider и платформенная команда просто вносит изменения. Либо же продуктовая команда не доверяет внешним инженерам в достаточной мере и будет проверять, что они делают, тогда это Internal Open Source
Если мы говорим, что платформа должна масштабироваться на большое количество команд, то первый путь самый оптимальный, хоть и не самый эффективный в плане скорости. В реальности же используется микс всех перечисленных методов.
При активном использовании платформы в компании, стиль коммуникаций меняется. Здесь уже продуктовые команды приходят к платформенным с запросами. И здесь применимы все те же самые паттерны, но уже направленные в другую сторону. Задача платформенной команды - сделать так, чтобы продуктовые команды сами могли сделать необходимые изменения, т.к. это - масштабируемый подход. Например, если платформенная команда занимается системой обработкой логов, то она заинтересована предоставить удобную документацию, удобный UX и DX, проводить обучающие сессии, чтобы не нужно было делать что-то за продуктовые команды или консультировать их в ручном режиме
Рано или поздно у продуктовых команд возникает потребность в изменении функциональности платформы. Это, как правило, горящие изменения т.к. продуктовая команда узнает о необходимых изменениях тогда, когда они ей уже нужны. В этом случае платформенная команда опять же заинтересована, чтобы продуктовая команда сама могла сделать все необходимые изменения (т.к. иначе процесс не масштабируется). Однако новые изменения внедрить может не так то просто, поэтому платформенная команда должна предоставлять подробные гайды и хороший DX для внедрения изменений, а также проводить консультации, рекомендовать пути решения задачи, ревьюить дизайн получившегося решения.
В общем, непросто быть платформенной командой - постоянно нужно думать о том, как лучше построить коммуникации с продуктовыми командами - одновременно следить за тем, чтобы коммуникации не требовалось, но предоставлять возможность активной коммуникации в отдельных случаях