Руководство по оценке для разработчиков

Руководство по оценке для разработчиков

Справочная информация

Начну с того, что я очень не люблю сметное дело. В большинстве случаев это похоже на облизывание пальца и засовывание его в воздух, а в других случаях - еще хуже! Между необходимостью (обычно) количественно оценить большое количество неизвестных, которые могут замедлить работу, вы должны попытаться спланировать, не уйдет ли коллега, помогающий вам, на больничный (по праву) как раз перед тем, как появится крупная зависимость. Когда вы, наконец, даете оценку, для людей, которым вы ее даете, это не оценка, а гарантия, и когда это не происходит по множеству причин, вы получаете довольно неудобную встречу, где вам приходится пытаться объяснить, почему вы не сделали то, что обещали. Это чувство настолько укоренилось в разработке программного обеспечения, что существует довольно распространенная ”шутка” на этот счет:

Человек: Эй, у нас есть очень крутая функция, которую нужно добавить! Все, что вам нужно сделать, это добавить кнопку в форму
Разработчик: 3 недели.
Человек: но это просто добавление кнопки?
Разработчик: конечно, это займет 4 недели.

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

Как составлять сметы

Итак, мы выяснили, что все мы должны знать, как составлять сметы, но есть небольшая проблема в том, как разработчик на самом деле составляет смету. Я уверен, что большинство из нас, имеющих небольшой опыт, просто выкидывали число и были достаточно точны в этом прогнозе, не задумываясь об этом. Конечно, это совершенно бесполезно, когда вы пытаетесь научиться оценивать, и вы можете прочитать такие статьи, как эта от Time Camp, в которых рассматривается достаточное количество отдельных методов, которые вы можете использовать для оценки. Однако на мой взгляд, реальный ответ на этот вопрос - использовать смесь техник, которые могут дать вам оценку менее чем за 30 секунд (на самом деле за 10) - дольше, и вы, вероятно, слишком много думаете, или задача слишком велика, и вам нужно разбить ее на части. Сказав это, вот как я лично оцениваю задачи.

Для меня оценку можно разделить на три части. Получение фактической оценки, преобразование того, сколько времени, по моему мнению, это займет, в реалистичную оценку и, наконец, как донести эту оценку до бизнеса. Я разложил все это ниже.

Получение оценки

Когда я думаю о том, сколько времени что-то займет, я, по сути, задаю себе вопросы, как показано на приведенной ниже блок-схеме, чтобы попытаться составить точную смету:

ПРИМЕЧАНИЕ: Приведенное выше - это не все, а лишь пример вопросов, которые вы должны задать себе, прежде чем дать оценку. Например, если код, который я пишу, использует интересную технологию, я, вероятно, немного сокращу время, просто потому, что я вложил в него дополнительную работу.

Преобразование в реальную смету

Существует несколько методик, которые вы можете использовать для этого, но я собираюсь обсудить две из наиболее распространенных.

Трехточечная смета

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

ПРИМЕЧАНИЕ: Оценка по трем точкам - это конечная точка оценки, т.е. после того, как вы прошли через другие шаги, пытаясь определить, сколько времени займет задача.

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

По сути, вы задаете себе эти три вопроса:

  • Сколько времени это займет, если все окажется проще, чем я ожидал.
  • Сколько времени это займет, если все пойдет не так
  • Сколько времени это займет в реальности, исходя из того, что я знаю на данный момент.

Затем вы делите эти 3 оценки на 3 и затем умножаете их на 3. Например: Я получаю задание добавить кнопку в форму и, основываясь на том, что я знаю, оптимистично это займет у меня час, реалистично - 4 часа, а пессимистично - 2 дня.

Это дает следующее:

1+4+163=7
{1 + 4 + 16 \over 3} = 7
31+4+16=7

Так как это близко к 8 часам, я бы просто округлил до полного 8-часового дня, так как это достаточно близко.

Время плюс

Это действительно простой способ оценки, и, по моему опыту, это самый популярный способ выполнения данного задания. Я бы не рекомендовал его новичкам, так как легко ошибиться, но, по сути, вы берете время, которое, по вашему мнению, потребуется, прибавляете 20% и округляете до ближайших 4 часов, 1 дня, 1,5 дня, 2 дней, 3 дней, 4 дней и 1 недели. Если больше, то задачу следует разделить на части.

Т.е:

8×1.2=9.6
8\times 1.2 = 9.6
8×1.2=9.6

Затем я беру оценку 9,6 и округляю до 1,5 дня.

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

Передача сметы

Передача информации может быть разделена на две части. Что делать, когда вы составляете смету, и что делать во время работы над задачей.

На совещании

Когда вы находитесь на встрече и вас просят дать оценку, вот несколько советов:

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

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

Будьте честны

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

Будьте честны с собой

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

Не паникуйте

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

Объясните свои доводы.

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

Оценка

После составления сметы

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

Таймбоксинг

Существует множество руководств по этому вопросу (например, вот это от clockify), но в двух словах это практика выделения определенного времени в течение дня, когда вы пытаетесь выполнить задачу.

Общайтесь

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

Не волнуйтесь, если вы ошибетесь

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