Заметки: Про оценки и календарь. Введение

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

Оценки + календарь... Тех, кто работает с волшебными единорогами заказчиками, которые берут на себя все риски команды — тем такое не нужно. Их заказчик кладет портмоне на стол и говорит: возьмите сколько надо. Справедливости ради, надо признать, что все равно, работающие в таких условиях, занимаются планированием, но только неявным и более затратным (об этом будет отдельная заметка).

Как быть тем, кто лишен такого счастья и работает по обыкновенным стандартам взаимоотношений «заказчик — исполнитель»? Т.е. вынужден называть цену и сроки, пусть даже и интервальные. Понятно, что даже на FC проектах заказчик закладывает буфер ~20...30% на случай изменений. Ну или на случай ваших факапов. Да-да, заказчик закладывается и на это. Он будет, конечно, упираться, но оплатит ваши ошибки. Ему же тоже невыгодно работать с убыточной командой, не так ли?

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

  1. Бюджет буферируется на некую условную оценку рисков. Некоторые пытаются выписывать риски по отдельности, но чаще всего — это очень формальный процесс и риски «назначаются» по тому же самому старому доброму pert-овскому принципу: в качестве бюджета задачи благоразумно берется «реально успею», а к ней плюсуется дельта между «реально» и «дольше этого просто позор». Причем, этот процесс часто происходит неосознанно, просто «так получается» :)
  2. Если участников больше одного — бюджет задачи умножается на некий эмпирический или не очень «коэффициент внутрикомандного взаимодействия» от 1,3 до N в зависимости от числа участников.
  3. Бюджет задачи делится на количество участников и на 8, после чего округляется в большую сторону — получаем количество рабочих дней.
  4. Накладываем рабочие дни на календарь и минусуем выходные и праздники.
  5. Все, календарь «готов».

Понятное дело, что этот подход — один из паттернов работы «на отвяжись». И даже если команда укладывается в 72% вероятности достижения «реально», то это вообще-то случайность — происходит обычное перераспределение усилий между задачами, где-то раньше, где-то позже — в итоге 36,6 по больнице получаются. Ну или не получаются, что бывает чаще — закон Паркинсона по выеданию буферов и рисков до того, как они реально понадобятся — никто не отменял :)

Продолжение следует...

Все про українське ІТ в телеграмі — підписуйтеся на канал DOU

LinkedIn



14 коментарів

Підписатись на коментаріВідписатись від коментарів Коментарі можуть залишати тільки користувачі з підтвердженими акаунтами.
А чего, вполне себе рабочий алгоритм планирования. Качество эстимейтов соответствует затраченным усилиям.
Следует также учесть, что планированием обычно занимается самый дорогой (в прямом смысле) член исполнительной команды (PM, SA, TL or whatever). И выбор между примитивным «пальцем в небо», сделанным за пару часов в эксельке, и детализированным, продуманным планированием, с использованием соответствующих инструментов (MS Project, например) и учётом возможных рисков, которое занимает значительно больше времени, — это чаще всего банальный денежный вопрос.

По сути, кто-то должен заплатить большие деньги за возможность узнать, сколько реально времени займёт выполнение определённой работы. Притом, что сама работа от этого обычно ни быстрее, ни качественнее сделана не будет. Для заказчика гораздо проще и понятней накинуть те самые «страховочные» 30% сверху в бюджет проекта.

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

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

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

Хорошо, если просто на деньги попадем, а если на реализуемость?

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

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

этот подход — один из паттернов работы «на отвяжись»

Я бы не сказал, что «на отвяжись». Скорее, это то разумное количество усилий на оценку и планирование, которое стоит потратить, и, при этом, получить приемлимый результат. Достичь большей точности, НЕ занимаясь постоянно проектами в одной и той же области и с одной и той же командой — очень сложно, даже потратив вдвое больше времени. Научные подходы наподобие COCOMO II известны с Бог знает каких годов, но вот только на практике так и не прижились.

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

Планирование рисков буферированием — все-таки «на отвяжись», ИМХО. И достичь бОльшей точности оценки влияния рисков без колоссальных затрат времени нельзя, по-вашему?

И достичь бОльшей точности оценки влияния рисков без колоссальных затрат времени нельзя, по-вашему?
Принцип неопределённости Гейзенберга — работает и на макро уровне.
Чем глубже мы уходим в детализацию, тем точнее мы оцениваем, но тем дальше мы от планирования и ближе к разработке. Попытка ХОРОШО оценить, сколько нам понадобиться времени на прикручивание фреймворка, уводит нас от оценки написания собственного велосипеда, который возможно был выгоднее.
Скорее, это то разумное количество усилий на оценку и планирование
Правда где-то рядом с этим тезисом.
Бесконечнея детализация — уже разработка, а не планирование.
Когда предварительно не планируем, а бросаемся в разработку и тогда у нас неявное планирование размазано по реализации — это лучше? И кто-нибудь мерял, какое проектирование/планирование выгоднее — явное предварительное или размазанное по реализации?
Касательно распределения — это все понятно, я сам сторонник «интервальная оценка + фреймворк мер по достижению её нижнего плеча».

Речь вообще-то шла о том, что по мнению Дмитрия, я напрасно назвал приведенный упрощенный (и широко распространенный) подход календарного планирования подходом «на отвяжись» :)

И кто-нибудь мерял, какое проектирование/планирование выгоднее — явное предварительное или размазанное по реализации?

Меряли:

«Just Barely Good Enough» Models and Documents: An Agile Best Practice

Спасибо за линк, почитал.
Меня смущает меня только одно — это «померяли»?

Простите, но это — обычный маркетинговый шум. Померять и сравнить — это немного другое :)

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

Но:

  1. Доступность этих специалистов на этапе pre-sales не гарантирована — хотя бы потому что мало кто может себе позволить держать на bench’е специалистов senior-уровняю
  2. Эстимейт зачастую нужен заказчику «на вчера», заниматься подробным анализом рисков попросту некогда: более ушлые конкуренты сделают, как вы говорите, «на отвяжись», но зато получат проект.
  3. Исходных данных на этапе pre-sales очень часто недостаточно, чтобы такой анализ вообще можно было провести
P.S. Все вышесказанное относится к сервисному бизнесу.

P.P.S. Я, наверное, соглашусь, что более научный анализ рисков может быть оправдан в fixed-all проектах, и то, если заказчика удастся «укатать» на отдельную pre-study фазу.

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

И у меня вопрос — чем сервисный бизнес, по-вашему, отличается от продуктового?

Я говорю о фазе превращения предварительных обязательств в окончательные.

Такая фаза, если я правильно понимаю, о чем речь, бывает только в fixed-all проектах, от которых при возможности по максимуму открещиваются, т.к. они наименее выгодны исполнителю. И то, именно что с кучей оговорок и обкладыванием бумажками со всех сторон, потому что модель взаимодействия fixed-all провоцирует т.н. «cover your ass development». А в time and material проектах, например, «окончательных» обязательств, кроме верхнего предела по бюджету, может не быть вообще.

чем сервисный бизнес, по-вашему, отличается от продуктового?

Если мы говорим именно про аутсорс, то:

  1. Очень часто — незнание предметной области при старте проекта.
  2. Команда собирается под проект, зачастую из людей, которые никогда вместе друг с другом раньше не работали. Психологическая совместимость тоже редко кого волнует.
  3. Продаются «головы», реже — услуги «под ключ», а не готовый продукт.
  4. Исполнитель берет на себя минимум рисков, за исключением вышеупомянутой модели fixed-all, где, все равно, в конечном итоге, риски перекладываются обратно на заказчика в виде щедрого буфера по бюджету и срокам.

Пока все, что приходит в голову.

Такая фаза, если я правильно понимаю, о чем речь, бывает только в fixed-all проектах, от которых при возможности по максимуму открещиваются, т.к. они наименее выгодны исполнителю. И то, именно что с кучей оговорок и обкладыванием бумажками со всех сторон, потому что модель взаимодействия fixed-all провоцирует т.н. «cover your ass development». А в time and material проектах, например, «окончательных» обязательств, кроме верхнего предела по бюджету, может не быть вообще.

Вы купите автомобиль за N... oo денежков? Или дом, или программныйй продукт? Чистый T&M — очень условное понятие, ожидания заказчика по соотношению цена/качество никто не отменял, только на верхнюю планку бюджета я бы не закладывался, есть ожидания и по качественной составляющей :) То, что есть сдвижка бюджет — ежу понятно. И когда я говорю обязательства — не имею ввиду кучу бумажек, есть такая штука, как договоренности. И почему FC проект должен быть убыточен? Только ввиду отсутствия явных возможностей переложить риски на заказчика? Так они там тоже есть :)

Очень часто — незнание предметной области при старте проекта

Для продуктов это более чем характерно :)

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

Очень жаль, если это так. Я раньше тоже занимался оутсорсингом и меня это волновало более чем сильно — слетанность и совместимость.

Продаются «головы», реже — услуги «под ключ», а не готовый продукт.

Продажа голов — это не оутсорсинг, это — оутстаффинг, а в оутсорсинге есть такая штука, как OPD — outsorcing product development

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

Нет это не так. К чему приводит «щедрое буферирование», думаю, сами понимаете — к понижению конкурентноспособности :) Есть другие методы управления рисками исполнителя :)

Но истина лежит посередине. Мне нравится модель смешивания T&M и FC на этапе исследования предметной области/прототипирования/проектирования и реализации соответственно. Но даже T&M я стараюсь бить на измеримые предварительно (пусть и интервально) этапы, потому что, как я уже говорил — мне T&M не нравится ввиду обратных петель для команды :) Иными словами — заказчик платит ТМ, а внутри идет почтиFC с интервальными оценками :)

Підписатись на коментарі