Создайте условия для возникающей координации
Сформировав продуктовые группы с кросс-функциональными командами и выделенными функциями, мы создали базовую структуру гибкой организации. Структура — важнейший компонент звездной модели. Но ее одной мало. Еще необходимо научиться интегрировать и координировать работу большого количества людей.
Появляются вопросы: как сфокусироваться на общих целях, избегать дублирования работы и убедиться, что команды используют общие стандарты? Как учиться и обмениваться знаниями? Как управлять зависимостями внутри и за пределами продуктовой группы? Рассмотрим принципы координации в гибкой организации.
Принципы координации в Agile-организации
В типичной организации много выделенных координационных ролей: менеджеры проектов, RTE- и деливери-менеджеры или фиче-координаторы. Координаторами также могут быть Владельцы Продуктов и Скрам-мастера в Copy Paste Scrum. Организации тратят на поддержание такого управленческого аппарата до 33% всех расходов.
Важно понимать, почему это происходит. Организации фрагментируют себя, нарезая узкоспециализированные команды и подразделения, создавая функциональные колодцы, а затем вынуждены вводить координационные роли, чтобы склеить фрагменты.
Например, один тимлид сокрушался, что ходит на шесть (!) планирований Спринта каждую вторую пятницу: «Чтобы убедиться, что команды не изобретают велосипед». Это неудивительно — учитывая, что команды не имеют общего продуктового фокуса и притворяются (потому что существуют многочисленные Бэклоги Продуктов), что работают над разными «продуктами».
Развели структурно бизнес и разработку? Теперь требуется роль менеджера проекта. Команды не кросс-функциональны? Нужна прокладка в виде RTE-менеджера.
Можно героически решать искусственно созданные проблемы или изменить систему так, чтобы они больше не появлялись.
Полуавтономные продуктовые группы и кросс-функциональные команды с общим продуктовым фокусом — прекрасная база. Есть и дополнительные практики, которые мы рассмотрим: сообщества, мультикомандные встречи, путешественники, менторы, скауты, команды первопроходцев, ко-локация, непрерывная интеграция.
Мы передаем ответственность за координацию и выбор конкретных техник командам и функциям, потому что они лучше понимают контекст происходящего и у них больше информации о том, что может сработать.
В комплексном домене нет лучших практик, только возникающие в определенном контексте.
Сообщества
Командам и подразделениям по-прежнему нужно выравниваться по ряду вопросов: обучение, общие стандарты, инструменты, процессы.
Например, продуктовой группе необходимы архитектурные стандарты или единообразный пользовательский интерфейс. Можно сформировать сообщества из представителей команд и подразделений, которым интересна тема, чтобы регулярно обмениваться знаниями, избегать ненужного дублирования работы, поддерживать стандарты и согласованность между подразделениями.
Что важно знать для запуска и развития сообщества.
Сообщества — это неформальные объединения, которые не отображаются в организационной структуре. Они рождаются и умирают.
Сообщества процветают благодаря выделенному координатору с опытом и активной позицией, который организует и фасилитирует встречи.
Участие в сообществах добровольное. Присоединиться могут не только эксперты, но и все, кому интересна тема.
Менеджмент поддерживает сообщества — предоставляет инструменты и место для встреч, выделяет бюджет по запросу.
В МТС Кассе я предложил сформировать сообщества перед первым Спринтом. Я организовал встречу в формате открытого пространства. Любой, кто хотел основать сообщество, должен был выйти в центр комнаты и заявить об этом, а затем написать название сообщества на стикере и приклеить на флипчарт. Меньше чем за полчаса было создано 14 сообществ. Часть из них начали работать уже через несколько дней, остальные — в ходе первых двух Спринтов.
Я также позаботился о том, чтобы у каждого сообщества были цель и рабочие договоренности. Участники команд регулярно участвовали в работе сообществ. Помню встречу по автоматизированному тестированию, которая проводилась в формате моб-программирования, когда вся команда или несколько человек вместе решают одну задачу за одним компьютером. Дизайнер присоединилась к разработчикам ради обучения автоматизации.
Выжили и продолжили работу ключевые сообщества: автоматизация, бэкенд, непрерывная интеграция и архитектурное сообщество.
Мультикомандные встречи
Помните тимлида, который вынужденно ходил на шесть планирований Спринта? Его проблема разрешилась довольно просто. Во-первых, появилось шесть кросс-функциональных команд с общим продуктовым фокусом. Во-вторых, у команд появились общие мультикомандные события, которые создавали общее информационное поле.
Регулярными мультикомандными встречами стали:
общее планирование спринта;
мультикомандное уточнение Бэклога Продукта (PBR);
общий обзор спринта;
общая ретроспектива с представителями;
архитектурные воркшопы.
Теперь у команд есть все условия для возникающей координации. Им достаточно собраться на PBR в одном большом помещении или Zoom, чтобы выявить потенциальные зависимости, дублирование работы и эффективно координировать свои действия.
Важно! Мультикомандные встречи требуют навыка фасилитации на большом масштабе, чтобы не жечь время людей впустую. Обычно подобные встречи проводятся с помощью «схождения-расхождения». После открытой дискуссии или схождения идет работа в малых группах или расхождение, на котором команды работают параллельно. Затем цикл повторяется.
В Mighty Buildings продукт разрабатывали девять команд с общим продуктовым фокусом. В группу «Материалы» входили три команды, которые на второй части Планирования Спринта всегда уединялись в переговорной, потому что между ними существовали перманентные зависимости.
Путешественники
Типичная проблема при формировании команд с общим продуктовым фокусом — нехватка компетенций и незнакомые архитектурные компоненты.
Представьте, что на старте есть три узкоспециализированные команды и каждая работает в одном компоненте. После перехода к кроссфункциональным командам с общим продуктовым фокусом будет по-прежнему три команды, но каждая начнет работать во всех трех компонентах. Не всем может хватить опытных разработчиков, которые справятся с новыми условиями.
Крейг Ларман и Бас Водди в книге Large-Scale Scrum1 предлагают практику путешественников.
Путешественник спасает от нехватки тех экспертов, чьи знания имеют решающее значение для команд. Своей команды у него нет. Во время планирования он присоединяется к команде, которая больше всего нуждается в его опыте, а во время Спринта работает как обычный участник.
У путешественников есть еще одна цель — уменьшить зависимость от себя с помощью обучения в долгосрочной перспективе. Поэтому рекомендуется, чтобы путешественник не работал один, а использовал коллаборативные техники: парную разработку и моббинг. Со временем команды прокачаются, и путешественник будет не нужен.
Некоторым людям нравится такой формат работы — постоянная смена контекста и переход между командами. На воркшопе по формированию команд в одной петербургской компании мы даже создали кластер, куда могли записаться все, кто хотел быть путешественником на перманентной основе. Таких людей оказалось немало.
Менторы
Задача ментора — закрыть нехватку знаний у команд, которым приходится работать в незнакомых областях продукта. Менторы — их постоянные участники, резервирующие время для наставничества. Они используют разные форматы: дизайн-сессии, моб-программирование, ответы на вопросы, мастер-классы и активное участие во встречах сообществ.
Скауты
Скауты — техника координации, которая заключается в том, что команды посылают своего представителя в другую команду, чтобы договориться о чем-либо или получить ценную информацию. Например, это может произойти во второй части общего планирования Спринта. Часто скауты присутствуют на ежедневном Скраме другой команды, если между командами есть зависимости.
Команда первопроходцев
Практика, у которой есть две опции применения. Первая — одна из команд берет на себя ответственность за координацию внешней зависимости продуктовой группы: с отделом снабжения, командой платформы или другими продуктовыми группами. Вторая — одна из команд на несколько Спринтов уходит в исследование новой технологии или бизнес-инициативы, не синхронизируясь с другими командами и не работая над общими задачами из Бэклога Продукта для максимального фокуса. Например, так сделал один Владелец Продукта, дав задание одной из команд исследовать китайский рынок. После трех Спринтов, убедившись, что рынок перспективный, команда вернулась в общий строй, и мы провели ряд мультикомандных воркшопов, чтобы донести эту информацию до остальных команд.
Ко-локация
Джей Гэлбрейт утверждает: чем выше неопределенность задачи, тем больший объем информации нужно обрабатывать лицам, принимающим решения.
Неопределенность напрямую связана с предсказуемостью и изменчивостью. Для продуктовой разработки характерны высокая степень изменчивости и низкая предсказуемость, что вынуждает людей часто подстраиваться друг под друга и координировать свои действия.
Когда люди находятся рядом физически, это резко повышает шансы на спонтанные обсуждения. Поэтому я рекомендую размещать взаимозависимые подразделения на одном этаже и в общем пространстве.
При исследовании операционных зависимостей между разработкой и бухгалтерией в Pasha Pay я внезапно обнаружил, что несмотря на взаимные зависимости и нахождение в отдельных подразделениях, сотрудники не испытывали координационных проблем. «Я просто поворачиваюсь и прошу проверить отчетность», — раскрыла секрет бухгалтер. Она сидела в паре метров от разработчиков.
Принцип Манифеста Agile по-прежнему актуален: «Непосредственное общение — наиболее практичный и эффективный способ обмена информацией как с самой командой, так и внутри». В распределенном контексте помогут инструменты, которые максимально приближают сотрудников к живому общению.
Непрерывная интеграция
Непрерывная интеграция — практика разработки программного обеспечения, когда каждый участник команды вносит свои изменения в кодовую базу и ежедневно объединяет их с изменениями коллег. Каждая интеграция проверяется автоматизированной сборкой с тестированием. Такой подход снижает риск задержек, сокращает усилия по интеграции и помогает создать здоровую кодовую базу.
Если продукт разрабатывает несколько команд, то они должны ежедневно интегрировать свою работу. Непрерывная интеграция создает условия для возникающей координации и поддерживает коммуникацию между командами. Как? Если у меня конфликт с разработчиком из другой команды, то я поговорю с ним или сяду в пару, чтобы разрешить ситуацию. Для непрерывной интеграции нужна массивная сетка автотестов, которым доверяют команды: юнит-тесты, интеграционные, сквозные
Основные идеи
Организации фрагментируют себя, нарезая узкоспециализированные команды и подразделения, создавая функциональные колодцы, а затем вынуждены вводить координационные роли, чтобы склеить фрагменты.
Agile-организации создают условия, при которых люди сами координируют свои действия, минимизируя количество выделенных координационных ролей. Создание продуктовых групп и команд с общим продуктовым фокусом — прекрасная база для этого.
Практики для возникающей координации: сообщества, мультикомандные встречи, путешественники, менторы, скауты, команды первопроходцев, ко-локация и непрерывная интеграция.

Книга Ильи Павличенко «Дизайн Agile-организаций
Издательство «Питер»
Отрывок из книги предоставлен издательством «Питер»
Книга в продаже на piter.com
Больше книг — в Библиотеке TatCenter
Сообщить об опечатке
Текст, который будет отправлен нашим редакторам: