Недавно я опубликовал в Google Play приложение 99.9% исходного кода которого написано AI. Это не просто "поделка на коленке за выходные": нативное (Kotlin), больше 50 экранов, сложная анимация, мультиязычность, расширяемое.

Этого удалось добиться через очень подробную спецификацию. Каждый экран был отрисован дизайнером, для каждой кнопки есть описание какие API дернуть. Стоило ли оно того? Давайте посмотрим на цифры.

С учетом всех итераций AI выплюнул мне 200 тысяч строк кода. Средняя производительность одного разработчика (меня) около 2-3 тысяч строк кода в день. 90% времени ушло на подготовку спецификаций, 10% на ревью и корректировки. Время генерации кода ничтожное. За 8 месяцев я ни разу не превысил бюджет в 20 долларов (базовая подписка Cursor).

Объем спецификаций (текстовые файлы на английском):

  • для фронта (Kotlin): 290кб, объем кода 1.7 мегабайта + 750кб верстки

  • для бэка (.Net): 100кб, объем кода 500кб (исключая конфиги и миграции)

Мало того, что спецификации в 5-10 раз короче исходников, они еще и более читаемые. Типичный код для кнопки:

# 1. Общие правила
При вызове всех API используй ключ сессии и генерируй GUID для transaction_id
Если ошибка 401, то открой окно логина

......

# 9. button_build
Кнопка активна если пользователь ввел текст в поле building_name
При нажатии на кнопку вызови метод Game.AddBuilding. Используй Helper.LoadingButton
Если нет ошибок, то открой окно GameBuilding

Все в одном месте и очень компактно, чего не скажешь о сгенерированном исходном коде. Такие файлы прекрасно поддаются обновлениям, AI находит все связанные куски исходников и корректно модифицирует их. Также спецификации мало зависят от платформы: получив рабочее нативное Android приложение я теперь могу использовать эти же "исходники" для генерации нативного iOS (как только разживусь Маком) и с небольшими правками для Web. Часть "исходного кода" я даже копировал между фронтом и бэком (валидация параметров).

На каждый экран и каждый метод API я держу отдельный файл спецификации. Макеты экранов от дизайнера закинул в папку для AI в виде скриншотов вместе с XML-файлами (экспорт из Figma). MCP не стал поднимать, это какой-то перебор на мой взгляд: в Figma 100 экранов в одном проекте, это сожрет не мало лишних токенов, а также требует расширенной лицензии самой Figma.

Ревью кода заняло сравнительно мало времени. Когда перед глазами спецификация, то в голове уже есть представление о результате и остается только сравнить исходники с ожиданиями. Вся модульная структура проекта жестко зафиксирована и код остается понятным даже спустя пол года разработки. Никакой деградации замечено не было, скорее наоборот: чем больше кода уже есть, тем точнее генерируется новый.

Что получалось плохо:

  • Я пробовал просить AI писать спецификации вместо меня, результаты были удручающие, пришлось все переписывать. Он плохо понимает бизнес-проблемы, выдумывает много лишнего.

  • Я также пробовал генерить большие куски без спецификаций. Любая нестандартная задача, которую я сам не понимаю как делать всегда проваливалась, например "Сделай проверку правописания сразу на двух языках, подчеркивай красным ошибки. Используй стандартные библиотеки Android". Токенов сгорело много, весь код пришлось удалить, не заработало.

  • Я пробовал портировать кусочек ffmpeg на .Net, нужен был все один кодек. Оно не справилось даже глядя на исходники ffmpeg, ушло в бесконечный цикл исправления ошибок.

Что получалось очень хорошо:

  • Кастомная клавиатура на 10 языков со сложной анимацией. Очень короткая спецификация, очень много кода и отличный результат. Были проблемы с конкурентной обработкой кнопок, но AI с моими подсказками нашел все спорные моменты и пофиксил их.

  • Скрипт на питоне который синхронизирует данные из Excel в MS SQL Server был сгенерирован за 5 минут по одному промпту. AI сам проанализировал структуру Excel и базы, еще и тестовых данных нагенерировал с переводами на 10 языков.

Для разработки спецификаций нужен Продакт и Архитектор, в идеале в одном лице. В противном случае добро пожаловать в "Рой агентов", "Скилы", MCP и прочие сжигатели денег.