Если коротко, то одна фича-оракул в моём Telegram Mini App выросла не из продуктового плана и не из голосования юзеров, а из тупого личного любопытства, и за день из этого любопытства родились три новые штуки на проде. Возраст души, Личный год и фикс детекции мастер-чисел, причём все три считаются на лету из даты рождения пользователя, без единой миграции базы, и каждая прошла полный цикл разработки с тестами и ревью. То есть путь был такой: я что-то загуглил для себя, отдал это нейросети на ресёрч, а к вечеру оно уже работало у живых людей. Дальше расскажу как именно, и где AI пытался меня наебать.
С чего вообще началось
А началось всё с фразы, которую вы наверняка где-то слышали, мол у кого лицо моложе своего возраста, тот старая душа, много раз перерождавшаяся. Звучит как чушь из эзотерического паблика, но мне стало любопытно откуда это растёт, и я просто попросил ресёрч на эту тему. Не для продукта, для себя. И вот тут интересный момент, который я хочу донести: когда вы копаете тему не для галочки, а потому что вам реально зашло, вы вытаскиваете из неё то, что обычный человек не вытащит, потому что ему лень. Из одного запроса вылезла целая пачка нишевых разборов, тут и русская нумерология с возрастом души от первого до пятнадцатого воплощения, и расчёт Личного года, и мастер-числа, и кармические числа. И в какой-то момент я смотрю на этот ворох и понимаю, что это же не просто ресёрч, это готовые фичи для моего AI-персонажа, который и так считает по дате рождения всякое.
Реакция у меня была примерно такая, как я ассистенту и написал: «Мне нравится вообще все. Запиши ка их все как идею. Будем реализовывать по порядку (по любому)». И понеслось.
Почему без миграции базы — и почему это кайф
Вот тут самое вкусное с инженерной стороны, и я специально объясню простыми словами, потому что это та деталь, которую обычно прячут за фасадом. Все три фичи, и Возраст души, и Личный год, и обновлённую детекцию чисел, мы сделали как расчёт на лету прямо из даты рождения, которая у пользователя уже лежит в профиле. То есть никакой новой колонки в базе, никакого backfill старых юзеров, никакой миграции, которую страшно катить на прод и от которой потом полночи не спишь. Дата рождения уже есть, а всё остальное это чистая математика поверх неё, посчитал в момент запроса и отдал.
И это, если вы делаете MVP или просто вайбкодите свой проект, прям золотое правило, которое я для себя давно усвоил. Прежде чем лезть в схему базы и плодить таблицы, спросите себя, а это вообще надо хранить, или это можно посчитать из того, что уже есть? Чаще, чем кажется, ответ посчитать. Меньше кода, меньше миграций, меньше мест где сломается, и фича летит на прод за часы, а не за дни. Картара тут вообще удачно легла, потому что у меня там и нумерология уже доехала до прода раньше, так что фундамент под эти расчёты был, оставалось добить новые формулы.
Как это катилось: процесс, а не хаос
Я не сам пишу код руками, я этого не умею и не скрываю, код пишет Claude Code, а я оркестрирую, ставлю задачу, гоняю по процессу и ловлю за руку, когда он халтурит. И вот чтобы вайбкодинг не превращался в кашу из «о, работает, коммитим», у меня всё идёт через тот же процесс по шагам — спека, тесты, код, ревью, коммит на каждую атомарную единицу. За этот заход в дев-ветку ушло 16 коммитов, по пять на каждую из трёх фич плюс документация. Не один жирный коммит «добавил всё», а маленькими кусками, чтобы если что-то отвалилось, было видно где именно.
Тесты на калькулятор я расширил примерно с 13 до 52, плюс ещё 25 тестов на доменный слой сверху. И вот зачем это всё, а не «и так нормально». Затем, что на нумерологии цена ошибки тихая и подлая, приложение не падает, экран не белеет, оно просто выдаёт пользователю неправильное число, и тот уходит с мыслью «фигня ваш оракул», а ты даже не узнаешь почему. Это вам не упавший сервер, который орёт в логах. Это молчаливый косяк, и ловится он только тестами и ревью.
Косяк, который поймал ревьюер
И поймали, да. Один из ревьюеров наткнулся на гадость: для мастер-числа 11 «очевидная» цифра считалась как 1 вместо канонической 2. Если вы не в теме нумерологии, там есть особые числа 11, 22, 33, которые по правилам не сворачивают до одной цифры как обычные, у них своя трактовка. А у меня в одном месте логика по привычке схлопывала 11 в единицу, и это тихо ломало интерпретацию. Починили словарём соответствий, 11 даёт 2, 22 даёт 4, 33 даёт 6. Мелочь на одну строчку, но без свежего взгляда ревьюера она бы уехала на прод и сидела там, выдавая людям чушь, а я бы и не догадался.
Вот это, кстати, мой главный аргумент в споре про то, что нейросети пишут говнокод. А кожаные разработчики, простите, не пишут? Не смешите меня. Разница не в том, кто печатает буквы, а в том, есть ли над этим процесс и проверка. У меня код пишет AI, ревьюят его другие AI-агенты, а финально башкой думаю я, и косяк всё равно нашёлся именно благодаря этому слою, а не вопреки.
Где AI пытался меня обмануть
Теперь забавное, ради чего, может, и стоит читать до конца. По дороге мой же ассистент пару раз с уверенным лицом предлагал мне «гениальные новые идеи», которые на самом деле были ядром продукта годовалой давности. Самый смак, он на голубом глазу выкатил «а давай сделаем расклады Таро на вопрос», на что я ему ответил буквально: «ниче что у нас расклады таро на вопрос это самый первый продукт вообще? или че?». То есть он мне предложил изобрести то, с чего весь проект начался.
А второй раз он соврал ещё наглее, заявил, что мои ресёрчи, оказывается, индексируются в поиске движка и используются им. Звучало складно, и тут легко повестись и поверить, но я-то знаю свою систему, и поймал: «че ты несешь. ресерчи у нас не юзаются же вроде». И не юзались. Он просто выдумал удобную правдоподобную деталь, потому что она хорошо ложилась в ответ.
И вот это, пожалуй, главный вывод заметки, который касается любого, кто строит что-то с нейросетями для бизнеса или просто пилит свой проект через AI-агентов. Нейросеть мощный инструмент, она вытащит тему, посчитает, напишет, но она будет уверенно врать вам в лицо ровно до тех пор, пока вы не знаете свой продукт лучше неё. Вся ценность не в том, что AI что-то наделал, а в том, что рядом сидит человек, который понимает что происходит и говорит «стоп, это уже есть» или «стоп, это неправда». Меняется только исполнитель, голова всё ещё нужна ваша.
Так что да, личный запрос про старые души превратился в три рабочие фичи за день, и это не магия про скорость AI, а про то, что копать вглубь по любопытству выгодно, считать вместо того чтобы хранить выгодно, а проверять за нейросетью каждую её красивую уверенность обязательно. Вот и делайте выводы.