Подтвердить что ты не робот

Как вы делаете очень быстрые (и грязные) оценки для задач кодирования?

Итак, вы только что были поставлены на место The Boss. У вас есть 15 минут, чтобы придумать заднюю часть оценки конверта для добавления новой функции. Ваш босс (к счастью) признает, что вы не можете дать точную оценку за это время, ожидая чего-то, что находится в правильном порядке.

Вопрос в том, как вы собираетесь давать оценку в сроки, которые точны на порядок?


Обратите внимание, что это должно быть быстрой и грязной оценкой, а не тем, что можно было бы ожидать от таких вопросов, как this

4b9b3361

Ответ 1

Поместите палец во рту, вылейте, взбейте в воздухе и составьте число, основанное на прошлом опыте. Затем удвоить его.

Действительно, его просто опыт, который имеет значение. Вы представляете, что влечет за собой выполнение этой задачи, и вы знаете, как долго вам это понадобится. Двойной он для непредвиденных предметов. Вот почему вы никогда не спрашиваете младших программистов для таких оценок.

Ответ 2

Лучший способ - быстро выполнить разбивку всех основных подкомпонентов, например.

  • Обновить модель данных script (3 элемента в 2 таблицах)
  • Изменить экран ввода (3 новых входа)
  • Проверить вход (3 новых входа)
  • Обновить данные.
  • Показать результаты и т.д...
  • Сборка unit test

Назначьте приблизительное предположение о каждом из них, и если вы не можете думать о том, что вы отложили не менее 2 часов, потому что даже самый простой элемент, вероятно, займет не менее часа, но 2x будет допускать неопределенность.

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

Ответ 3

Вспомните о похожих задачах, которые вы делали в прошлом, и о том, как долго они вас достали.

Если раньше вы ничего подобного не делали, попробуйте разбить задачу на подзадачи, затем каждая подзадача будет продолжена до тех пор, пока не останется никакой подзадачи, которая звучит так, как будто это займет больше 1-2 дней для прототипа в самый наивный возможный путь; если вы не можете разделить задачу с оценкой более 3 дней, это обычно означает, что вы действительно не знаете, что участвует в выполнении этой задачи; сделайте несколько быстрых исследований. Как только все будет разбито достаточно, суммируйте его, удвойте результат и дайте это как свою оценку.

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

Ответ 4

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

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

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

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

Итак, я подумал о различных уровнях вещей, которые, возможно, придется изменить, и сделал оценку диапазона - ну, в лучшем случае, она может быть уже почти работает, но это сомнительно. И в худшем случае есть целая куча вещей, которые нужно изменить. Итак, я сказал моему боссу, было бы лучше предположить худшее здесь, так как спецификация была очень сложной и, несмотря на то, что не знала об этой сложности, я подозревал, что, учитывая большой недостаток связанного кода в программе, почти никто из эта сложность была фактически реализована. В конце концов я был прав - необходимые изменения оказались сложными, и они передали проект подрядчику с большим опытом в сложностях кодирования с чересстрочной разверткой H.264.

Ответ 5

В дополнение к необходимой разбивке: совет, который я узнал от Прагматичных программистов, заключается в том, чтобы выражать оценки в течение 15 дней в неделях и оценивать более 8 недель в месяцах; так что единица отражает точность оценки. Будьте очень осторожны в течение 30 недель.

Вы также можете основывать свои оценки на аналогичных задачах, которые вы уже выполнили.

Ответ 6

Если вам действительно нужна очень быстрая оценка, вы можете выполнить структуру разбивки работ с каждой задачей в течение 1-2 дней или меньше, а после этого оценить каждую задачу, указав минимальные и максимальные оценочные значения.

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

Вы получите некоторый интервал, например. 12-15 дней или 5-30 дней - это гораздо более полезно, чем 16 дней вместо указанных интервалов.

Это может быть полезно для вас хорошая книга Стив МакКоннел Оценка программного обеспечения: Демистификация черного искусства.

Ответ 7

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

Когда босс говорит "как долго завершить" проект, он подразумевает время, когда он завершается и развертывается в прямом эфире для пользователей. Программист (естественно) только подумает о времени, требуемом для завершения программирования (время, чтобы физически вывести решение проблемы), поэтому вы обычно оцениваете.

Правило большого пальца:

"Первое число" - это количество дней, которые, по вашему мнению, потребуют от вас выполнения задачи, основанной на объеме задачи, как только что описано. (Но, конечно, вам не сказали все).

Первым кратным является дополнительное время, необходимое для перекодировки после первого демо/прототипа, данного боссу, и он говорит: "Хорошо, здорово, но можете ли вы добавить..."

Второй кратный - это время, необходимое для перекодировки перекодировки до правильного стандарта для производства.

Третий многократный - это время для тестирования, документирования и развертывания, а также всех других материалов для администрирования, которые вам нужно сделать, чтобы действительно вывести и выжить.

И четвертый кратный - это ваша непредвиденная ситуация для вышеуказанного.

Это должно дать вам безопасную оценку. Конечно, вы должны настаивать на более тщательном планировании и оценке.

Ответ 8

Недавно я читал Agile Estimating and Planning и не могу рекомендовать его достаточно.

Ответ 9

Если я вынужден предоставить оценки без достаточного времени для правильного изучения предмета, я склонен к значительному переоценке. Исправить почти всегда сложнее, чем я думаю, это будет. Если я думаю, что что-то займет день, я скажу два дня. Если я скажу, что что-то займет час, я скажу один день. То, что я пытаюсь проиллюстрировать этими комментариями, заключается в том, что для всех, кроме самых обычных задач, таких как орфографические ошибки, даже небольшое изменение кода может взорваться в полный день. На все, что я думаю, может занять день или больше, я удвою оценку. Я знаю, что это может быть сложно сделать. Менеджмент хочет небольших номеров. Вы хотите выглядеть умным и способным перед другим разработчиком. См. Также Скотти Factory.

Даже если у вас есть члены команды QA, которые будут тестировать ваш код, вы должны помнить, что ваша работа также проверяет код. Удостоверьтесь в том, чтобы учитывать это в любой оценке. Это то, что я видел, многие разработчики не учитывают процесс оценки.

Ответ 10

  • Разбейте задачу на части и назначьте каждую часть времени

  • Работайте в единицах не менее 1/2 в день. Это предотвратит микропланирование

  • Большая проблема с оценкой проекта - недооценка. Если вы хорошо знаете задачу и можете почти увидеть код, тогда весьте задачу на 1. Если есть некоторая неопределенность или задача требует неизвестной технологии, умножьте ее на более высокий коэффициент, в зависимости от уровня неопределенности

  • Не беспокойтесь о точности каждой части. Ошибки, как правило, сокращаются, так как единственное, что действительно имеет значение, это общая продолжительность

Всегда есть старый добрый резерв для получения оптимистической шкалы времени и умножения ее на PI. Работает чаще, чем нужно!

Ответ 11

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

Ответ 12

В такие моменты я помню правило McKenzie Brother о преобразовании в метрику: "Двойной, и добавьте тридцать".

Я вообще придумываю, как быстро я изначально думаю, что это займет что-то, а затем удвоить его, потому что я всегда недооцениваю, а затем добавляю 30 для тестирования, в зависимости от единиц, которые я использую.

Ответ 13

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

Конечно, минимальное разделение времени и количество предметов, требуемых для некоторого уровня комфорта, должны варьироваться в зависимости от проблемной области - по крайней мере 5 или 6 половинчатых кусков, похоже, подходят для того, что мне было предложено в последнее время, но это нужно пересматривать каждые несколько месяцев.

Когда меня просят оценить от лица кого-то еще, я сопротивляюсь немного больше и следую подобной практике с помощью щедрой системы заполнения ( "double и add x", как упоминалось выше, вероятно, является хорошим приближением)

Ответ 14

Фактор №1 - это неизвестные, и вы правы, вы не можете знать их всех. Тем не менее, вы, как правило, знаете некоторые важные вопросы, которые никто не может ответить за вас в то время.

Фактор №2 - это воспринимаемая трудность и доступность инструментов и ресурсов.


Результат = примерно удвоить свою оценку

Ответ 15

Чтобы оценить в правильном порядке величины, вам нужно:

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

Ответ 16

Я считаю, что ответ всегда "от шести до восьми недель".

Ответ 17

"от шести до восьми недель" работает очень хорошо, еще одна вещь, которая работает, основана на модели данных.

Представьте количество таблиц базы данных (или подобных), необходимых для приложения, умножьте их на количество дней, которое вам нужно для кода моделей, CRUD, UI и т.д. для каждой таблицы и добавить от 30% до 50% времени Кроме того.