Как планировать исследовательское задачи

После поста о планировании для команд мне присылали много вопросов, и один из самых популярных — как рассчитывать время для исследовательских задач (==задач, где есть хотя бы одно неизвестное). С этой проблемой я столкнулась в Яндексе, когда работала в группе бэкенд-разработки. У нас было очень много экспериментальных задач, где требовалось, например, исследовать какую-то новую технологию — и в то же время соблюсти дедлайны. В итоге у меня получилось примерно следующее решение — давайте разберем его на примере приготовления торта.

Задача: приготовить торт. Я вообще ни разу ни шеф-повар, а на ужин ем жареные пельмени. Что мне делать?

Ответ, кажется, очевиден — идти искать рецепт (==план действий). Так, минуточку, сколько там миллионов страниц нашлось по запросу [рецепт торта]? Из этого вытекает пункт 1:

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

Итак, круто, осталось всего несколько кандидатов — анализируем пользовательские предпочтения (допустим, именинник любит шоколад) и выбираем финалиста. Рецепт есть! Если вернуться к рабочей терминологии, то это примерный план проекта с расписанными шагами и взаимосвязями, что ведет нас к пунту 2:

2. Декомпозировать задачу. Раздробить ее на множество подзадач — и тут-то окажется, что для большей части подзадач вполне реально оценить сроки. Насыпать муку в стакан? Это мы умеем! То есть, в итоге наша исследовательская задача распадется на составляющие, и так мы доберемся, собственно, до сути — до того самого неизвестного: что мы никогда не делали / что предполагает изобретение чего-то нового.

Допустим, я хочу придумать необычный крем для своего торта. Мне неизвестно, сколько времени это может занять. В этом случае всегда работает правило — лучше закладывай больше, чем меньше. Вроде все про это знают, это элементарная психология, но почему-то стесняются использовать. Суть в том, что если уж вам, исполнителю, неизвестно, сколько на это потребуется времени, что же могут сказать другие, внешние, люди? :) И вот он, пункт 3:

3. Взять задачу, которую вы уже решали, из примерно той же области и умножить тот срок на 3. Но! Мы же помним про дедлайн, который выставили в самом начале? Так вот, срок для решения задачи + 1,25 этого срока = дедлайн. То есть, если я оценила, что для изобретения нового крема мне потребуется 1 час, а дедлайн у меня в 11 вечера, то начать я должна не позже, чем в 8–45. Если я вижу, что по этой формуле не успеваю к дедлайну, значит, надо либо урезать требования, либо разговаривать о переносе дедлайна. Почему же эти 1,25 так важны? Да потому, что с исследовательскими задачами вероятность фейла неимоверно высока! Поэтому в запасе должно быть время, чтобы протестировать ваше решение и, если что, продумать план для нового. Пункт 4:

4. Найти толкового менеджера :) с исследованиями не бывает по-другому: на 10 фейлов приходится 1 удача; при этом плана Б быть не может — ведь каждая неудача дает нам новую информацию, и план приходится менять. Соответственно, должен быть человек, который, во-первых, донесет эту мысль (что точного дедлайна быть не может, что он вполне себе может сдвигаться) до руководства, во-вторых, объяснит исполнителям, что сроки все же есть (иначе работа превратится в бесконечный долгострой). Ну и далее будет оценивать, что делать, если не успеваем к дедлайну: отрезать часть функционала? договориться о новом сроке? вообще прекратить работу? Именно поэтому нужно заложить время еще и на продумывание нового плана :)