Разработчики подходят к сложной проблеме, разбивая ее на более мелкие и решая их отдельно.
В идеальном мире решение проблемы было бы сложной проблемой A, и вы могли бы в определенный момент времени разложить ее на короткий список небольших задач от A 1 до A n , для каждой оценки времени достаточно просто, учитывая что время, необходимое для решения первоначальной сложной проблемы, будет:
где D - процесс самого разложения.
В реальном мире единственная проблема заключается в том, что t ( D ) будет на самом деле больше, чем время, которое вы тратите на решение небольших проблем. Другими словами, чтобы достичь этого уровня разложения проблемы, вам практически необходимо решить саму проблему.
Вы можете еще:
Разделите данную задачу (решение проблемы) на более мелкие куски, каждый из которых по-прежнему является сложной проблемой,
Оцените ожидаемое время для каждого куска и соответствующий риск.
Например, задача 1 требует прибл. 5 часов, но риск быть заблокированным при этом высок, поэтому дайте клиенту 12 часов.
Оцените зависимости и как они влияют на время.
Например, для задачи 19 требуется 2 часа, а риск настолько низок, что можно сказать, что это точно 2 часа. Не 1. Не 3. Но задача 19 опирается на задачу 24: задача 24 может повлиять на задачу 19 таким образом, что вам потребуется полностью переписать код задачи 19, используя другой подход.
Дайте все эти детали вашему клиенту. Не давайте сумму.
Последний пункт важен. Если вы дадите сумму, скажем, 192 часа, клиент считает, что это очень точный показатель, а время, которое вы потратите, скажем, от 189 до 195 часов.
Если вместо этого вы даете детали,
Клиент, который заботится, поймет, что это не 192 часа. Это 192 часа, если все пойдет не так, учитывая риск, определенный во время оценки. Еще 238 часов, если все пойдет еще хуже. Это также 85 часов, если все в порядке.
Что касается клиента, которому все равно, он не будет читать ваш ответ во всех случаях. Все, что он хочет, это число, чтобы потом обвинять тебя. Дав очень подробный ответ, который он никогда не прочтет, вы знаете, что он не может спросить вас, сколько времени потребуется на это: вы уже ответили на это. Он также не может обвинить вас позже, так как он не прочитал ответ, чтобы вычислить сумму.