Глава 3. Закон двух пицц: когда места на всех не хватает
Первые дни после разговора о миссии прошли на подъёме. Люди начали разговаривать, спорить, даже иногда смеяться. Но к концу недели Алексей заметил странную вещь: совещания, которые он ввёл ежедневными, стали затягиваться.
То, что раньше решалось парой фраз, теперь требовало многословных обсуждений. Павел раздражался из-за того, что его дёргают по пустякам. Катя, наоборот, хотела участвовать во всём и обижалась, если что-то обсуждали без неё. Денис, как обычно, сыпал терминами, и Лена призналась Алексею, что перестала понимать, о чём речь.
Апогей наступил в четверг. В переговорке собрались шестеро. Павел развернул схему на весь стол, Катя пыталась втиснуть свой макет, Денис встал у флипчарта и начал рисовать сложную диаграмму. Лена сидела в углу и ничего не видела. Максим просто молчал, потому что боялся встрять.
— Так, стоп! — не выдержал Павел. — Я ничего не слышу! Мы можем как-то структурировать этот балаган?
— А что ты предлагаешь? — огрызнулся Денис. — Мне нужно, чтобы все понимали логику!
— Я уже неделю ничего не делаю, потому что мы всё время обсуждаем! — Катя всплеснула руками.
— Ребята, — тихо подняла руку Лена, — можно я скажу? Я уже час сижу и не понимаю, к чему мы клоним. Может, разобьёмся на группы?
Алексей слушал и вдруг вспомнил статью, которую читал года два назад. Там была история про Джеффа Безоса и закон двух пицц: команда должна быть такого размера, чтобы её можно было накормить двумя пиццами. Если пицц нужно больше, то команда слишком большая, эффективность падает. Тогда он подумал: «Забавная метафора». А сейчас метафора ожила.
— Тихо! — сказал он громко. — Я понял, в чём проблема. Нас слишком много для таких встреч.
— В смысле? — удивился Павел. — Нас всего шестеро.
— Шестеро — это уже предел. — Алексей подошёл к флипчарту и нарисовал шесть точек, соединённых линиями. — Количество каналов коммуникации растёт не пропорционально числу людей, а по формуле n(n-1)/2. При трёх людях есть три канала. При четырёх - уже шесть. При пяти - десять. При шести - пятнадцать! Вдумайтесь, сейчас мы пытаемся одновременно управлять пятнадцатью диалогами. Неудивительно, что мозг кипит.
— Это я и без формулы знаю, — проворчал Павел. — Но ты предлагаешь кого-то уволить?
— Нет. Я предлагаю перестать собираться всем составом по каждому вопросу.
— А если я хочу участвовать во всём? — надулась Катя. — Вы там без меня что-нибудь решите, а я потом мучайся с макетом.
— Вот! — подал голос Максим. Все удивлённо обернулись: обычно он молчал на планерках. — Я тоже боюсь, что если меня не позовут, а потом спросят, почему я не в курсе. Мне… мне вообще проще, когда народу меньше, но я не хочу пропустить важное.
— Макс прав, — добавила Лена. — Я иногда чувствую, что теряю нить, когда все говорят. Но если меня не позовут на обсуждение данных, я потом не смогу гарантировать их качество.
Алексей посмотрел на команду. Страх быть исключённым витал в воздухе сильнее, чем усталость от совещаний. И это было честно.
— Хорошо, — сказал он, взяв маркер. — Давайте тогда договоримся открыто. Чего мы на самом деле боимся? Катя?
— Боюсь, что вы без меня примете архитектурное решение, которое сделает мой интерфейс тормозным или нелогичным. Я хочу участвовать во всём, что касается пользовательского опыта.
— Лена?
— Мне важно понимать, какие данные откуда приходят и в каких разрезах. Если меня не будет на обсуждении источников, я потом соберу не ту витрину тестов.
— Павел?
— Я злюсь не потому, что меня зовут, а потому что на этих встречах мы часами ходим по кругу. Мне нужно, чтобы архитектура утверждалась быстро, а я потом спокойно писал код. И да, меня не надо тащить на обсуждение цветовых схем или индексов.
— Денис?
— А я люблю объяснять, — Денис развёл руками. — Но вижу, что иногда перебарщиваю. Мне важно, чтобы конечная реализация соответствовала задумке. Без меня не должны утверждать технические детали, которые потом придётся переписывать.
— Максим?
— Я… мне проще работать, когда я точно знаю зону своей ответственности. И когда меня спрашивают заранее, а не ставят перед фактом. В большой толпе я теряюсь.
Алексей записывал тезисы на флипчарте. Получился столбец страхов, а напротив по сути столбец зон ответственности.
— Смотрите, — он обвёл записи. — Мы сейчас выяснили, что каждого беспокоит не количество встреч, а потеря влияния на свою зону. И у каждого она своя. Значит, нам нужно разделить не работу, а протоколы обсуждения.
Алексей начертил таблицу:
Зона
Кто отвечает
Кто согласует
Кого информируют
Интерфейсы
Катя
Денис (техреализуемость)
Все
Архитектура бэка
Павел
Денис, Лена
Катя (по API)
Данные
Лена
Павел
Денис
Инфраструктура
Максим
Павел
Все
Теперь правило, — Алексей постучал маркером. — Если вопрос касается только одной зоны — собирается её владелец с согласующими. Максимум три человека. Если вопрос пересекает зоны — мы собираем всех, но такие встречи планируем отдельно и не чаще двух раз в неделю.
— А что делать, если мне кажется, что я должен участвовать, а меня не позвали? — спросила Катя.
— Смотри на эту таблицу. Если вопрос не про интерфейсы и не про API, зачем терять время? Твоя ценность заключается в создании качественных макетов, а не в количестве часов в переговорке. Договорились?
Катя кивнула, хотя было видно, что не до конца успокоилась.
— И ещё, — добавил Алексей, — раз в две недели мы всё равно собираемся всем составом, чтобы синхронизировать контекст. На этих встречах Денис обещает говорить без формул, а я обещаю не превращать их в оперативки.
— А пицца будет? — неожиданно спросил Максим.
— Будет, — рассмеялся Алексей. — Но ровно две. Если нам понадобится третья, значит мы снова раздули команду и пора возвращаться к этой таблице.
***
На следующий день Алексей перекроил расписание. Утренняя планерка теперь длилась не больше пятнадцати минут, и только синхронизация. Все технические обсуждения уходили в малые группы. Павел с Денисом за час набросали архитектуру, которую раньше мурыжили неделю. Катя с Леной вдвоём составили глоссарий терминов, чтобы Лена точно понимала, какие данные приходят в интерфейс.
Сложнее всего оказалось Кате. В первый же день она поймала Алексея в коридоре:
— Слушай, я понимаю всё про зоны, но сегодня Павел с Денисом обсуждали кэширование. Это же влияет на скорость загрузки экранов! Почему меня не позвали?
— А ты спросила у них, повлияет ли это на интерфейс? — спокойно ответил Алексей.
— Нет, но…
— Позвони им сейчас. Если повлияет, то они введут тебя в курс вопроса и в следующий раз возьмут с собой. Если нет, то ты сэкономила час и спокойно доделаешь макет.
Катя позвонила. Через пять минут она вернулась с виноватой улыбкой:
— Они сказали, что это внутренняя оптимизация, на API никак не влияет. И… они правы. Я бы просто сидела и слушала непонятное.
— Ты бы сидела и переживала, что тебя не слышат, — улыбнулся Алексей. — А так ты уже доделала форму регистрации?
— Почти. Кстати, я за сегодня сделала больше, чем за прошлую неделю.
***
К концу недели Алексей заметил, что люди стали уходить с работы вовремя. Катя, например, в среду впервые за месяц успела забрать дочку из сада. Она прислала в общий чат фото: девчушка с бантом висела на шее у Кати.
«Мама, ты пришла!» — гласила подпись.
Алексей улыбнулся и убрал телефон. Иногда эффективность измеряется не только в строках кода.
В пятницу вечером, перед уходом, Катя подошла к флипчарту, где всё ещё висела их миссия, и рядом нарисовала большую пиццу, разрезанную на шесть кусков.
Подпись гласила:
ДВЕ ПИЦЦЫ МАКСИМУМ. ОСТАЛЬНОЕ - В МАЛЫЕ ГРУППЫ
А снизу кто-то (кажется, Максим) дописал:
«И не забывать забирать детей из сада».
Чуть ниже, уже другим почерком, появилось:
«И таблица зон ответственности - на флипчарте. Фото всем в чат».
Алексей сфотографировал флипчарт и отправил в общий чат. Теперь этот снимок висел в памяти каждого, напоминая: эффективность рождается не из количества встреч, а из честности о том, кому что на самом деле нужно.