Этот пост меня подтолкнул написать один проект, который оказался в заложниках у программиста. Проработав продолжительное время с программистами и дизайнерами, часто приходилось сталкиваться с «провальными» сроками выполнения задач по разработке софта, заявленных исполнителями. При составлении плана разработок нам приходилось учитывать, что сроки занижены на порядок и мы корректировали их в сторону увеличения — так зачастую 1 день разработки превращался в 3-4 дня. Почему и зачем?
Каждый программист делает оценку планируемой свой работы отчасти правильно, но практически всегда забывает о накладных расходах (отладка, тесты и т.п.). Превышение сроков выполнения означает лишь только то, что задача слишком велика и её нужно разбивать на подзадачи. Если время задачи выполнения оценивается опытным разработчиком, то Вы должны услышать оценки срока по каждой задаче в диапазоне от 0.5 до 16 часов, а то, что не укладывается в 16 часов (два раб.дня) следует разбивать на части.
Многие айтишные стартапы инициированы молодыми специалистами, у которых «правильная часть» оценки может просто не существовать. Ребята дают оценку по срокам выполнения практически наугад, потому что очень многие вещи, в свете отсутствия опыта, кажутся им нетривиальными или очень простыми по реализации. Важно понимать, что опыт программирования и оценочный опыт — это разные вещи. Хороший программист, который ни разу ничего не оценивал — не даст качественную оценку с первого раза.
В итоге, каждый программист в команде должен использовать свой опыт для дачи оценки сроков задач проекта. А руководителю стартапа важно четко вести учет выполнения задач и уметь анализировать всё до мелочей.
Для наглядности приведу некоторые задачи.
Оценка программиста | Рассуждения программиста | Что забыл программист | Действительная оценка |
---|---|---|---|
2 минуты | Там нужно поправить совсем немножечко кода, причем я знаю где это | Как минимум загрузка среды, поиск и открытие нужного исходника. В зависимости от среды разработки добавьте сюда тесты, сборку, журналирование. | 1 час |
15 минут | Я сейчас погуглю и быстренько всё исправлю | Крайне редко удается найти то, что нужно с первого раза, а потом это еще нужно допилить напильником. Плюс: cборка, тесты, журнал… | 2 часа |
1 час | Я знаю как это сделать, просто нужно сесть и написать, это займет немного времени. | Одного часа не хватит, всегда появятся «фантомные» проблемы — здесь дернул, там отвалилось | 3 часа |
5 часов | Я подключу фреймфорк и добавлю несколько полей в интерфейс. | Использование фреймфорка может повлечь за собой конфликт между переменными среды, а поля должны быть отражены в базе и иметь управление через админку. | 12 часов |
12 часов | Тут придется повозиться, создадим таблицу в базе, конвертнём в неё данные, а потом добавим логику работы и вывод. | Скорее всего всплывет дополнительный функционал, который не был запланирован, но при расширении логики произойдет влияние на всю разработку в целом. | 30 часов |
1 неделя | Я такого никогда не делал, но думаю недели будет достаточно. | Задача слишком большая, чтобы большинство программистов могли оценить сроки. Такая задача должна быть разбита на понятные подзадачи. Пока не упрощена задача, давать ее на реализацию программистам верный путь сорвать сроки. | 20 дней |