3.0Kпросмотров
50.8%от подписчиков
11 марта 2026 г.
Score: 3.3K
🐞 Вайбкодинг атакует или как мы потеряли 50к рублей в YeaHub Вполне себе реальная история нашей ошибки в YeaHub. Есть у нас senior Java developer, спец своего дела, опыт 8 лет, работает в Биг Тех. У нас он как один из руководителей по бекенду и занимается в основном инфраструктурой. Но есть одно «но» — проект у нас на Node.js. Учить Node, конечно, зачем? Если умеешь писать код, можно чисто вайбкодить. Но Java и JavaScript, кроме первых четырёх букв, сильно отличаются: асинхронность, подходы, методы, обработка ошибок. И вот что произошло. Мы улучшали систему оплаты и подписок, всё проверили вроде бы гуд. Но потом начали замечать, что люди не продлевают подписку. Сначала это было странно, но терпимо. Через месяц стало очень подозрительно, и мы начали разбираться. Оказалось, что мы формировали заказ, но не тригерили списания денег у пользователя. Визуально выглядело так: «Заказ сформирован, но не оплачен». В чём проблема? Мы каждый день кроном проходились по всем, у кого подписка кончилась, и формировали заказ. Вторым циклом должны были пройтись по каждому заказу и инициировать списание. И тут случилась ошибка. Наш джавист не учёл особенности асинхронности и обработки ошибок в JavaScript: один заказ мог быть «битым», и тогда весь цикл списания останавливался. Использовался forEach с async/await и обработкой ошибок, но в Node.js такой подход не ждёт асинхронные операции корректно. В итоге каждый день мы формировали заказы, пытались списать деньги, но застревали на одном висяке, и остальные оплаты просто игнорировались. В Java такие сценарии работают иначе, и привычные подходы к потокам не переносились напрямую. Этот код полностью писала нейронка, потому что бэкендер не знал нюансов Node.js и не привык к его асинхронности. В итоге больше 100 пользователей пользовались сервисом месяц бесплатно, а мы потеряли 50к рублей. Вывод: даже опытный Java-разработчик может наткнуться на особенности другого языка, особенно в асинхронных сценариях, а нейронка может генерировать код, который кажется рабочим, но ведёт себя иначе на практике. А у вас были интересные кейсы? 🔍