Или «Как меньше сосать на оценках».
Основы
- Всем плевать на оценки.
- Нет ничего, что могло бы сделать вас хорошим оценщиком. Скорее, есть еще куча вещей, на которые нужно обратить внимание, и которые в среднем сделают хорошую оценку.
- Почему в среднем? Потому что природа оценок состоит в том, чтобы придумать число на основе частичных данных (единственный способ полностью узнать объем задачи — это реализовать ее). Так что у вас всегда будут случаи, когда вы ошиблись. Но в среднем вы должны стать лучше в этом.
Разделение задач
Легче правильно оценить несколько задач (ошибки выровняются сами собой), чем оценить одну большую задачу. Так что если у вас есть большая задача — разбейте ее на более мелкие задачи.
Саморефлексия
Если вы постоянно занижаете оценку, примите это во внимание. Добавьте 30% ко всем своим оценкам и продолжайте оценивать себя.
Наличие хороших требований является ключевым
Большинство действительно плохих, на несколько порядков, ошибок в оценке происходят из-за плохих требований.
Например, вас просят оценить, сколько времени потребуется для внедрения пользователей и входа в приложение. Вы просматриваете процесс входа и выхода и оцениваете его. Когда вы почти закончили его разработку, вы понимаете, что вам нужен бэк-офис для управления этими пользователями.
И вот так ваши оценки уже не актуальны.
А как насчет возможности сменить пароль? А восстановить забытый пароль?
Решение — не принимайте требования как данность и не думайте, что тот, кто дал вам требования (будь то клиент, менеджер по продукту или кто-то еще), действительно точно знает, чего хочет.
(Некоторые могут сказать, что это проблема вашего клиента, если он не упомянул бэк-офис. Это правда, но подумайте, насколько ценен разработчик, если он может поделиться своим опытом и помочь с определением требований).
Это не просто код
Еще одна распространенная ошибка — думать только о времени разработки. Всегда учитывайте следующее:
- Время разработать решение. Неважно, каков процесс проектирования, где вы работаете. Независимо от того, пишете ли вы дизайн-документ или нет, проверяется ли дизайн или нет, является ли это просто чем-то, о чем вы думаете в своей голове. Это всегда требует времени.
- Время протестировать ваш код. Я не говорю о QA. Как только вы начинаете писать код, вы всегда тестируете его, чтобы убедиться, что он хотя бы работает на вашей машине. И это иногда менее тривиально, чем ожидалось. В примере с входом в систему вам нужно подождать, пока бэкэнд-разработчик разработает API для входа в систему, вам нужен работающий сервер с обновленной базой данных для тестирования вашего кода. Все эти вещи требуют времени.
- Пришло время проверить и исправить ошибки. Как только вы закончите разработку, QA обнаружит ошибки в вашем коде, и вам нужно будет их исправить, повторно опубликовать свой код, и цикл начнется снова. Не забудьте добавить время на исправление ошибок.
Время разработки против. Календарное время
Поймите разницу между временем разработки, календарным временем и временем готовности к производству.
Каждая метрика важна для кого-то другого.
Время разработки – это сколько времени вы действительно тратите на работу над функцией. Это дизайн + время реализации + исправление ошибок. Иногда у вас будет много пробелов (возможно, вам нужно подождать, пока бэкенд-команда реализует свою сторону, может быть, QA перегружен и протестирует вашу фичу только на следующей неделе). Обычно это важно только как инструмент для оценки календарного времени.
Календарное время — когда функция будет готова?
Если на кодирование уйдет 4 дня, а на этой неделе вы планируете взять отпуск, когда он будет готов? И, может быть, у QA или backend-команды другие графики? Обычно менеджер проекта берет ваши оценки времени разработки, а также все остальные оценки и графики и должен сообщить, когда функция будет готова.
Готово к работе — даже если функция закодирована, протестирована и исправлены ошибки, она не всегда попадает в рабочую среду. У вас непрерывная интеграция или вы регулярно развертываете? Есть ли какие-либо другие тесты, которые необходимо выполнить перед развертыванием в рабочей среде? Когда бэкенд-код попадет в производство?
Как на самом деле оценить
Просмотрите соответствующий код перед оценкой. Не просто колдуйте количество дней, исходя из того, что, по вашему мнению, это займет. Если вам нужно реализовать логин — просмотрите соответствующий код:
- Что нужно будет изменить в системе навигации?
- Как вы будете хранить токен?
- Как токен будет доступен для всего остального кода?
- Какие еще места в коде нужно изменить из-за логина?
Вам не нужно делать полный дизайн, но вам нужно попытаться найти более сложные части, места, где инфраструктура должна быть изменена, где другие функции конфликтуют с новой функцией и в целом, пройти большую часть поток функции. Таким образом, вы получите гораздо лучшее представление о масштабе задачи.
Оценка – это непрерывный процесс
После того, как вы оценили все задачи и приступили к работе, работа по оценке не выполняется.
Вам нужно постоянно проверять свой прогресс в сравнении с вашими оценками и понимать, где вы находитесь.
При необходимости — пересмотрите свои оценки и обновите всех, кто имеет отношение к делу. Это может быть немного неловко — вы практически признаете, что ошиблись. Но лучше знать заранее, чтобы позволить другим заинтересованным сторонам подготовиться и приспособиться к новым оценкам.
Краткое содержание
Всем плевать на оценки. Можно меньше сосать. Принять это