Пустой экран, на котором светится пустая таблица. Миллион идей в голове, но не понятно, как же их изложить. С утра руководитель дал задачу: посчитайте, когда мы закончим проект. Как это считать? Ещё и руководство требует как всегда «Срочно». И с какого потолка достать эту дату? Может, лучше рвануть в путешествие?..

Обычно подобными задачами занимается руководитель проекта. Но в нашей небольшой команде его не было. Придётся обходиться своими силами.

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

Мы практически ткнули пальцем в небо, чем подписались на большой риск. На эту дату будут завязаны договорные отношения с заказчиком. И при нарушении компании придётся выплатить немаленькие штрафы. Ну и прощай премия, если это твоя вина.

С тех пор прошли годы. Наш опыт пополнился разными способами оценки проектов. Как из теории, так и на практике. Мы, команда разработки Moroz Team, хотим поделиться простым подходом для вычисления даты завершения любого проекта.

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

Отправимся в путешествие и найдём способы оценки проекта

Хотелось бы, конечно, отправиться в путешествие к морю и приключениям. Но в этот раз наше приключение будет поиском заветной даты. А нашим путешествием будет маршрут из точки А в точку Б. 

Дата начала проекта — это точка А. Дата завершения — это конечная точка Б. А оценка проекта будет временем, которое нужно для преодоления маршрута.

Значит начать нам нужно с оценки маршрута. Т.е. нам нужно оценить объём работ, чтобы понимать, когда проект может быть завершён. Получим оценку, прибавим её к дате старта (к точке А) и получим заветную дату завершения проекта.

Как же узнать, сколько времени займёт весь маршрут?

Способ 1. Экспертная оценка

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

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

Специалисты с большой базой опыта, знатоки своего дела обладают внутренней интуицией и чувствуют подводные камни. Так хирурги, которые провели сотни операций, могут с первого взгляда на пациента дать точный диагноз. И часто даже не могут объяснить на словах, как именно они это делают. Интуиция!

Плюсы и минусы:

+ Быстро

- Субъективно 

- Сложно найти хорошего эксперта, который действительно будет заинтересован в качественной оценке

Советы:

  • Дайте эксперту время на расчёт оценки. Так вы избежите импровизированной оценки и снизите степень субъективности

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

Способ 2. На основе опыта

Вы или кто-то другой уже преодолевали подобный маршрут. А значит есть данные о том, сколько времени может занимать такой маршрут. Например, сервисы вроде Яндекс Карт, 2ГИС подскажут вам маршрут с учётом опыта других пользователей и собранных данных.

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

Плюсы и минусы:

+ Более объективные данные, основанные на реальном опыте

+ Избавляет от необоснованного оптимизма, т.к. учитывает реальные узкие места

- Не для всех проектов по итогам учитывается реально затраченное время

- Оценка может быть неактуальна в текущих реалиях (от изменения состава команды до смены политической обстановки)

Советы:

  • Пересчитайте оценку, опираясь на ваши текущие условия. Например, если изменился состав команды, используйте актуальную скорость команды.

  • Опирайтесь не на воспоминания и предположения, а на реальные данные. Отчётность, данные из трекера задач или трудозатрат и др.

Способ 3. Расчётный

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

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

  1. определить состав задач

  2. оценить сложность каждой задачи

  3. помножить на скорость команды

  4. добавить накладные расходы

  5. рассчитать итоговую дату

Плюсы и минусы:

+ Выше точность

+ Индивидуальный подход именно к вашему проекту, вашей команде и ситуации

- Сложность расчёта, потраченное время

1. Определить состав задач

Проще преодолеть путь, разбив его на шаги. И оценить проще небольшие куски маршрута, чем весь маршрут целиком. 

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

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

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

Советы:

  • Мелкие задачи не только удобнее оценивать. Их оценка будет более объективной, точной

  • Старайтесь на этом этапе не переполнять список «бантиками» (задачами, которые не позволяют достичь цели)

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

2. Оценить сложность каждой задачи

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

Задачи могут быть оценены в неделях, днях, часах или в условных величинах (например, в story point'ах). Выбирайте вариант, который ближе и понятнее вам. В одной из следующих статей расскажем, чем же лучше именно оценка в story point'ах. Если вам интересно, подпишитесь, чтобы не пропустить.

Дайте возможность оценить задачи тем, кто будет их делать. Оценка от специалиста точно будет ближе к реальности. В разработке ПО возьмите совет от Стива Макконнелла:

Не уменьшайте оценки, полученные от разработчиков, — скорее вceгo, они и без того излишне оптимистичны.

Стив Макконнелл «Сколько стоит программный проект»

Советы:

  • Составьте 2 варианта оценки: оптимистичную и пессимистичную. Так вы будете лучше понимать ситуацию. И реальный срок станет вам понятнее

  • Если оценка задачи выглядит слишком большой, вернитесь на предыдущий шаг и по возможности разбейте её на более мелкие. После разбиения ваша оценка может сильно измениться (и чаще всего, в бóльшую сторону).

3. Получить скорость команды

В случае преодоления маршрута скорость вашего передвижения может зависеть от способов передвижения. Пешком, на велосипеде, на метро или на автомобиле. А может даже на ракете или с помощью телепортации как в сериале «Звёздный путь».

В проекте ваш способ передвижения — это ресурсы вашей команды. Её скорость — это реальный объём выполненной работы за определённый промежуток времени. 

Если вы не знаете скорость своей команды, вы можете:

  1. получить скорость на основе имеющихся данных. Для этого стоит выполнить предыдущие шаги для оценки задач и посчитать, сколько сделала команда, например, за последнюю неделю.

  2. рассчитать примерно. Например, в вашей команде 10 человек и каждый будет закрывать по 2 story point'а в день; или по 1 задаче на 4-6 часов.

  3. провести пару этапов реальной работы над проектом и оценить скорость на основе этого опыта. Если у вас есть такая возможность, советуем ей воспользоваться мы и Майк Кон:

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

Майк Кон «Agile оценка и планирование проектов»

Совет:

  • Используйте реальные данные в приоритете. Только за их отсутствием обращайтесь к примерной оценке.

4. Добавить накладные расходы

Если ваш путь долгий, то вы будете не только двигаться. Возможно, вам понадобится заехать на заправку, перекусить или даже поспать. А может придётся постоять в пробках или ваше средство передвижения сломается по пути.

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

По моим наблюдениям и по мнению моих коллег, большинство работников, полностью занятых в проекте, могут уделять проекту от четырех до шести часов в день. Это соответствует данным о том, что участники уделяют работе над проектом от 55 % (Ganssle, 2004) до 70 % (Boehm, 1981) своего времени. Самый высокий показатель, по данным Кеннеди (Kennedy, 2003), у инженеров компании Toyota, где высокоэффективный процесс бережливого производства позволяет посвящать работе над целевым проектом до 80 % времени.

Майк Кон «Agile оценка и планирование проектов»

Не витайте в облаках и будьте реалистами. Учитывайте реальное время работы команды. Всё остальное (от 20 до 50%) — это накладные расходы.

Если вы используете фактическую скорость команды, то в неё уже включена бóльшая часть накладных расходов. Однако непредвиденные ситуации всегда могут случиться. Если вы уверены в расчёте скорости, то добавьте меньшую сумму на накладные расходы.

Советы:

  • Посмотрите график отпусков сотрудников в вашей команде. Сразу добавьте их к накладным расходам

  • Если вы хотите показать ваш способ оценки руководителю, не включайте туда фразу «накладные расходы». Увидев, руководитель сразу же их выкинет и ваша ситуация станет плачевной. Если это отпуск или что-то официальное, то ничего страшного нет. А остальное лучше учтите в скорости или размажьте по задачам, накинув к их оценке проценты из учёта накладных.

5. Рассчитать итоговую дату

Зная скорость и путь (объём проекта), сможем рассчитать время по известной нам со школьных времён формуле: t = s / v

И добавим к ней наши накладные расходы. Пусть это будет x

Тогда можем посчитать так: t = s / v + x

Например, в моём проекте получилось 40 задач с общей оценкой в 80 story point'ах. Это мой объём, s.

Скорость моей команды, v = 20 sp в неделю.

В итоге по времени получилось 4 недели.

Добавлю 25% в качестве накладных расходов. И получу 5 недель. Ура!

Начало проекта + 5 недель = моя желанная дата завершения проекта.

Да, мы посчитали дату. Но это не точно

Точность вашей оценки зависит от этапа проекта. Чем дольше длится проект, тем точнее оценка. В управлении проектами это называют конусом неопределённости.

На этапе исходной концепции ваша оценка может ошибаться в 4 раза. Представьте, что вы оценили проект в 1 год. Реальной оценкой может стать 4 года! На это могут влиять разные факторы. Старайтесь их избегать:

  • Хаотичный процесс работы, отсутствие организованности и согласованности действий

  • Необоснованный оптимизм

  • Пристрастие (намерение сместить оценку в ту или иную сторону)

  • Субъективность и импровизированные оценки

  • Бюджетные процессы, подрывающие эффективную оценку (особенно требующие согласования итогового бюджета в широкой части конуса неопределённости)

  • Завышенные ожидания от применения новых средств или методов разработки

  • Упрощение оценки при её передаче на верхние уровни управления, при формировании бюджета и т.д.

Не бойтесь ошибиться. Просто уточняйте оценку по мере появления новых знаний о нём.

Ну и в качестве позитивной нотки в заключение: поздравляю всех с прошедшим днём рунета! :-)

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


  1. aborouhin
    09.04.2023 18:36
    +11

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


    1. johnfound
      09.04.2023 18:36
      +3

      Но константа может варьировать. У меня меньше 5 никогда не выходит. А вот 10 запросто. :D


      1. mikelavr
        09.04.2023 18:36
        +7

        Просто один раз на 3.14 умножает тимлид, и еще раз - менеджер. 3,14*3,14 = 9,85.


        1. SomeAnonimCoder
          09.04.2023 18:36
          +2

          Умножайте сразу на g. Кстати, п^2 как раз близко к g из-за старого определения секунды


          1. IvanPetrof
            09.04.2023 18:36
            +2

            Можете поподробнее?


            1. Krasnoarmeec
              09.04.2023 18:36
              +1

              Вот простое объяснение: Можно ли объяснить то, что ускорение свободного падения и квадрат числа пи примерно равны (или же это просто совпадение)?

              В одном из старых выпусков "Кванта" тоже была статья на эту тему с теми же выводами.


    1. vkni
      09.04.2023 18:36

      Вот, я как-то тоже дошёл до *3...


    1. sshikov
      09.04.2023 18:36
      +2

      Это называется управление рисками. А эта вот магическая константа 3 — это как пить дать, всего лишь результат вероятностной оценки срока выполнения. И вообще говоря, все это сто раз описано в литературе. Скажем, почитать Де Марко и Листера явно стоит.


      Вот что меня удивляет реально — люди пишут статьи про оценку сроков (я не конкретно про эту, таких было с десяток минимум). И при этом даже не упоминают диаграмму Ганта, как будто у них все задачи в проекте делаются строго последовательно. И MS Project хоть раз бы упомянули, ну или другой инструмент, помогающий решать задачи планирования, без которого планировать реально человек на 10 практически лишено смысла. Причем не знаю как нынче, а в мое время нас этому просто учили в ВУЗе.


      К бюджету проекта это, кстати, тоже относится.

      Ну еще бы. Если сроки умножить на три — все зарплаты тоже можно и нужно.


      1. KseniaMoroz Автор
        09.04.2023 18:36

        Конечно, чтение дополнительной литературы - это всегда плюс. Про диаграмму Ганта, конечно, тоже хотела упомянуть. Но это уже в глубокое исследование если заходить. На первых этапах Гант будет таким же неточным, как и более простой способ оценки. Я думаю, что Ганта стоит составлять, если есть уверенность, что команда и задачи не изменятся. А значит планировать с ним где-то на этап, одну итерацию.
        Важно, чтобы Гант опирался на реальные данные, а не брал оценки с потолка. В Ганте также сложно планировать по участникам в масштабе задач. Мало ли кто заболеет или уволится. И план от этого, возможно, сильно поплывёт


    1. KseniaMoroz Автор
      09.04.2023 18:36
      +1

      Вот конус неопределённости для вас, видимо, на 3 как раз работает. Если верить Макконнеллу, то на 4 можно умножать в условиях неопределённости


    1. xaosxaos2
      09.04.2023 18:36

      А раньше было плюс полгода, а теперь умножить на три :)


  1. ozzyBLR
    09.04.2023 18:36
    +1

    Как узнать дату завершения любого проекта? А никак. И в общем-то вся статья ровно об этом и говорит.

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


    1. KseniaMoroz Автор
      09.04.2023 18:36
      +1

      В статье как раз упоминается конус неопределённости. Т.е. дату-то рассчитать можно. Но она сначала может в 4 раза ошибаться, затем меньше и меньше. Вписываться в жёсткие сроки - это всегда риск. Если есть возможность поставить срок на какой-то квартал или хотя бы месяц, то будет вероятность уложиться. Тем более если такой срок получен на основе пары итераций работы


  1. Usage
    09.04.2023 18:36

    Исключительно опыт, иначе никак! Все эти формулы разбиваются от внешних факторов в проекте в пух и прах. У каждого эти факторы они свои! Большие проекты как правило затрагивают несколько сторон это заказчик, эксплуатант и исполнитель ( еще могут быть соисполнители) и чем больше сторон тем больше внешних факторов. Как их предусмотреть формулами? А если мы опустимся до системы, которую нужно обследовать, чтоб понять возможность внедрения новый функций? Там вообще темный лес. Это все риски, хорошо если есть человек (эксперт), знающий систему, в которую предлагается внедрять новые функции иначе как слепые котята!


    1. KseniaMoroz Автор
      09.04.2023 18:36

      Любая формула и любые расчёты должны опираться на опыт, это правда. Если не учитывать объективные данные, то любая оценка будет ложной


  1. Lagovi
    09.04.2023 18:36

    Всегда смотрел на планирование сроков сложного проекта как на мистификацию. Я понимаю как считать, например, ремонт квартиры, имея полный проект. Там очень много типовой, однородной работы. Можно добиться довольно высокой точности, хотя не 100% конечно.

    Но как посчитать создание нового програмного продукта, где нужен поиск пути реализации и могут встретится непредвиденные, например, аппаратные сложности?

    Вот есть тут PM который умеет считать проекты, которые ранее не выполнял, с точностью хотябы процентов 80? Чтобы без "прикину как могу и умножу на 3".


    1. johnfound
      09.04.2023 18:36

      Я вообще-то знаю как, но эту методику сочтут негуманной в 75% стран мира.


  1. Ndochp
    09.04.2023 18:36

    1. Оценить сложность каждой задачи

    Ну мы же не дом строим по чертежу, правда? Периметр стен умножаем на толщину стены и получаем объем кладки.


    Мыж программы клепаем. Одна из задач например — изучить апишечку, вторая — по изученной апишке наклепать интерфейсный модуль. Что же может пойти не так?


    Пример из жизни. Делаем бота-привратника в телеге в дополнение к боту-помощнику. Тот уже написан, с рестом телеги все знакомы, сиди да пили.
    Задачка простая: упорядочить работу с корп чатами.
    Алгоритмы/юзкейсы:


    1. Храним список рабочих чатов в таблице
    2. Храним сотрудников и их рабочие места (точнее получаем из 1С)
    3. Сотрудник (проверяем по номеру телефона) может получить список чатов, которые ему нужны
    4. Уволившихся (и вообще случайных левых) нужно убирать из контролируемых (есть еще и "для друзей" развлекательные, там тусят все кому хочется) корп чатов

    Пункты 1, 2, 3 — без проблем. 4 — в целом тоже, бот легко может выгнать кого угодно.
    Вот только он не может узнать, а кто в чате. Только админов.
    И вот здравствуй вместо часа на обвязку очередного рест-вызова и выполнения команды + 2 часа на протестировать и показать всем заинтересованным — не понятно сколько. Так как вместо ТелеграмБотАпи берем ТелеграмАпи, которого нет на языке проекта, со своими приколами авторизации, получения-отправки кодов и прочая мишура ради одной команды — дай список пользователей вот этого чата.


  1. iggr63
    09.04.2023 18:36

    Подобный анализ можно делать и наоборот от точки В (заказчик или начальство хочет получить продукт) к точке А — начало разработки. Так даже аргументированее получается.


  1. arTk_ev
    09.04.2023 18:36

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

    Один из них - нужно разбивать все на задачи, каждую задачу декомпозировать на подзадачи, пока оценка станет не очевидной.

    На каждую подзадачу дается 3 оценки: оптимистическая, песиместическая и медиана.

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

    А вот сроки для разработки всегда одни - до дедлайна. Разработка - не производство.


    1. arTk_ev
      09.04.2023 18:36

      Это PERT метод, один из самых эффективных https://ru.wikipedia.org/wiki/PERT