С конца 2025 года я активно использую ИИ в разработке. Осваиваю новый подход к работе, пробую разные инструменты и сейчас хочу сформулировать мысли о своем опыте.

Нейронки не для всех задач

Первая моя оценка — есть ряд задач, которые быстрее и проще выполнить вручную. Я представляю это как прямую, разделенную на три неравные части:

Нейронки генерируют случайный код

Мое примитивное понимание устройства нейронок основано на том, что нейросеть обучена на примерах кода. Каждый раз, когда нужно сгенерировать новый кусок, она просто ищет что-то похожее в своем «опыте». При этом нейронка не дает повторяемый результат. Это превращает ее в черный ящик, который по вашему запросу сгенерирует какой-то код. Если повезет, он будет работать.

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

Документация для копипасты

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

Например, у вас есть UI-компонент, и разработчик хочет использовать его на новой странице. Он найдет пример использования компонента и скопирует его. Но код живет, какие-то решения устаревают, какие-то признаются плохими практиками. Поэтому нужно иметь документацию с правильными примерами, чтобы разработчик мог просто скопировать и не тащить устаревший подход.

Нейронка ничем не отличается. Ей нужны примеры решения задач с подробными пояснениями, чтобы она могла их «копировать». И у меня есть подозрение, что наличие таких примеров позволяет использовать более простые и дешевые модели. Хочется попробовать запихнуть эти примеры в скиллы, чтобы нейронка «научилась» работать на их основе. Только снова появляется проблема с контекстом и его размером.

Нейронкам не лень

В разработке есть отличные концепции вроде TDD. Мы часто говорим про актуализацию документации. Эти концепции действительно полезные, они упрощают нам жизнь. Но есть проблема — программистам лень. Лень поддерживать документацию в актуальном состоянии, поэтому мы пытаемся придумать, как работать без нее. Даже комментарии к коду считаются плохой практикой из-за их устаревания. Нам лень писать тесты перед реализацией и тем самым продумывать контракты и сценарии использования заранее.

А нейронке не лень. Нейронка не будет ныть — она обновит документацию. Она напишет тесты на функционал до его реализации. Это позволяет выстраивать идеальный пайплайн разработки, который в обычной жизни, скорее всего, развалился бы. Но нейронки будут его соблюдать и поддерживать.

Артефакты

Я использую GitHub Speckit для разработки фич с нейронкой. Этот инструмент придерживается концепции spec driven development. То есть вы даете нейронке проблему, а она «раскручивает» это требование и получает use cases, requirements и план реализации. По пути она еще проводит исследования: как решить проблему, какие библиотеки использовать, какие аспекты остаются неизвестными. Все эти артефакты сохраняются в репозитории.

С одной стороны, мне нравится идея хранить артефакты аналитики — спецификации, архитектурные решения, ограничения — в репозитории. С другой стороны, мне не нравится, что они сгруппированы по требованиям. Получается, что мы ограничиваем действие спецификации рамками одной задачи, хотя на самом деле это не так. Многие артефакты продолжают жить и за пределами конкретного требования.

Хочется попробовать альтернативы Speckit — возможно, у них организация артефактов будет другой.

SWARM mode?

Стандартный процесс SDD с нейронками примерно такой: придумал проблему → отдал на аналитику → отдал на теханалитику → сгенерировал план реализации → разбил его на таски → отдал таски на реализацию → протестировал → готово. На каждом шаге нужно запустить агента, сформулировать ему команду, подождать, пока он что-то сделает, потом поревьювить, написать, что исправить, и снова ждать агента. Этап реализации еще скучнее: запустил агента на реализацию, подождал, поревьювил. Агент может сам организовать себе ревью и запуск линтеров, поэтому человек уже работает с более-менее нормальным кодом.

Чего мне тут не хватает:

Типы агентов

Продолжая идею обучения на примерах и скиллах, я пришел к тому, что нужно делать разные наборы агентов под максимально узкий круг задач. Не один агент «для любого кодинга», а отдельный агент для фронтенда с соответствующим набором скиллов. Отдельный агент для бэкенда. Отдельный — для ревью на соответствие спецификации. Отдельный — для ревью фронтенда. Отдельный — для ревью бэкенда.

Кажется, это поможет решить проблему с контекстом и обучением нейронки специфичным навыкам.

Вопросы вместо итогов