21 января 2025

eur = 105.05 0.18 (0.18 %)

btc = 101 422.00$ -4 927.08 (-4.63 %)

eth = 3 221.42$ - 181.14 (-5.32 %)

ton = 4.93$ -0.12 (-2.38 %)

usd = 101.96 -0.46 (-0.45 %)

eur = 105.05 0.18 (0.18 %)

btc = 101 422.00$ -4 927.08 (-4.63 %)

Форум

Больше ≠ лучше: как ускорить разработку, не увеличивая команду

5 минут на чтение
Больше ≠ лучше: как ускорить разработку, не увеличивая команду

«Нужно больше минералов людей!» — частая реакция на отставание проекта от дедлайнов. Но что делать, когда увеличение команды не только не решает проблему, но и усугубляет ее?

В конце 2022 года наша команда столкнулась с задачей — разработать новый личный кабинет заемщика для ипотечных клиентов банка. Масштаб изменений требовал серьезных ресурсов, мы пошли по классическому пути — собрали большую команду из 20 с лишним человек, но вместо ожидаемого ускорения получили обратный эффект.

Эта история о том, как мы обнаружили, что «больше» не всегда значит «лучше», и как простое решение по реорганизации команды помогло нам не только уложиться в сроки, но и повысить качество работы.

Меня зовут Игорь Котов, я СТО стрима Ипотека, и в этой статье я поделюсь историей о том, как забуксовала большая команда, как мы диагностировали проблему и какие решения нам помогли все решить. Наш опыт может быть полезен тем из вас, перед кем стоит похожий вопрос — как ускорить разработку, не увеличивая команду?

Как все начиналось

От современного банка клиенты ждут современных сервисов. А как вы уже поняли из вступления, наш процесс подачи заявки на ипотеку был немного устаревшим. Поэтому в прошлом году  было решено сделать удобный и современный личный кабинет заемщика. Вот что в нем должно было быть:

  • заполнение заявки в онлайн-формате с возможностью сохранить черновик и вернуться к его заполнению в удобное время;
  • прозрачное отслеживание статуса рассмотрения заявки;
  • возможность добавление созаемщиков;
  • загрузка и обновление документов;
  • доступ к кабинету с любого устройства через авторизацию по номеру телефона.

План был логичен и прост: собрать команду опытных специалистов, выстроить поэтапный подход к разработке, к осени 2023-го — MVP, затем последовательное добавление фич и релиз полного решения в конце года.

Стартовый состав и организация

К маю была окончательно собрана команда, в которую вошло больше 20 человек. Ядро команды составили опытные инженеры, хорошо знакомые с продуктом и спецификой, к ним присоединились новые специалисты, недавно пришедшие в банк. Команду усилили аналитиками, тестировщиками и сотрудниками с другими необходимыми ролями.

Работу организовали по классическим agile-принципам: двухнедельные спринты с дейли для синхронизации. В конце каждой итерации демо и ретро. Декомпозиция на отдельные фичи и user stories, чтобы сделать разработку более управляемой.

На бумаге все выглядело правильно: большая команда, четкий процесс разработки, понятные цели. Но несколько спринтов спустя стало понятно, что что-то идет не так. Оценки по срокам постоянно не совпадали с реальностью, задачи переносились из спринта в спринт…

К сентябрю, когда мы выпустили-таки MVP, стали ясны две вещи:

а) команда почти выгорела,
б) при текущем подходе зарелизить кабинет в срок не удастся.

Когда размер имеет значение: подводные камни большой команды

Мы стали разбираться, что пошло не так. Одной из проблем, на которую вышли почти сразу, оказались непомерно разросшиеся командные ритуалы. Дейли превратились в пытку: они занимали более 40 минут, при этом каждый участник говорил всего 1–2 минуты.

Получалось, что большую часть времени люди просто ждали своей очереди, а потом слушали обновления, которые часто их напрямую не касались. В команде из 20+ человек такие потери времени существенны — суммарно все тратили больше 13 часов в неделю только на дейли-митинги.

Вторая проблема оказалась менее очевидной, но более серьезной — низкая вовлеченность части команды. В большом коллективе, где были как опытные разработчики, так и новички, возникла возможность «отсидеться за спинами» более активных коллег. Одни перестали предлагать свои идеи, полагая, что «Вася — эксперт, а эксперты лучше знают». Другие не спешили глубоко погружаться в продукт, ведь есть условный Вася, который в случае чего подскажет решение.

Третья проблема — отсутствие фокуса. При таком размере команды оказалось практически невозможно сконцентрироваться на одной конкретной цели спринта. Мы пытались параллельно двигать несколько крупных фич, что приводило к распылению внимания и ресурсов. В результате задачи регулярно «переезжали» из спринта в спринт, подрывая веру в возможность достижения конечной цели в срок.

От монолита к микросервисам

В процессе поиска выхода из ситуации мы перебрали несколько гипотез. Причем идею с наймом новых сотрудников отмели практически сразу — чтобы погрузить нового человека в проект, нужно 3–4 месяца, которых у нас нет. Плюс придется на ходу решать проблемы с коммуникацией и координацией, которые неизбежно возникнут при расширении команды.

Поэтому мы решили попробовать разобраться с проблемой по-другому. Вместо набора новых специалистов разделили большую команду на три миникоманды. Каждая получила свою четкую зону ответственности: одна занялась разработкой функций по работе с созаемщиками, вторая — модулем загрузки и обработки документов, а третья — полной версией анкеты заемщика.

Каждая команда получила полный набор компетенций для автономной работы над своей частью продукта, были четко определены точки интеграции. Составы команд мы перемешали, в каждую вошли как старожилы, так и новички.

Несмотря на разделение, мы сохранили механизмы для координации работы. В конце каждого спринта проводили общее демо, где команды делились результатами и обсуждали вопросы интеграции. Это помогало поддерживать единое видение продукта и обеспечивало согласованность решений.

Так как каждая миникоманда получила четкую цель, это кардинально изменило подход к планированию спринтов: теперь вместо множества параллельных задач команда могла сосредоточиться на чем-то конкретном.

Мы понимали, что меняем устоявшиеся процессы и выводим людей из зоны комфорта. Но уже первые два спринта после разделения показали, что решение было верным.

Результаты

Компактный размер команд радикально повысил эффективность коммуникации: дейли стали занимать не больше 15 минут, на планирование спринта хватало часа, а ретро стали более откровенными и конструктивными: отсидеться больше не получалось — каждый чувствовал личную ответственность за результат.

Четкое разделение целей тоже дало результат: задачи перестали «переезжать» из спринта в спринт, потому что теперь каждая команда могла точнее оценивать свои возможности и планировать работу. Процесс разработки стал более предсказуемым.

Главным подтверждением эффективности нового подхода стал запуск полной версии личного кабинета заемщика в намеченный срок — до конца 2023 года. Мы не только не пролетели мимо дедлайнов, но и реализовали все запланированные фичи.

От теории к практике: как применить наш опыт

Наш эксперимент с разделением большой команды начинался как вынужденная мера, но превратился в системный подход к организации работы (сейчас другие команды нашего стрима тоже начали его перенимать).

Попробую дать несколько советов о том, как определить, что вашей команде необходимо «дробление», и какие основные принципы использовать при создании миникоманд.

Итак, если вы видите, что:

  • встречи регулярно затягиваются, а их эффективность падает;
  • часть команды не проявляет инициативы и «отсиживается» за более активными коллегами;
  • задачи постоянно переносятся между спринтами;
  • команде сложно сфокусироваться на конкретных целях;
  • все чаще возникает желание (и слышатся призывы) решить проблему наращиванием численности команды…

…самое время собрать ретро и попытаться докопаться до того, с какого момента все пошло не так и почему все идет так, как идет. Возможно (!), то, о чем я пишу, не ваш случай, но если вышеописанные признаки совпадают с вашей ситуацией, имеет смысл подумать о пересборке процесса и распределить зоны ответственности по миникомандам.

Главное при этом — соблюдать несколько простых правил.

  1. Четко разделите ответственность
    Каждая команда должна иметь ясную, самостоятельную цель и зону ответственности.
  2. Сбалансируйте компетенции
    Важно обеспечить каждую команду полным набором компетенций, «равномерно распределив» участников.
  3. Сохраните синхронизацию
    Регулярные общие демо и четкие точки интеграции помогают командам двигаться в одном направлении.
  4. Поддерживайте инициативу
    В небольших командах важно создать атмосферу, где каждый участник чувствует себя значимым и не боится предлагать идеи (и с миникомандой добиться этого на самом деле гораздо проще, чем в большой группе).

Напоследок еще раз оговорюсь: каждый проект уникален, и прямое копирование чужого опыта не обязательно приведет к успеху. Но базовые принципы, которые мы применили, — разделение большой команды на автономные группы с четким фокусом — могут быть адаптированы практически для любой ситуации, где требуется повысить эффективность разработки.

Читать первым в Telegram-канале «Код Дурова»

Важные новости коротко — от GigaChat Max 
1-bg-изображение-0
img-content-1-изображение-0

GigaChat Max: коротко о главном

Как изменился Код Дурова вместе с GigaChat Max?

Узнай о всех возможностях в FAQ-статье 
7491498a-abf5-488b-8bf2-ea0651e5a00d-изображение-0

GigaChat Max: коротко о главном

Трамп на 75 дней отсрочил запрет на TikTok в США

Полная версия 
9ccc61f1-2a75-46e2-bef4-f8b9088d8a8f-изображение-0

GigaChat Max: коротко о главном

Теневой прокат принес российским кинотеатрам 4,3 млрд рублей в 2024 году

Полная версия 

Реализовано через GigaChat Max 

Сейчас читают
Карьера
Блоги 307
Газпромбанк
МТС
Т-Банк
X5 Tech
Сбер
билайн
Яндекс Практикум
Ozon Tech
Циан
Банк 131