Более 5 лет мы развиваем бесплатное мобильное приложение для работы с товарами. Проект растет и стабильно приносит прибыль, на прод поставляются новые фичи. Но мы заметили, что ежемесячно команда не успевала выполнить все 100% из запланированного пула работ. Каждый раз, как по замкнутому кругу, мы пытались ответить на вопрос: «Как так получилось и когда, что мы опять одну фичу не допилили?». Но все встало на свои места, когда мы внедрили процесс капасити в работу и прозрачность загрузки команды стала явной.

Я менеджер проектов в SimbirSoft Светлана, и в этой статье поделюсь опытом подсчета капасити команды и предложу вариант работающей формулы, опираясь на свой опыт.

Capacity — это что?

Для начала давайте разберемся, что включает в себя понятие «капасити», для чего оно нужно и с чем его, простите, едят.

Капасити (англ.“capacity”) — это показатель максимальной ёмкости чего-либо. Например, в IT капасити можно применить в контексте ресурсов (штат, техника и так далее) или в контексте пользователей, конечного/будущего потребителя продукта.

Как это применить на проекте?

Методика расчета

Чтобы понять, как рассчитать капасити команды, предлагаю рассмотреть этот процесс на примере команды из 18 человек, в которой каждый сотрудник работает ежедневно по 8 часов.

Для подсчета капасити мы ориентируемся не на 8, а на 6 часов, закладывая 2 часа на допустимые внутренние риски проекта. 

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

Опираясь на опыт SimbirSoft, мы можем сказать, что у сотрудника уровня Middle+/Senior отдача проекту будет на уровне 90-100%. Все остальные специалисты уступают по процентовке.

Далее для удобства в подсчете переменную в 100% принимаем за 1. Соответственно, если отдача сотрудника меньше 1, то это будет 0,9, 0,8 и так далее.

На созвоны мы закладываем 30% только у лидов, если они есть. Так происходит потому, что все вводные проходят через лидов, и конечному специалисту в работу приходит уже декомпозированная задача с минимумом неопределенностей. Производительность лидов на проекте тем самым снижается до 0,7. 

Дополним, что 100% производительность на проекте может быть только у специалистов с опытом работы от 3-5-ти лет. Но это ориентир, который мы обозначили на основе нашего опыта. Поэтому на других проектах возможны исключения.

Также важно не забыть обязательные условия — это ограничения в работе, в которые входят отпускные и больничные дни.

Расчет капасити команды

Теперь предлагаю все расчеты применить на примере нашей команды.

2 аналитика: Lead (0,7) и Middle+ (1)

Дизайнер: Middle+ (1)

Frontend IOS: Lead (0,7) и 2 Middle+ (2), Android: Lead (0,7) и 2 Middle+ (2)

Backend: Lead (0,7) и 2 Senior (2)

QA: Lead (0,7) и 3 Middle+ (3)

AQA: 2 Middle+ (2)

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

В месяце 21 рабочий день, а в спринте — 10 рабочих дней. Предлагаю рассчитать капасити команды для спринта, учитывая, что никаких дополнительных ограничений нет:

Аналитика: (Lead + Middle+)*количество  рабочих дней=(0.7+1)*10=17

По аналогии рассчитаем другие направления:

Design: 10

IOS: 27

Android: 27

Backend: 27

QA: 37

AQA: 20

Итого капасити команды на спринт равен 165 человеко-дням.

Фича приходит на оценку тоже в человеко-днях, с учетом ограничений капасити отдельных направлений и команды в целом.

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

Ограничения в расчете капасити

В этом методе работы с капасити команды есть несколько ограничений, которые важно зафиксировать, и отметить, к чему они могут привести:

1. Мы измеряем все человеко-днями и в оценке фич, и в подсчете капасити. Если мы измеряем объемы работы разными переменными, то свести их воедино будет проблематично — каждая будет жить своей жизнью.

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

3. Капасити —  величина динамическая. Мы должны работать с верными и точными данными на проекте. Если все-таки кто-то уходит на больничный или в отпуск, то капасити пересчитывается. Благодаря этому мы формируем правильные ожидания у заказчика. Впоследствии это приведет только к улучшению понимания в цепочке «Заказчик — менеджер проекта — команда».

4. В подсчете капасити уже учтены созвоны по фичам, активности лидов, но не учтены работы багофикс, техдолги и прочее. Исходя из особенностей проекта, его срока жизни, количество необходимых фиксов и задач техдолга может варьироваться от нескольких десятков до нескольких сотен. Индивидуальность в подходе их исправления приветствуется, но эту особенность нужно закладывать как отдельный пункт в бэклоге задач.

Вывод

В этой статье я постаралась максимально подробно и понятно расписать, как можно рассчитать капасити конкретной команды на нужный промежуток времени и поделилась ограничениями, которые могут возникнуть.

Возвращаясь к цели внедрения капасити конкретно на нашем проекте, то на сегодняшний день мы имеем следующие результаты: 

  1. Производительность команды стабильна и составляет свыше 90% по выполнению запланированного плана работ на спринт.

  2. С учетом ограничений мы формируем полноценную загрузку команды по всем направлениям, к минимуму сводим простой сотрудников в спринте.

  3. Внедрение капасити добавило дополнительную ценность как для команды, так и для заказчика в виде прозрачности загрузки, а также возможности приоритизации задач в бэклоге на следующие спринты.

В нашем случае весь процесс внедрения занял 4 месяца. На это повлияло в большей степени то, что спринт на проекте длится в течение одного месяца, в команде около 20 человек — по 3-4 человека от каждого направления. Для небольших команд, например по 10 специалистов, для внедрения будет достаточно и одного-двух спринтов, продолжительностью 2 недели. Это позволит понять, насколько такой подход работы удовлетворяет потребности и что стоит изменить в нем. Поделитесь в комментариях, используете ли вы капасити в своей команде, и как это повлияло на производительность.

Спасибо за внимание!

Авторские материалы для разработчиков и тех, кто занимаемся управлением в IT, мы также публикуем в наших соцсетях – ВКонтакте и Telegram.

Комментарии (7)


  1. Hardcoin
    24.08.2023 09:25

    Почему в днях, а не в часах? Задача вида "изменить текст подсказки у поля" тоже до дня округлится? Или у вас дробные дни?


  1. kasiopei
    24.08.2023 09:25
    +1

    Не изобретайте суржик.


  1. gnuman
    24.08.2023 09:25

    К сожалению, такой подход работает только, если ваша команда почти идеально оценивает задачи. Если точность оценки задач не идеальна (а обычно это так), то она будет сильно аффектить решение той проблемы, которую вы изначально решали - "а почему не все фичи допилили?" Да потому что задачи оценили неправильно.

    Истпытываю ощущение, что капасити команды можно определить без расчетов, просто пробежав вместе с командой несколько спринтов и посмотрев, сколько часов продуктовой разработки на человека успеваем сделать по фактически списанным часам на задачу.

    У меня был такой опыт: мы планировали 26 часов на человека в неделю. Пришел шеф и говорит, а давайте по 30 часов. Мы такие, да легко. Запланировали по 30. Успели все равно по 26. Такие дела.


    1. Zenitchik
      24.08.2023 09:25

      Пришел шеф и говорит, а давайте по 30 часов. Мы такие, да легко. Запланировали по 30. Успели все равно по 26.

      Если для отчётности надо - я все 48 придумаю на что списать ))) А вот реальная продуктовая - это реальная продуктовая.


  1. Yuri_nedre
    24.08.2023 09:25

    Извиняюсь, но я не увидел, как вы решили проблему, которую описали в начале статьи

    "мы заметили, что ежемесячно команда не успевала выполнить все 100% из запланированного пула работ"

    От того, что вы поняли, что у разработчика не 8 рабочих часов в одном дне, а 6 - проблему точности прогнозирования разработчиков не решают.


  1. Batalmv
    24.08.2023 09:25

    Математически мало смысла. Оценка капаситета команды в чем либо - просто оценка объема сферического коня в вакууме. 30 человекодней, 50 попугаев - просто числа и буквы. Хотя да, можно их подсчитать достаточно точно

    Как только мы из натягиваем на фичи, возникает банальная проблема - фичи не имеют оценки сами по себе. Так грустно устроена жизнь :) К каждой фиче мы просто приписываем оценку тоже в попугаях. К примеру, играем в скрам покер. Но важно для понимание другое. Точность такой оценки довольно таки мала. Именно математически. Условно это может быть плюс минус 50%. После чего возникает вопрос.

    Если с одной стороны у вас довольно таки точное знание о капаситете команды в человекочасах, а с другой фичи в этих же человеко часах, но с погрешностью 50%, то какой смысл сильно напрягаться в первой части. Все равно комбинационный результат капаситета и объема работ даст большую погрешность. Может это и не буде 50%, лениво поднимать курс метрологии и считать, но это и не нужно, так как знания того, что есть большая погрешность достаточно. При такой погрешности абсолютное значение вероятностной величины довольно таки обесценивается.

    Если вы померяли отрезок, и его длина равно 3 метра плюс-минус полтора, то ценность числа 3 в практическом смысле почти нулевая

    Поэтому не парьтеся, играйте в скрам покер и занимайтесь рнальным project execution, а не фигней с арифметикой


  1. inscriptios
    24.08.2023 09:25

    Planning Poker, Velocity, относительная оценка, которая выполняется не в часах, а в условных единицах, потому что классический проектный менеджмент в спринтах (которые есть только в Scrum и больше нигде) не работает, нет?

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