Я перестал считать часы. Вот как я оцениваю проекты теперь
Когда клиент спрашивает «сколько это стоит?», стандартный ответ — считать часы. Умножить на ставку. Прибавить 20% буфер. Написать число.
Я так делал три года. Потом сложил, сколько часов из этих «буферов» реально ушло на непредвиденное — и понял, что мои оценки были систематически неверными. Не потому что я плохо считаю. Потому что я отвечал не на тот вопрос.
Почему оценка в часах — это оценка не того
Hofstadter's Law звучит так: «Всё занимает дольше, чем ожидаешь — даже если учитываешь Hofstadter's Law». Это не про прокрастинацию. Это про то, что неопределённость в проектах нельзя устранить, добавив буфер.
Часы — это стоимость при условии, что всё пойдёт по плану. Но планы проектов с legacy-кодом не выполняются. Не потому что разработчики медленно работают, а потому что часть работы не видна до тех пор, пока не начнёшь копать.
В одном проекте мы оценили интеграцию Bitrix с внешней 1С в 40 часов. По факту вышло 130. Нет, не потому что «разработчик не умел». А потому что API 1С оказался задокументирован в формате «как нам удобно», а не как обещано. Это не было видно на пресейле. Это риск.
Часы — это ответ на вопрос «как долго?». Риск — это ответ на вопрос «что может пойти не так?». Это разные вопросы.
Три типа риска, о которых не спрашивают на пресейле
Я делю риски на три блока.
Первый — технический. Насколько хорошо я понимаю кодовую базу? Есть ли документация? Насколько предсказуемы внешние API?
Второй — организационный. Кто принимает решения у клиента? Один человек или комитет? Бывало ли, что клиент «пропадал» на две недели в середине задачи?
Третий — scope. Мы оба одинаково понимаем, что входит в работу? У клиента есть список требований или только «концепция»?
Эти три блока я смотрю до того, как беру калькулятор.
Мой чеклист: девять вопросов до цифры в коммерческом предложении
Вот вопросы, которые я задаю на пресейле перед любой оценкой стоимости IT-проекта — или про себя, или прямо клиенту:
- Есть ли у меня доступ к коду до оценки, или я оцениваю «по описанию»?
- Работал ли кто-то с этим кодом за последние 6 месяцев, или он «стоит»?
- Есть ли внешние интеграции с закрытым или плохо задокументированным API?
- Кто будет принимать финальное решение по ТЗ на стороне клиента?
- Есть ли хардовый дедлайн — или «желательно побыстрее»?
- Это greenfield или рефакторинг существующего?
- Клиент уже работал с разработчиками на этом проекте? Чем закончилось?
- Есть ли тесты, или я первый кто об этом думает?
- Что произойдёт с бизнесом, если мы выйдем за дедлайн на три недели?
Каждый вопрос помогает мне понять не сколько часов нужно — а насколько высок риск ошибиться в оценке.
Что бывает, когда пропускаешь чеклист
Два года назад я получил запрос: добавить на Bitrix-сайт личный кабинет с фильтрацией заказов. Задача казалась понятной. Я дал оценку сразу, без вопросов.
Обнаружил на второй день: у клиента три разных типа «заказов» в трёх разных таблицах, сведённых через ручную SQL-вьюшку, которую написал подрядчик три года назад и уволился. Документации нет. Тестов нет.
Проект занял в 2.8 раза дольше, чем я оценил. Клиент остался доволен результатом, но раздражён сроками. Я остался раздражён собой — потому что риск был видим, просто я не смотрел.
Если бы я задал вопрос 2 из чеклиста, я бы узнал, что код «стоит» с прошлого квартала, и задал бы дополнительные вопросы. Оценка была бы другой.
Красный, жёлтый, зелёный
После чеклиста я присваиваю проекту или крупной задаче цвет:
Зелёный — хорошо понимаю что делать, технический риск низкий, клиент понимает scope. Оцениваю в часах с небольшим буфером.
Жёлтый — есть 1–2 неизвестных. Оцениваю в диапазоне (минимум/максимум), явно называю что именно неизвестно и когда это прояснится.
Красный — слишком много непредсказуемого. Предлагаю discovery-фазу (платную) вместо оценки всего проекта. Или отказываюсь.
Это звучит очевидно. Но разница между «зелёным», которым я притворяюсь, и реальным зелёным — это граница между спокойным проектом и адом.
Отказался от $40K-контракта именно потому, что проект был красным: предложение переписать Bitrix-монолит без понимания, что реально тормозит. Подробнее в том посте.
AI-инструменты сломали старые формулы
В 2023 году AI-ассистенты начали реально менять скорость на некоторых задачах. Типичный случай: задача, которая раньше стоила 20 часов рутинного кода, теперь стоит 6. Но это не значит, что весь проект стал в 3 раза дешевле.
Парадокс: там где AI ускоряет написание кода — QA-хвост остаётся или увеличивается. Потому что AI пишет уверенно, но не всегда правильно. Я видел, как задача «написать интеграцию с API», оценённая через старую формулу в 15 часов, с AI-ускорением заняла 5 часов кода и 10 часов проверок.
Вывод: AI меняет распределение, но не убирает риск. Чеклист стал важнее, не менее важным.
Когда я отказываюсь на этапе оценки
Красный флаг, при котором я не даю оценку вообще, а предлагаю сначала discovery:
- Клиент не может ответить на вопрос «кто принимает решения по ТЗ»
- «У нас есть ТЗ» — а при прочтении это список желаний без приоритетов
- Предыдущий подрядчик «пропал», и клиент не понимает почему
- Проект уже начинали и остановили — без чёткого объяснения почему
Это не отказ от работы. Это переключение формата: discovery-фаза стоит X, по результатам я смогу дать нормальную оценку. Клиенты, которые готовы к этому — обычно хорошие клиенты.
Считать часы — это не ошибка. Это просто последний шаг, а не первый. Сначала — риск. Потом — цвет. Потом — часы.
Если на вашем проекте сейчас кто-то нервно считает часы, не спросив ни одного из девяти вопросов — стоит остановиться. Лучше задержаться на пресейле, чем объяснять клиенту, почему дедлайн сдвинулся.
Смежная история про конкретный риск, от которого я ушёл: как я закрываю риски, а не тикеты.