Как лучше сформировать команды?
Сейчас достаточно много говорится о структуре команд.
Давайте рассмотрим варианты, какие структуры бывают и когда какие лучше использовать.
Культура следует за структурой
Когда мы говорим "структура" команд в организации, то обычно имеем ввиду либо компетенции внутри команды, либо то, вокруг чего эти команды создаются. Давайте начнем с того, как объединение команд может быть устроено. Потом посмотрим что такое продукт, вокруг которого часто формируются команды и коснемся LeSS подхода и SAFe фреймоворка, как они предлагают делать структуру команд.
Антология структуры команд

1

Silos teams

Какие подходы традиционно использовались в организациях? (и до сих пор их можно встретить в государственных или очень крупных корпорациях)
Сначала были команды-отделы (аналитики, разработчики и т.д.), так называемы "функциональные колодцы". С началом движения Agile договорились, что при таком подходе любая работа занимает слишком много времени на координацию для её завершения. И такие команды в современных организациях остаются только, если:
  1. компетенцию очень сложно передать другим (data science, compliance и cybersecurity и т.д.);
  2. такие люди нужны в команде ооочень редко и нет смысла их заводить в какую-то команду (финансисты, HR, бухгалтерия).
Такие команды можно оставлять, если зависимости на них от других команд минимальны при создании ценности. Большая же часть команд должна быть кросс-функциональной.

2

Component teams

Т.е.получаем команду или группу команд, внутри каждой из которых есть все необходимые компетенции (тестирование, разработка и т.д.) и каждая может независимо делать доработки. Но, зачастую, только какой-то одной компоненты/сервиса/системы (редко нескольких), т.е. команды-компоненты/системы. В таких случаях, доработка на этой системе проходит достаточно хорошо. А вот бизнес смысла нет (мы сейчас не говорим про доработки "монолитов", когда любой бизнес функционал делается в общем коде). Только вот почти любая бизнес задача требует разработки на нескольких системах/компонентах. И, в итоге, опять требует больших затрат на координацию и приоритизацию.
Где сейчас имеет смысл держать такие команды:
  1. монолиты, не разбитые на компоненты/сервисы;
  2. независимые системы (обычно на этапе создания какой-то функции, до входа в общий ландшафт организации);
  3. legacy системы. Если систему собираются выводить из эксплуатации, то обучать работе с ней другие команды невыгодно и остается команда, которая "проводит систему в последний путь".
Некоторые говорят, что сейчас этот подход пропагандирует SAFe, но там сложнее. Разберем позже.

3

Functional teams

Следующим подходом, а иногда в параллель с предыдущим, стали кросс-компонетные команды. Но, опять же, для того, чтобы команды меньше тратили времени на обучение и больше на разработку, появились специализации по бизнес функционалу. Например, одна команда пишет корзину, другая обработку платежа, третья списки. На старте чего-то большого это хорошо, т.к. для всех есть критически важный функционал и вроде все по большей части независимы. Однако, здесь появляется другая проблема. Со временем происходит снижение поставляемой ценности, и команда начинает придумывать себе задачи, вместо того, чтобы переключиться на самое важное для продукта в целом. И мало кто может заметить этот момент. Особенно, если есть деньги и можно не особо вдаваться в детали какой возврат на инвестиции от команды идет. Это постоянно случается в крупных компаниях, где деньги берутся из общей копилки и никто не хочет терять подчиненных. Такие команды-функции хороши и полезны когда:
  1. нужно довести до работоспособности много функций нового процесса быстро и параллельно;
  2. во время миграции со старой платформы на новую, чтобы быстро сделать самые важные блоки.

4

LeSS teams

Чтобы избежать снижения прозрачности и дисфункций предыдущего подхода руководство может внедрить различного рода контроли. Например cost/value подход. Сам по себе он неплох, но структура все равно будет направлять команды на разного рода дисфункции. Чтобы это системно полечить, компании со временем начинают использовать подходы к структуре из LeSS. Где команды становятся полностью end-to-end и кросс-функциональны, так называемые feature-teams. И каждая команда может взять любую задачу из списка самых приоритетных по "продукту". Это конечно дороже чем предыдущий подход, за счет того, что люди тратят больше времени на обучение. Однако, это окупается за счет работы на самое ценное вместо непонятных "бантиков". Понятно, что когда приходят новые "большие задачи", команды ради скорости могут вернуться к предыдущему подходу. Но потом снова нужно будет развиваться до этого типа.
Подобную структуру рекомендуют когда:
  1. есть дисбаланс в функциональности для реализации и нужно многими командами сделать доработки в одной области;
  2. рыночные потребности часто меняются и нужно быть очень гибкими, быстро переключаясь на развитие различного функционала;
  3. команды долгое время работают в своих функциях и необходимо убрать функциональный "феодализм".
Но это только один взгляд на подход к формированию команд.
Можно также посмотреть в каких случаях и как можно миксовать команды обозначенные выше в Team Topologies (можно посмотреть неплохой разбор от Ильи). Или еще один аналогичный подход от Юргена Апелло UnFIX.
Другой, более высокоуровневый, часто возникает у разного рода middle/upper management. Как правильно "нарезать" команды? Вокруг чего их стоит объединять? И здесь даже LeSS с широчайшим определением "продукта" не дает четкого ответа, какие Area должны быть в случае LeSS Huge.
Однако у LeSS есть неплохая идея о минимизации зависисимостей. Т.е. команды нужно строить так, чтобы зависимостей и, как следствие, очередей задач между командами было поменьше. Это важный принцип, помогающий достичь скорости релизации идей.
Объект работы команд
Сейчас весьма популярен подход объединения команд вокруг "продукта". Его пропагандируют McKinsey. Которые, в свою очередь, взяли за основу подход компании Spotify. Однако определения "продукта" четкого нигде нет. Давайте разберемся почему.
Варианты "продукта"
Клиент
У нас есть Клиент, которого можно определить как персону. А можно, как даже некоторый сегмент - собирательный образ различных критериев (соц.-дем., возраст, пол, и т.д.).
Потребности
Далее, у него есть потребности. Хочет быть счастливым, богатым, с крышей над головой, а может быть просто забить гвоздь. И здесь нам на помощь приходят различные Jobs-to-be-done. И эти потребности могут быть у разных персон и сегментов схожи.
Сервисы
Для удовлетворения потребностей существуют некоторые наши "сервисы". То, чем мы удовлетворяем потребности клиента. Например, для банка: Кредиты, Карты и т.д. Причем наши сервисы могут закрывать разные потребности клиентов. Также, несколько сервисов могут закрывать одну потребность. Чаще всего именно эти "сервисы" компания и понимает под продуктом. Но если бы мы остановились на этом, было бы слишком просто. Поэтому...
Внутренняя структура
У компании есть еще "каналы" для предоставления сервисов. Есть различные внутренние процессы с "этапами", которые могут проходить через всю компанию. А также клиентские пути, которые с процессами могут пересекаться но не совпадать. Ну и конечно внутренние платформы, call-центры и множестов других логических объединений, что тянет на "точку" командообразования
Вспоминаю замечательное время, когда на входе в компанию в качестве консультанта, меня попросили дать правило формирования команд, а дальше они сами все сделают...
Интересный подход, который отчасти решает проблемы формирования команд, предлагает SAFe. Предполагается, что вы через Value Stream Workshop определяете цепочку поставки ценности до клиента, Operational Value Stream (OVS). Дальше понимаете, что хотите в ней что-то поменять. Определяете системы, нуждающиеся в доработках. И под эти изменения формируете команды - так называемый Development Value Stream(DVS). Т.е. команды формируются на время, вокруг систем и задач в них. Сложности возникают здесь больше во взаимодействии, если таких Stream много для большого изменения. А также их сложно потом расформировать вовремя. И нужно настраивать четкое целеполагание, бюджетирование и процесс отслеживания работы. Ну и еще мотивация команды, которая делает "кусочек" чего-то достаточно низкая. И, если ожидается переход команд на другой фронт работ, то и стимула "сделать на века" не очень много. Так как нет чувства "владения". Хотя, при должном соблюдении техник, можно сделать хорошо.
Development Values Stream
В итоге, чтобы понять как "нарезать" команды, нужно смотреть на следующие параметры:
  1. этап жизненного цикла продукта (новый продукт или доработка старых);
  2. масштаб продукта (огромный ландшафт, или небольшой продукт на несколько команд);
  3. предполагаемы масштаб изменений (кусочками или переработка всего);
  4. частота изменений (много частых изменений или разовые);
  5. как поделен бизнес (договориться на 2х равных по "весу" бизнес заказчика почти невозможно. Закона Конвея не избежать)
Дальше пробуете и адаптируете.
Главное - будьте готовы все полностью поменять, если того требует ситуация.
Если хотите обсудить вашу структуру, ее дисфункции и варианты изменения, пишите в tg: @MaksZotov