Заметили, что постоянно срываете сроки сдачи проекта? Скорее всего, вы просто не можете правильно оценить время, которое требуется на разработку.
Умение точно определять количество времени, необходимое для создания продукта, является критически важным навыком для каждого разработчика. Объясняем, как этому научиться.
Типичная ситуация
Вы работаете программистом некоторое время, но каждый раз, когда беретесь за новую задачу, не можете правильно оценить, сколько времени потребуется на её выполнение. В итоге вы либо работаете без отдыха, либо срываете сроки. Знакомо? Если да, продолжайте читать. Разберёмся, как справиться с этой проблемой и научиться определять необходимое время.
Почему полезно планировать время?
Зная, сколько времени и сил уйдёт на выполнение задачи, вы сможете распланировать свой бюджет и занятость. Возможно, некоторые задачи будут делегированы помощникам. Тогда необходимо заранее предупредить их, обозначить сроки и выделить бюджет.
Если нужно привлечь более опытных специалистов в качестве субподрядчиков, тогда стоит подстраховаться и быть готовыми к тому, что они не выполнят работу вовремя, из-за чего и вы не успеете доделать свою часть.
Задача должна быть максимально ясной
Часто программисты не вникают в детали задач, и поэтому не получается верно оценить время на её реализацию. Прежде чем оценивать проект, вы должны четко понимать, с чем придётся работать.
Обычно это делают так: изучают задание и приложенные файлы, затем обсуждают с клиентом подробности лично (или онлайн). Во время этого сеанса связи можно получить значительно более глубокое понимание проекта, задать уточняющие вопросы и собрать необходимую именно для вас информацию, которую клиент до этого момента не предоставлял.
Признайтесь себе, что идеальных случаев не бывает
Когда вы закладываете время на работу, вы думаете, что этого времени будет достаточно. А иногда даже закладываете дополнительное, учитывая опыт срыва сроков и другие факторы.
Вообще, одним из вариантов того, как можно справиться с этим, − попытаться определить идеальный срок с поправкой на ваш опыт и умножить его на два. Например, если вы верстаете простой сайт за 2-3 дня, но иногда сроки увеличиваются до 4 дней, то можете смело брать неделю на работу. Конечно, при условии, что заказчика это устраивает.
В противном случае, вам вообще не приходится выбирать, сколько времени заложить на разработку, ведь заказчик делает это за вас. Но при таком раскладе и результат может пострадать.
О том, что проекты, подразумевающие программную разработку, часто не удаётся выполнить в срок, писал ещё в XX веке Фредерик Брукс. Если не получается справиться с мыслью о том, что все успевают, а вы − нет, можете почитать его книгу об управлении проектами в области разработки ПО.
Разделите работу на части
Например, если вы занимаетесь сайтами, проверьте, сколько может уйти на разработку раздела с контактами, отзывами, каталогом. Зафиксируйте по каждому из типов, сколько времени было затрачено на выполнение задачи, сделайте несколько проектов по такой схеме, а затем проанализируйте результаты.
Можно составить смету с временем для личного учёта, обозначить, сколько времени в день вы тратите на работу в принципе и разделить количество времени, необходимое для выполнения по дням. Например, если вы готовы тратить по 3-4 часа в день, а требуется около 30 часов, ориентируйтесь на 8-10 дней.
Используйте техники управления временем
Вообще, управление временем позволяет контролировать себя, спасаться от выгорания и даже сдавать проекты в срок. Не так важно, какой метод учета и управления вы выберете. Главное, чтобы вы следовали ему на протяжении некоторого времени, а не бросали, как только покажется, что вы уже научились контролировать себя без помощи сервисов и техник.
Одной из наиболее популярных является техника помидора. Сначала вы составляете список задач, начинаете с самой важной, работаете 25 минут, а затем делаете перерыв в 5 минут. После нескольких таких циклов (обычно, через два часа), можно позволить себе отдохнуть до получаса, а затем продолжить.
Контролировать себя проще всего с помощью существующих сервисов и мобильных приложений, а можно написать свой и заодно попрактиковаться в программировании.
Не давайте ответ сразу
Когда заказчик спрашивает, сколько времени потребуется на выполнение, напишите ему, что посчитаете и дадите ответ. За несколько часов у вас будет время оценить свои возможности на ближайшее время и принять обдуманное решение. Зачастую именно импульсивность виновата том, что мы обещаем выполнить работы быстрее, чем обычно.
Как быть, если вы снова не укладываетесь в сроки?
Во-первых, как только вы обнаружили, что есть вероятность несдачи проекта в срок, нужно заново посчитать, сколько на самом деле времени потребуется. Если выяснится, что вы уже точно не успеете, сообщите клиенту об этом заранее. Стоит объяснить, что именно пошло не так, не отчитываясь и жалуясь, что вас подвели коллеги, обстоятельства и т. д. Обязательно спросите, насколько это критично, и назовите срок, к которому выполните задачу. Неплохо, если вы покажете, что действительно занимаетесь задачей.
Если до сдачи проекта остаётся совсем мало времени, и только тут выясняется, что существуют проблемы, а оправдываться не хочется, то тянуть время − не такая уж и плохая стратегия. По крайней мере, клиент, возможно, не заметит, что вы сдали работу на день позже, или для него это не будет критичным. Зачастую заказчики закладывают несколько дней к обещанному сроку.
Что делать, когда задача сырая, а работать надо?
Иногда у клиентов нет четкой задачи, либо существуют мифические временные ограничения (с API, например). Тогда, стоит объяснить, что задача будет сделана, но точные сроки можно будет определить только после устранения проблем.
Если проблема в том, что клиент сам не понимает, что нужно, предложите свои варианты реализации, разработку прототипа (за отдельную плату и сроки, конечно).
Суммируем
- Не планируем задачу, как путь из точки А в точку Б. Представим, что в любом случае найдётся причина, которая затянет работу над проектом. Тогда идти к выполнению задачи вы будете уже не по прямой, а по дуге.
- Распланируйте не только время, которое потребуется на написание кода, но и на тестирование. Очень часто именно тут и спотыкаются разработчики, выясняя в последние часы, что где-то код работает не так, как нужно.
- Если срок в днях, добавьте день, в неделях − неделю, в месяцах − месяц. Возможно, звучит абсурдно, особенно если представить, что срок на разработку − год. На деле же, это позволит выполнить работу более качественно, а если вы сделаете всё раньше, чем пообещали, то будет плюс в копилку от заказчика.
- Да, сдавать работу раньше, чем пообещали (даже если специально заложили больше времени), может быть полезно, с точки зрения получения положительного отзыва от заказчика.
В этом материале мы дали несколько советов разработчикам и командам, как определять время, необходимое на выполнение задач. Советы основаны на личном опыте редакции, а также мнении пользователей форумов. Они будут также полезны и заказчикам, чтобы понимать, почему исполнители устанавливают именно такие сроки.
Если у вас есть своё мнение по теме, делитесь в комментариях :)
Понравился материал о том, как оценить время на разработку проекта? Другие материалы по теме:
- Преодолеваем трудности правильно: чем сложнее, тем лучше
- Вопрос дня: не поздно ли начинать карьеру программиста в 40 лет?
- Руководство по борьбе со стрессом для программистов
Источник: Советы, как оценить время на разработку on Quora
Комментарии