Tue 1 May 2007
Estimate за 20 минут
Posted by Alex Lebedev under бизнес, программирование, работа с заказчиком
[15] Comments
Небольшая зарисовка из трудовых будней
Вводная
Клиент: “Алекс, не мог бы ты посмотреть спецификацию проекта Х? Можешь ли ты это сделать и сколько приблизительно времени это займет?”
Я: “ОК, я так понимаю это высший приоритет на сейчас”
Клиент: “Да”
Я: “Что ж, тогда поехали… Скоро вернусь”
Читаем спецификацию
Открываю Basecamp, иду на страницу проекта. Имеется: один абзац общих требований и приаттаченый Word’овский файл. Скачиваю. Открываю. 5 страниц, на первой общие требования и предполагаемый план работ, на остальных четырех — описание функций в виде эскизов страниц с описанием.
Смотрю на расписание. Три контрольных точки:
0-30% done “Complete design and markup of all presentation layers” плюс какой-то минорный функционал. Target Completion Date: через 3 дня
30-70% done Весь функционал, включая биллинг и прием платежей. Target Completion Date: через 10 дней
all done Тестирование и доводка согласно пожеланиям заказчика. Target Completion Date: через 25 дней
Похоже, план можно полностью списать в утиль, на правах бреда сивой кобылы. Возможно, он писался до осознания функциональности. В любом случае, надо искать конструктив. Посему, перехожу к описанию функционала.
Бегло просматриваю страницы с функционалом. Похоже, это главные страницы основных секций проекта. Относительно подробное описание функций есть в комментариях справа. wiki, блоги, теги, комментарии, чаты, зоны видимости сообщений — черт, сколько умных слов-то…
Делаем estimate
Возвращаюсь к началу описания функционала. Достаю планшет и чистый лист бумаги. Начинаю медленно читать список функций и сразу же набрасываю модель данных — имена объектов (сущностей) и связи между ними. Связи «многие ко многим» не детализирую. Кардинальность связей бросаю обозначать на пятой сущности — потом разберемся, если еще понадобится. Заканчиваю первую страницу с функционалом — в активе 7 сущностей. После следующей страницы – еще 6, да и связей прибавилось…
После последней страницы у меня уже 19 основных сущностей. Можно предположить, что второстепенных сущностей будет, как минимум, столько же, если не вдвое больше. Отдельно выписываю особо запомнившиеся фрагменты функционала: биллинг, прием платежей, live preview закачанных пользователями видеороликов и т.д.
По грубой прикидке, каждой сущности будет соответствовать класс модели. На каждый класс придется несколько сотен строк кода (Ruby on Rails). И еще на столько же потянут тесты. В общем, уже понятно, о чем говорить клиенту:
Я: “Закончил читать спецификацию. На реализацию уйдет заметно больше 6 месяцев при команде в 4 человека”. Насколько больше — предсказать за полчаса невозможно, да и, учитывая указанные в документе контрольные точки, едва ли будет интересно заказчику.
Клиент: “Ладно, забудь. Можешь прекратить читать. Я знаю парня, который сделает это за 4 недели”
Я: “Что ж, удачи ему. Я не верю, что это возможно”
В чем мораль?
Во-первых, как мне кажется, я нашел простой способ экспресс-оценки трудоемкости. В смысле, способ быстро раскрыть порядок реального размера проекта.
Во-вторых, почти всегда найдется клоун, который пообещает сдать пятилетку за три дня. «Безумству храбрых поем мы песню». А заказчик, вероятно, совсем скоро к нам вернется.

May 2nd, 2007 at 12:36
Да, бывает. При этом довольно часто
May 2nd, 2007 at 01:13
Учусь говорить таким клиентам “до свидания” с порога. Нет смысла работать с людьми, не представляющими что им нужно, при этом на основе каких-то загадочных предположений строящих планы. У них каша в голове, а виноват, как всегда окажется заказчик.
Насчет дятлов с пятилеткой за три дня – это бывает. Правда, есть ненулевая вероятность, что у него уже есть все наработки и он будет три недели пить пиво, а за четвертую – кастомизовать все имеющееся. Но эта вероятность очень маленькая.
May 2nd, 2007 at 02:05
А вообще странный процесс эта разработка. Смотришь на требования все если не даже знакомо то вполне реализуемо, вроде ничего сложного. А как начнешь считать время, то такие цифры получаются, сам удивляешься. И не удивительно что кто-то дает меньшие оценки.
May 2nd, 2007 at 09:10
Метод оценки весьма интересный, надо будет взять на заметку. Еще бы посчитать сколько в среднем времени затрачивается на конечную строку кода – был бы вообще кайф.
May 2nd, 2007 at 10:54
А тот парень возмет готовый CMS на php/asp/проч и сделает за 4 недели
May 2nd, 2007 at 11:52
На счёт рисования сущностей на основе которых делаются таблицы БД и модели – очень правильно , правда их размер не всегда пропорционален величине проекта по времени – это уже зависит от функциональности.
А где рисуете? Бумага, планшет с фотошопом, access?
May 2nd, 2007 at 12:03
Для первых стадий — только бумага или доска (если надо обсуждать с командой). На компьютере захочется сделать красиво и аккуратно, что на данном этапе будет пустой потерей времени.
Когда приходит время серьезного проектирования — перехожу на Visio, затем пишу скрипт создания структуры (или первую миграцию в Ruby on Rails). Инструменты типа ErWin обладают своими плюсами, но их юзабилити просто ужасна. В той версии ErWin, которой я пользовался, функции Undo не было вообще.
May 2nd, 2007 at 02:08
я про второе…
таких пакишей и инди, которые делают все за 4 недели, 70% из всех предложений на рынке. для них главное урвать проект и получить предоплату. как правило, это их единственная задача.
а то что заказчики возвращаются после такого – это как девушки – вполне предсказуемо. поэтому париться на этот счет и убивать время на естимейты при такой постановке вопроса – мартышкин труд ))
May 2nd, 2007 at 02:22
Так как же все-таки убедить клиента, что он не прав – не хочется ведь его терять!
May 2nd, 2007 at 07:35
Черт. Моя статья в компьютерре так и не вышла с сентября. А там я писал про то же самое
.
May 2nd, 2007 at 07:45
Нет смысла убеждать потенциального клиента, что он неправ НАСТОЛЬКО. Клиентов много, надо выбирать лучших из них, а не воспитывать худших, тратя свои нервные клетки.
May 3rd, 2007 at 06:06
Есть неплохая методика Use Case Points
May 10th, 2007 at 02:28
Точно, точно метод весьма хорош, надо будет взять на заметку.
May 6th, 2008 at 02:15
Не согласен. Мне бывает попадаются с заданиями, типа сделать on-line игру за неделю или написать сайт-визитку за 50$. Таких заказчиков надо посылать сразу.
June 12th, 2008 at 05:50
Для таких клиентов просто нужен другой тип предложения – как уже правильно написали, кастомизации на основе существующего движка.
Это просто совершенно другая экономика, когда разовый проект стоит $50, но деньги зарабатываются массовым “клепанием” таких проектов.