Порой это заставляет понервничать. Тут и «дэдлайн подкрадывается незаметно». И перестраховка в 500% на всякий случай (все равно не хватает). И отжимание «заведомо раздутых сроков», чтобы исполнитель пообещал чего-то более приемлемого. И невнятные бормотания вместо конкретных цифр.
В этой статье собраны и структурированы принципы и методы, с помощью которых можно научить себя и других давать адекватные оценки. В начале — общие принципы и чуть-чуть математики. В конце — конкретика для студий.
Самый ненавистный вопрос
Выступая на десятках конференций, я часто спрашивал людей в зале: «На какой вопрос вы больше всего не любите отвечать?». И всегда ответом было: «Когда будет готово?!». Вопрос волнует и вызывает эмоции. Вот прямо сейчас подойдите к вашему коллеге и спросите его, когда будет готово. Знаете, что вы скорее всего услышите?
Нет, не обязательно вам укажут направление и пожелают доброй дороги. Все же кругом много культурных людей. Зато почти наверняка человек начнет рассказывать о своих проблемах. Понимаете? На вопрос «Когда?» — отвечают рассказом о проблемах. Так делает почти всё человечество.
Еще пример — для тех, кто помнит университетский курс программирования. Какой тип данных должна вернуть программа на запрос «Когда?». DataTime или что-то типа того. Человек же на это стабильно выбрасывает Exception. Да не один, а много, желательно с General Protection Fault. Это реально баг в прошивке практически всех людей.
Что за гадость такая? Почему люди так сильно не любят оценивать сроки? Ведь всё просто:
Длительность работ = Объем работ / Производительность
Неопределенность бьёт по башке
Корневая причина в том, что, оценивая объем работ, мы сталкиваемся с неопределенностью. Мы вынуждены предсказывать будущее — строить прогноз и нести за него ответственность. Начальники и клиенты требуют этого от нас, а мы — от своих подчиненных.
Но прогнозы нужны нам как опора. Как попытка отгородиться от неопределенности. Как попытка удовлетворить главное желание. И я не про секс, голод и сон, а про желание управлять реальностью. Каждый день. О, как велико в этот момент искушение спихнуть контакт с неопределенностью на другого.
Самое лучшее, что мы можем сделать — построить адекватную модель работы с неопределенностью. Которая позволит создать алгоритм оценки или хотя бы разделить ответственность между этой моделью и оценщиком. Знать ограничения этой модели. А затем — научить пользоваться моделью тех, кто даёт оценки вам.
С древности такими моделями были гадания: бросание костей, гадание по внутренностям животных, по тени и прочая мистическая радость. На гаданиях основаны мировые религии. Но это не совсем то, на чём я бы хотел основывать свои бизнес-процессы.
«Судя по всему, даже Бог подчиняется принципу неопределённости, и не может одновременно знать положение и скорость частицы», — Стивен Хокинг.
Это вопрос философский, технического решения не имеет
Вернёмся к формуле. Она, в принципе, верная. Пакость в том, что ни числитель, ни знаменатель этой дроби не известны. Хотя бы потому, что:
• Подпись заказчика (кровью) под техническим заданием не гарантирует, что документ описывает именно тот объем работ, который реально нужен. Она даже не гарантирует, что заказчик читал ТЗ. Реальный объем работ вы узнаете только после приёмки проекта.
• Любая постановка задачи гарантированно содержит «дырки», которые можно трактовать двояко. Чем толще постановка — тем больше таких мест.
• Производительность людей (особенно программистов) может отличаться в разы и зависит от столь большого числа факторов, что учесть влияние всех просто невозможно.
Все известные мне математические модели, пытающиеся ответить на вопрос «Доколе?», построены на серьезных упрощениях. Применять их на практике можно только для демонстрации несостоятельности этих моделей и тщетности бытия.
С определенной долей вероятности можно спрогнозировать дату завершения задачи или проекта, если:
• у вас стабильная, сработавшаяся команда исполнителей;
• работы выполняются для одного и того же клиента, который дает стабильную обратную связь (читай — генерирует прогнозируемое количество «правочек») и демонстрирует стабильные требования к качеству;
• команда уже работала с подобными задачами;
• рабочий процесс, технологический стек и окружающая среда — неизменны;
• сам проект укладывается в головах команды;
• устраивает оценка в относительных, а не в абсолютных величинах (никаких тебе рублей и часов!);
• уже есть опыт работы в таких же условиях и данные, полученные в предыдущих итерациях; либо клиент готов работать итеративно и получать прогнозы, исходя из реальных замеров производительности предыдущих этапов.
Хуже всего дела обстоят у сэйлов, которые вынуждены делать вид, что все эти условия выполнены (хотя как раз наоборот). Но мы попробуем проникнуться этой галлюцинацией. В этом случае можно допустить, что вероятность завершения задачи к определенному сроку соответствует нормальному распределению Гаусса.
Про колокол Гаусса что-то слышали даже гуманитарии. Это распределение часто встречается в природе. Понятие «нормальный рост», «нормальный вес» и «нормальный человек» — это как раз из области Гауссовской нормальности. Колокол Гаусса пытаются привязать везде, где можно и нельзя, если речь идет о чем-то подверженном влиянию огромного числа случайных помех.
Итак, если возникает вопрос: «Какая там вероятность уложиться в оценку?» — можно ответить — «Нормальная» — и показать этот график.
Посередине колокола — наиболее вероятная трудоёмкость. Но поскольку мы работаем с величинами, подверженным случайностям — нам нужно делать допуск на величину рассеивания значений случайных величин (по-умному — среднеквадратичное отклонение или σ). Проблема в том, что если мы берем диапазон в +/- 1σ — вероятность, что мы уложимся в наш интервал оценки, всего 68%. В оставшейся трети случаев нас обвинят в некомпетентности и поставят в угол.
На величину 2σ — вероятность будет 95%, но сам интервал получится до неприличия большой. Тут уже ваш заказчик скажет: «Фу-фу, вы не можете мне сказать точные оценки, а конкуренты сказали. Вы — упыри. До свидания». Пять процентов — это не так то мало, если у вас много задач, и за срыв сроков по каждой из них мучительно бьют.