Когда продукт «готов»? Или мы обречены на вечный допил?
Привет, Хабр! И тебе, случайный читатель, который открыл эту статью в перерыве между двадцатой правкой того, что ты ещё месяц назад гордо назвал «финальной версией».
Сегодня без кода, без бенчмарков и без нытья про то или иное решение. Сегодня — про философию, от которой у меня иногда дёргается глаз: в какой момент продукт можно считать законченным?
На самом деле задался этим вопросом несколько недель назад на мероприятии из прошлой моей статьи. Смотря на продукты разработанные техно-гигантом Яндекс, не нарочно задаешься вопросом: «Этому в принципе небольшому сервису (без нейминга сами догадайтесь) уже почти 20 лет, но всё равно 10-ки, а то и 100-ни разработчиков работают над его улучшением каждый день, Когда можно сказать, что вот теперь идеально?«. Да это чистой воды философия, но мысль как по мне интересная…
Спойлер для ленивых: у меня нет ответа. Но у меня есть подозрение, что «готового» продукта не существует в природе, а есть только продукт, который временно перестали трогать. И я хочу, чтобы вы в комментариях доказали мне обратное. Или согласились. Или подрались — тоже вариант.
Глава 0. Иллюзия финишной черты
Когда ты начинаешь делать что-то своё: пет-проект, скрипт, сервис — в голове всегда есть картинка «вот доделаю ЭТО, и всё, релиз«. Такая красивая финишная ленточка.
Проблема в том, что ленточка убегает. Ты добегаешь до неё — а она уже на десять метров дальше. Доделал парсер — «а давай ещё выгрузку в Excel». Сделал выгрузку — «а давай график». Сделал график — «а чё он не по регионам?».

И вот ты уже полгода полируешь то, чем должен был пользоваться, а не строить.
Знакомо? Мне — да.
У меня был скрипт, который я писал «на вечер», а потом дорабатывал так долго, что задача, ради которой он создавался, успела стать неактуальной. Классика: продукт пережил свою собственную цель. Был ещё продукт в котором просто требовалось обработка банковских выписок, сдали заказчику, Работает! Спасибо! Но мой глаз продолжал дёргаться от быстро действия данного скрипта, по итогу оптимизировал. потом оптимизировал оптимизированное, потом оптимизировал оптимизированное которое оптимизировано. И так ещё несколько недель))) Хотя и так всех всё устраивало… Но многие поймут, как перфекционизм может съедать изнутри, что даже спать не можешь.
…Кстати с 30+- минутной обработки оптимизировал до 5 минут…Хотя заказчик был счастлив и 30…
Глава 1. «Ещё одна маленькая кнопочка»
Есть отдельный жанр вечного допила — когда допиливаешь не ты, а тебя допиливают.
Заказчик (или Марья Петровна, или ты сам через полгода) приходит с фразой-убийцей: «Тут надо совсем чуть-чуть, буквально одну кнопку«. И ты знаешь, чем это заканчивается. «Одна кнопка» тянет за собой новое поле, новое поле — новую проверку, проверка — новую таблицу, а таблица — переписывание половины логики.
Продукт был готов. Ровно до того момента, пока кто-то не решил, что он недостаточно готов.
И вот тут возникает вопрос, который меня и мучает: а был ли он вообще когда-нибудь готов, или «готовность» — это просто пауза между хотелками?
Глава 2. И тут я вспомнил про 1С (вскользь, честно)
Не могу пройти мимо. Мир 1С — это, наверное, самый чистый в природе пример вечного допила. Там продукт в принципе не задумывается как «законченный«. Типовая конфигурация живёт, обновляется, обрастает доработками, доработки конфликтуют с обновлениями, обновления рождают новые доработки — и так по кругу, вечно.
Изменение в законе — и где то тысячи разработчиков по всей россии переписывают «типовую» конфигурацию, мои соболезнования…
Это не баг индустрии, это её образ жизни: пока бизнес жив — база дорабатывается. Точка «готово» там не предусмотрена архитектурно.
Но давайте честно — это не только про 1С. Я это отметил, потому что там оно доведено до абсолюта. А так этим болеет любой живой продукт, который кому-то реально нужен. Мёртвые проекты не дорабатывают. Дорабатывают как раз те, что работают.
И вот отсюда неудобная мысль: вечный допил — это не признак плохого продукта, а признак живого, а для кого-то и любимого. Или всё-таки признак того, что мы не умеем вовремя сказать «стоп»?
Глава 3. Так где же выключатель?
Я вижу три лагеря, и все три меня по-своему бесят и восхищают одновременно.
Лагерь «Работает — не трогай». Продукт готов только, когда он решает задачу. Всё. Кривовато? Плевать. Задача закрыта — иди делай следующую. Технический долг? Проблема будущего тебя, а он вообще-то мужик крепкий, разберётся.
Лагерь «Доведи до ума». Готово — это когда не стыдно. Когда код чистый, тесты зелёные, архитектура не сыпется от одного взгляда. Проблема: до этого состояния продукт не доходит примерно никогда, потому что «идеально» — это движущаяся цель (см. Главу 0).
Лагерь «Отпусти и иди дальше». Идея простая: продукт готов, когда дальнейшие улучшения приносят меньше пользы, чем новый проект, на который ты потратишь то же время. То есть в какой-то момент полировать старое — это не развитие, а прокрастинация с чувством собственной важности.
Конечно-конечно, мы разработчики люди не свободные, решать, что и когда стоит допиливать не можем. Но иногда сами это делаем, иногда и сверхурочно. И здесь я могу сказать только то что это наверное от любви к продукту. Разработка это творчество, и нормально любить и хотеть сделать идеальным то что греет тебе душу… Но стараться всё же не возводить в абсолют.
У меня сейчас как раз такой проект который я очень люблю, но всё же стараюсь жить не думая о нём после работы (ключевое слово стараюсь). И выписывать все мои хотелки, что бы на следующий день взглянуть на них под другим углом.
И вот вопрос на засыпку: Как отличить «продукт ещё требует работы» от «я просто боюсь его отпустить и начать новое»?
Вердикт (который вердиктом не является)
Мне кажется, продукт готов не тогда, когда в нём нечего улучшать — таких не бывает. А тогда, когда следующая доработка уже не стоит потраченного на неё времени. Всё, что дальше — либо перфекционизм, либо страх чистого листа нового проекта.

Но это моя гипотеза дилетанта, который прыгает между технологиями и ни в одной не осел настолько, чтобы допиливать один продукт десять лет.
Поэтому вопрос к вам, и я реально хочу услышать ответы:
-
Был ли у вас проект, который вы смогли назвать законченным? Или все они живы и по сей день сосут из вас время?
-
Как вы понимаете, что пора остановиться и уйти к новому?
-
И честно: вечный допил — это болезнь индустрии или её нормальное здоровое состояние?
Пишите. Мне правда интересно, есть ли среди вас те, кто хоть раз в жизни сказал продукту «ты готов» — и не соврал.
Автор: MrSotnik

