Аналитик, не умеющий профессионально писать продакшн-код, выкатил в прод нетривиальное веб-приложение на Laravel. Каждую строчку кода сгенерировала нейросеть Claude Opus через агент Claude Code. Автор выступил архитектором, продактом и QA, а второй участник — дизайнер веб-интерфейсов.

Приложение — блогплатформа «Думайте» со сложной архитектурой: PHP 8.4, Laravel, Livewire, очереди Horizon, WebSocket Reverb, MySQL 8, Meilisearch для поиска, Redis, S3 для медиа, а также OAuth, дайджесты, антифрод и админка на Filament. Фронтенд использует Livewire, Alpine.js, Tailwind и кастомный редактор на TipTap. Тесты — более 1300 на Pest.

ПроблемаПодробностиУрок
Разница dev и prodРазработка на SQLite, прод на MySQL — разные функции и группировки, 500-е ошибкиЛокальная среда должна повторять боевую
Миграция сломала контрактИзменение формата поля без аудита всех потребителей привело к 500 на страницах статейЛюбое изменение формата данных — полный аудит потребителей
Мобильная клавиатураПанель ввода ведёт себя по-разному в Chrome, Яндекс, SafariПроверка на реальных устройствах; автотесты не ловят

Автор формулировал фичи аналитически: сущности, инварианты, граничные случаи. Агент предлагал архитектуру и схему БД, писал код. Человек задавал вопросы, гонял тесты, искал логические дыры. Железное правило: ни одна фича без покрытия.

Ключевое правило: любая фича должна быть покрыта тестами (свыше 1300 автотестов на Pest)

Грабли начались с различия сред: разработка велась на SQLite, а прод — на MySQL. Из-за разной строгости SQL (only_full_group_by, поведение функций) падали 500-е ошибки. Вывод: локальная среда должна повторять боевую. Перешли на MySQL 8 — класс багов исчез. ИИ честно писал кросс-совместимый SQL, но риск нужно было предвидеть человеку.

Второе падение — миграция: изменили формат поля с простых строк на список объектов. Обновили не всех потребителей, и parse_url() на некорректных данных вызвал 500 на всех страницах статей. Теперь любые изменения контракта проходят с полным аудитом потребителей.

Мобильная клавиатура — третий ад: панель ввода комментария должна держаться над экранной клавиатурой. Chrome, Яндекс, Safari вели себя по-разному. Баги ловились только на живых устройствах — ни автотесты, ни эмуляторы не помогали.

Итог: инженерия не исчезла — из неё убрали набор кода руками. Проектирование, компромиссы, ловля прод-багов, дисциплина релизов — всё осталось на человеке. ИИ — сеньор без контекста, техлид — человек.