Несколько советов от темной стороны от того, кто научился трудному пути.
Требования неясны. Никто не сделал глубокий анализ всех последствий.
Не делайте оценку на данный момент. Никто не оценивает, сколько солдат нужно, чтобы выиграть битву, не имея представления о количестве врагов. Оценка сделана после разведки. Это если вы уже не сражались с этим врагом.
Новая функция, вероятно, нарушит некоторые предположения, которые вы сделали в своем коде, и вы сразу же начнете думать обо всех вещах, которые вам, возможно, придется реорганизовать.
Это ваша обязанность учитывать, если вы не ожидаете, что другие будут иметь опыт в этой области.
У вас есть другие дела из прошлых заданий, и вам нужно будет составить оценку, которая учитывает эту другую работу.
То же самое, что и выше, даже для непредвиденной работы, созданной товарищем по команде, находящимся рядом с вами, с почти несуществующей процедурой тестирования, из-за которой код выдает ошибку, которую вы не можете точно предсказать заранее. Это прогноз погоды.
Определение «сделано», вероятно, неясно: когда это будет сделано? «Готово», как в только что законченном кодировании, или «готово», как в «пользователи используют его»?
Понять требования конечного пользователя здесь, думать как пользователь. Не делайте того, что делают ваши коллеги, если они считают, что что-то «сделано», просто потому, что некоторые «базовые функциональные возможности с базовым рабочим процессом, которые ни один пользователь не может допустить, - это то, что они считают « выполненным » . Подумайте об этом с точки зрения пользователя, потому что это обычно понимает клиент, для которого вы делаете оценку. Оценивать в соответствии с полными требованиями конечного пользователя, а не с минимальными техническими требованиями. И поймите, что ваши клиенты, запрашивающие оценки, будут совершенно неточными в том, как они формулируют вещи, и понимают технические аспекты того, что вы говорите.
Независимо от того, насколько вы осведомлены обо всех этих вещах, иногда ваша «гордость программиста» заставляет вас давать / принимать более короткие времена, чем вы изначально предполагали. Особенно, когда вы чувствуете давление сроков и ожиданий руководства.
Не делай этого! Вы говорите как целеустремленный трудолюбивый человек и, возможно, тот, кто легко поддается принуждению.
Проблема здесь в следующем: допустим, вы и Джо делали оценки времени для одной и той же задачи (но между двумя отдельными сотрудниками, не подозревая об обеих оценках одновременно). Вы доблестно оцениваете «одну неделю» . Это нормально, вы думаете, вы будете работать более 100 часов в неделю, без оплаты сверхурочных. Теперь ты опоздал на три дня.
Между тем Джо оценивает 5 месяцев. Вы думаете, что это смешно, вы думаете, что можете справиться с этим за одну неделю. Сколько работает Джо? 10 часов в неделю? ... кроме того, что он заканчивает вовремя ровно через 5 месяцев.
Угадай, кого воспринимают как осла? Это верно, ты. Джо, кажется, отличный работник, ты выглядишь ненадежным сейчас. Не имеет большого значения, что вы могли бы достичь еще лучшего результата в ~ 7% времени, которое занимал Джо. Важно то, что у вас было 3 выходных дня после одной недели.
Никогда не ошибайтесь в сторону более жесткой оценки. Ошибка на стороне более слабой оценки. У вашей компании есть репутация, и она не будет основываться на длине ваших оценок почти так же, как на точности ваших оценок. Легко быть точным с оценкой, которая слишком длинна, вы просто получаете больше времени, чтобы работать над проблемой и решать ее лучше. Слишком короткая оценка не оставляет вообще никакой передышки, вы либо отчаянно ее встречаете, либо вас облажали.