Пару лет назад мне довелось принять участие в переходе из функциональной модели разработки в продуктовую. На мой взгляд, переход неудачный, а потому полученный опыт имеет особенную ценность.
Я наблюдал эту трансформацию с позиции тимлида одной из платформенных команд, поэтому у меня была возможность видеть изменения самого процесса работы над проектом, что позволило мне понять причины возникших проблем, которые привели к провалу всей этой истории.
Я хочу описать получившуюся структуру команды с ее новыми характеристиками, которые стали причиной возникших трудностей, которые, в свою очередь, не позволили достичь поставленных целей.
Начну с вопроса, чем отличается платформенная модель от продуктовой?
Платформенная модель или функциональная - это классическая модель процесса разработки с функциональным разделением команд. В такой модели обычно есть один владелец продукта, один менеджер проекта и функциональные команды аналитиков, дизайна и разработки, например, Android, iOS, web frontend, backend. В каждой такой платформе есть один тимлид и несколько разработчиков. Т.е. каждая команда - это отдельная функция, которая обслуживает все продукты (части одного проекта).
Продуктовая модель или дивизионная - это модель, при которой деление ведется не по функциям, а по продуктам. Каждый продукт обладает всем необходимым для того, чтобы поддерживать свою работу, т.е. самостоятельно выполняет все необходимые функции. Такая продуктовая команда состоит из владельца продукта, дизайнера, QA, аналитика и разработчиков с каждой платформы, на которой этот продукт представлен. Т.е. каждая команда - это отдельный продукт, который представлен на всех платформах.
Лично я ничего не имею против этих моделей, каждая из них призвана решать свои задачи. Но модели должны адекватно подбираться к текущим условиям.
Начальные условия (дано)
У нас была классическая схема:
Менеджер |
1 |
Владелец продукта |
1 |
Команда дизайнеров |
3 |
Архитектор |
1 |
Команда QA |
7 |
Три группы разработки: Android, iOS, web |
по 5-7 разработчиков в команде и одному тимлиду |
Все задачи от бизнеса аккумулировал и приносил в команду владелец продукта.
Процесс разработки: скрам (плюс/минус).
Трансформация
В один прекрасный день руководство компании собрало всех руководителей с целью презентовать новую структуру команды, к которой мы должны были прийти. Нам показывали красивые слайды и рассказывали, как мы здорово будем работать по новой схеме. Таких совещаний было довольно много.
Целевая схема трансформации:
Должны были быть сформированы пять продуктовых команд. Для этого уже приняли на работу соответствующее число владельцев продукта.
Сомнения?
Конечно! У команды было очень много вопросов.
Основной вопрос: Какую цель мы хотим достичь таким переходом?
Ответ: Устранить рассинхрон по платформам для новых фичей. Выделение продуктовых направлений должно было позволить выпускать фичу одновременно на всех платформах.
Комментарий: Да, у нас была проблема в том, что фичи выходили на платформах несинхронно. Бывало, что выход фичи на других платформах опаздывал на пару месяцев. Но на то были определенные причины: технические и ресурсные.
Главное сомнение: А точно нам подходит эта модель? Текущих ресурсов команды недостаточно, чтобы прийти к целевой схеме.
Ответ: Многие крупные компании успешно применяют эту модель (карго культ?!). Вопросы с ресурсами будем решать по ходу.
А дальше все просто:
Каждая команда должна была состоять из владельца продукта, платформенных разработчиков и техлида, который мог бы технически вести эту команду. Т.к. нужно было сформировать аж 5 команд, то мы тут же уперлись в ресурсы.
Какие решения нашел менеджмент:
Некоторых разработчиков поднять на уровень техлидов, тем самым уменьшив команду разработки еще на пять человек.
Оставшихся разработчиков распределить по командам. Те команды, которым не досталось разработчиков, должны были “шарить” их с другими командами.
Продуктовые команды должны были использовать общие ресурсы дизайнеров и QA.
В итоге получилось, что в каждой продуктовой команде было максимум по одному платформенному разработчику, а в некоторых командах были платформенные дыры без разработчиков, и такие команды вынуждены были одалживать разработчиков в других командах.
Все, хватит вопросов и критики, запускаемся…
Какие возникли проблемы
Все возникшие проблемы были следствием некоторых характеристик получившейся структуры. Я буду описывать характеристику и проблемы, которые из-за нее возникли:
1. Техлид продукта - вчерашний разработчик платформы
Новоиспеченные техлиды по факту стали системными аналитиками. И им это не понравилось. И через пару месяцев они все захотели вернуться в разработку. Также ситуация осложнялась тем, что техлидами сделали молодых ребят, которые были уровня мидл-разработчик (плюс/минус), и им недоставало опыта для этой работы. К тому же позиция техлида подразумевает работу с людьми, а это не всем разработчикам подходит.
2. Один разработчик от платформы в команде
Bus-factor в команде стал критическим. Всего один человек. Отпуск, болезнь и целая платформа продукта встала.
Разработчики стали работать в одиночку. Некому провести код-ревью, не с кем обсудить какие-то детали проекта и т.д. А это оказывает негативное влияние на людей, привыкших работать в команде.
Скорость разработки продукта очень сильно снизилась. Если раньше, работая в платформенной команде, над фичами одного продукта могло работать несколько разработчиков, то теперь продуктовая команда должна рассчитывать только на силы одного разработчика.
3. Неправильно сформированные продукты
У двух из пяти продуктовых команд не было достаточно задач, чтобы непрерывно нагружать хотя бы одного платформенного разработчика. По этой причине разработчики в этой команде сильно скучали. Так как продукты были изолированы, тимлид больше не мог перераспределять ресурсы, планированием занимался сам владелец продукта. В результате одни разработчики маялись бездельем или делали какие-то мелкие скучные задачи, а другие очень долго делали свои фичи в одиночку.
Граница между продуктами была сильно размыта, поэтому часто возникали спорные ситуации, чья это проблема и кто должен ее решать. Из-за чего решение проблемы затягивалось на очень длительный срок. От этого сильно страдали клиенты.
4. Недостаток самостоятельных ресурсов у продуктов
Команды, у которых не было своих разработчиков, месяцами ждали реализации своих даже очень простых фичей. Опять же, из-за изолированности продуктов и нежелания владельцев коммуницировать друг с другом и делиться разработчиками. В общем, шаринг разработчиков не работал (недавно в книге Д. Рейнвотера “Как пасти котов” прочитал, что подобные матричные схемы для разработчиков недопустимы).
Конкуренция за общие ресурсы. Вообще в ИТ продуктовая модель пришла из бизнеса, а там давно известно, что такая модель ведет к конкуренции продуктов между собой. Есть интересная статья на Хабре про это. В моем случае, у продуктов не было своих дизайнеров и тестировщиков, и за эти ресурсы шла неприятная кулуарная борьба.
5. Отсутствие тимлида, как прослойки между менеджментом и разработкой
Хороший тимлид оберегает своих разработчиков практически от всех контактов с менеджерами. В получившейся схеме тимлида у команды не осталось, а разработчики были вынуждены общаться напрямую с владельцами продуктов, которые не были техническими специалистами. Это общение частенько проходило очень эмоционально. Двух разработчиков команда потеряла именно по этой причине.
Что в итоге
Получившаяся модель не смогла достичь поставленной цели. Платформы так и не смогли синхронизировать функционал. А продукты так и не стали самостоятельными.
В первые пару месяцев команда лишилась четырех разработчиков. А еще через некоторое время и сами зачинщики этой трансформации благополучно ушли в другую компанию реализовывать свои блестящие идеи там. Команде ничего не оставалось, как перестроиться в некую гибридную схему, чтобы хоть как-то сгладить выше описанные проблемы.
На мой взгляд, главная причина провала в том, что эта трансформация была искусственной. У команды не было естественных предпосылок для такой трансформации (физическое расширение команды и/или естественное формирование продуктов внутри проекта). Команда была небольшая и она нормально работала.
p.s. Сейчас мне уже кажется, что вся эта трансформация случилась, потому что кто-то просто преследовал свои личные корыстные цели.
Спасибо за внимание.
Подписывайтесь на мой канал в телеграмме @ar2code.
Комментарии (6)
ilnuribat
13.06.2023 14:33-1Насчёт тимлида - в скраме его нет. В скраме разработчик должен общаться с бизнесом, в лице которого выступает по
Если тимлид - это прослойка, то появляется дополнительный "глухой телефон", это тоже проблема. Странно, что разработчик не хочет общаться с "бизнесом"/ПО. Ведь разработчик получает зп не из черного ящика, а от деятельности бизнеса, и логично что нужно работать сообща
kenoma
Не очень понятно, у вас в первоначальной схеме и так было три группы разработчиков со своими тимлидами, по идее ваша продуктовость должна была расти в сторону увеличения\наращивания этих групп под новые продукты, а вы решили сделать 5 параллельных иерархий над тем же ресурсом, что и был.
ar2code Автор
Если правильно понял комментарий...Как раз и была проблема в том, что под желаемое количество иерархий ресурсов не хватало, и их никто не планировал наращивать.
kenoma
То что вы описали в статье это была попытка скопипастить существующие процессы в полной иерархии, со своими PM и PO в каждой, но при этом переиспользовать существующий ресурс с перспективой замещения вакантных мест. Это хорошо бы сработало, если бы у вас был источних толковых линейных менеджеров, которые бы быстро смекнули недостаток ресурсов и подсветили бы проблему на самом вверху и сумели бы изыскать ресурсы. Ну и плюс, смогли бы осуществить трансформацию вашей убер-команды бескровным образом, что немаловажно. Однако. на мой личный взгляд, в нашей стране дикий дефицит качественно подготовленного управляющего персонала, подавляющее большинство тех, кого я встречал пригодны только для работы в той конторе. где они методом проб и ошибок выработали свой собственный уникальный способ управления. Неудивительно, что в вашем случае весь удар пришелся по низовым позициям и все вернулось как было.