Перейти к содержанию
Публикация AiManual

Почему часть разработчиков не хочет отдавать код ИИ-агентам: программирование как ремесло и искусство

Почему часть разработчиков сопротивляется ИИ-агентам, даже когда те ускоряют генерацию кода? Разбираем границу между полезным делегированием, авторством, инжене

Коротко

Что будет в материале

  1. 01

    Код как творчество в программировании: почему результатом дело не исчерпывается

  2. 02

    ИИ в разработке: почему отношение разработчиков меняется, когда речь заходит о замене

  3. 03

    ИИ-агенты для разработки кода: задачи, где делегирование оправдано

  4. 04

    Использование ИИ в программировании: плюсы и минусы для разных задач

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

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

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

Код как творчество в программировании: почему результатом дело не исчерпывается

Рабочая программа решает задачу пользователя, но инженер оценивает её шире. Он смотрит на устройство модулей, границы ответственности, поведение при ошибках, стоимость будущих изменений и способность команды поддерживать систему через полгода.

Два взгляда на программирование: производственный процесс и инженерное ремесло

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

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

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

Почему рабочий код не всегда считается достаточным результатом

Код может запускаться и при этом создавать проблемы для команды. Он способен скрывать неочевидные зависимости, усложнять изменение соседнего модуля, плохо обрабатывать граничные случаи или требовать от следующего разработчика длительного расследования.

Поэтому приёмка результата включает несколько критериев:

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

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

Авторство, контроль и ответственность за решение

Авторство в программировании связано с контролем над решением. Разработчику важно ответить, почему выбрана конкретная архитектура, какой риск принят и что произойдёт при изменении нагрузки, формата данных или бизнес-правил.

Эта связь видна и в соседних IT-ролях. Ценность product manager связывают с решениями, которые он принимает самостоятельно, а не с формальным стажем или количеством подготовленных документов. Для программиста действует похожая логика: результат оценивают через качество суждений и ответственность за последствия.

Когда агент выдаёт готовый код без понятного для человека пути рассуждения, контроль ослабевает. Разработчик может принять решение, которое не способен объяснить коллегам или защитить во время инцидента. Для части профессионалов такой обмен неприемлем даже при условии, что конкретный фрагмент работает.

ИИ в разработке: почему отношение разработчиков меняется, когда речь заходит о замене

Фраза «ИИ помог подготовить вариант» оставляет человека автором решения и владельцем результата. Фраза «ИИ заменит автора» меняет смысл технологии: инструмент превращается в аргумент для сокращения роли специалиста. Реакция на эти формулировки часто оказывается сильнее реакции на саму генерацию кода.

Кейс Saber Interactive: когда заявление о замене автора становится публичным конфликтом

В игровой индустрии это проявилось в истории Saber Interactive. CEO компании Matthew Karch сказал, что был бы готов заменить автора ИИ. После публичной критики он извинился. Ситуация получила известность как AI writer controversy, то есть конфликт вокруг замены автора генеративной системой.

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

Инструмент в руках специалиста и замена специалиста - не одно и то же

В режиме инструмента человек ставит задачу, задаёт ограничения, выбирает вариант и проверяет результат. Агент ускоряет отдельный участок процесса, а ответственность остаётся у разработчика или команды.

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

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

Почему одного обещания делать лучший продукт недостаточно

После конфликта CCO Saber Interactive Tim Willits подтвердил, что компания не меняла коммуникационную стратегию. Студия намерена делать лучшие игры, на которые способна, и давать людям оценивать результат.

Такой ответ закрывает вопрос о качестве продукта, но оставляет открытым вопрос о человеческом труде. Для автора важен путь создания: участие в замысле, выбор выразительных средств, обсуждение решений и возможность видеть собственный вклад. Хороший финальный продукт не отменяет эти ценности.

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

ИИ-агенты для разработки кода: задачи, где делегирование оправдано

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

Рутинные изменения, шаблонный код и подготовка тестов

Самая понятная зона применения ИИ связана с повторяющимися операциями. Агент может подготовить однотипные обработчики, адаптировать вызовы API в нескольких местах, перенести конструкцию на новый интерфейс или создать черновики unit-тестов.

Подобные задачи имеют относительно низкий риск, если изменение ограничено и легко откатывается. Ревью всё равно требуется. Нужно сверить стиль проекта, проверить граничные случаи, убедиться в корректности импортов и запустить тесты. Шаблонность операции не гарантирует правильность результата.

Документация тоже подходит для делегирования. Агент способен составить описание функции, таблицу параметров или черновик changelog. Автор должен сверить текст с фактическим поведением кода, иначе документация начнёт вводить команду в заблуждение.

Прототипирование и перебор вариантов

На раннем этапе проекта ценность часто создаёт скорость перебора. ИИ может предложить несколько вариантов интерфейса, структуры API, схемы хранения или алгоритма обработки данных. Разработчик получает материал для сравнения и быстрее видит слабые места каждой идеи.

У такого подхода есть ограничение: агент не выбирает критерии сам. Команда должна заранее определить, что важнее в конкретной задаче: простота поддержки, задержка ответа, расход памяти, совместимость, безопасность или скорость выхода прототипа.

Черновой вариант не следует автоматически превращать в производственный код. Между ними нужны проверка требований, нагрузочное моделирование при необходимости, анализ зависимостей и решение о том, какие части стоит переписать вручную.

Отладка кода с помощью ИИ: ускорение поиска, а не передача ответственности

ИИ полезен при первичном разборе ошибки. Ему можно передать сообщение исключения, небольшой фрагмент лога и участок кода, попросив сформировать несколько гипотез. Это сокращает время на поиск подозрительных мест, особенно когда ошибка хорошо описана.

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

Полезный запрос к агенту при отладке просит перечислить возможные причины и способы проверки. Такой формат сохраняет аналитическую работу у человека и снижает риск механически принять первое правдоподобное объяснение.

Использование ИИ в программировании: плюсы и минусы для разных задач

Что ИИ способен ускорить

ИИ-агент сокращает время на операции, где результат имеет ясный критерий проверки. К ним относятся:

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

Польза растёт, когда результат легко сравнить с требованиями. Если человек способен быстро увидеть ошибку и откатить изменение, агент получает ограниченную, но полезную автономность.

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

Где цена проверки может съесть выигрыш во времени

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

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

Именно поэтому большое количество сгенерированного кода не гарантирует ускорение проекта. В статье о code-агентах этот эффект описан как когнитивная ловушка: строки появляются быстро, но время смещается в ревью, отладку и поддержку. Разбор когнитивной ловушки code-агентов показывает, почему скорость набора нельзя использовать как единственный KPI.

Качество, безопасность и поддерживаемость как отдельные критерии

Оценка ИИ-кода начинается с вопроса «работает ли он», но заканчивается гораздо позже. Команда проверяет поведение на граничных данных, обработку отказов, права доступа, журналирование, совместимость с архитектурой и стоимость будущего изменения.

Безопасность требует отдельного внимания, когда агент получает доступ к внутреннему репозиторию, логам или конфигурации. В запрос могут случайно попасть секреты, персональные данные и фрагменты закрытой бизнес-логики. Ограничение контекста снижает риск, но не заменяет правила работы с данными.

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

Тип задачиПольза ИИОсновной рискКонтроль
Шаблонные измененияВысокая скорость подготовкиПропущенный граничный случайDiff и автоматические тесты
ПрототипБыстрый перебор вариантовСлабая основа для production-кодаВыбор критериев и ручная доработка
ОтладкаСписок гипотез и подозрительных участковЛожная первопричинаВоспроизводимый сценарий и трассировка
Архитектурное изменениеПодготовка альтернативСкрытые системные последствияРевью владельца системы и план отката
Критичная логикаЧерновик отдельных фрагментовОшибка с высокой стоимостьюГлубокое ревью и специальные проверки

Как разработчики используют ИИ-инструменты, не отдавая им контроль

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

Сначала определить, что именно делегируется

Удобно разделить запросы на несколько уровней:

  1. Объяснение. Агент читает фрагмент и описывает его поведение. Изменений в репозитории нет.
  2. Поиск. Агент находит похожие места, зависимости, тесты или потенциальные точки ошибки.
  3. Генерация черновика. Инструмент предлагает код, тест или документацию, которые человек принимает после проверки.
  4. Изменение отдельных файлов. Агент работает в заданном диапазоне, а команда проверяет diff.
  5. Выполнение действий. Инструмент запускает команды, меняет конфигурацию или создаёт pull request. Для такого режима нужны подтверждения, журнал и ограниченные права.

Переход между уровнями должен зависеть от задачи, а не от удобства интерфейса. Для первого знакомства с незнакомой кодовой базой полезнее начать с объяснения и поиска. Запрос «сделай всё» лишает команду промежуточных точек контроля.

Проверка изменений: diff, тесты и ревью человеком

Минимальный контур проверки выглядит так:

  • сформулировать ожидаемое поведение до генерации;
  • попросить агента перечислить изменяемые файлы и план действий;
  • прочитать diff, включая побочные изменения и удалённые строки;
  • запустить существующие тесты;
  • добавить тесты для нового поведения и ошибок;
  • проверить совместимость с архитектурой и публичными интерфейсами;
  • зафиксировать, кто принял решение и какие ограничения были учтены.

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

Когда уместны локальные LLM, RAG и MCP

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

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

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

Практический выбор между облачной моделью, локальной LLM, RAG и MCP зависит от чувствительности репозитория, доступного железа, качества нужного контекста и допустимой автономности. Материалы о корпоративных ИИ-агентах подробно разбирают, какие данные и инструменты нужны агенту внутри компании и с каких процессов разумно начинать. Разбор корпоративных ИИ-агентов полезен при проектировании такого контура.

Границы автономности для ИИ-агента

Агенту не следует выдавать постоянный доступ к секретам, production-окружению и критическим веткам. Рабочее окружение можно ограничить отдельной веткой, временными токенами и разрешёнными командами.

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

Журналирование сохраняет запросы, ответы, выполненные команды и итоговые изменения. Это помогает понять, почему появилось решение, восстановить последовательность действий и улучшить правила для следующих задач.

Влияние ИИ на работу программиста: что меняется, а что остается человеческим

Автоматизация отдельных операций не равна автоматизации инженерного решения

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

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

Почему самостоятельность решений сохраняет ценность

Цепочка ответственности в разработке включает несколько вопросов:

  • кто выбрал архитектуру и объяснил её ограничения;
  • кто оценил риск отказа и утечки данных;
  • кто проверил исправление на реальном сценарии;
  • кто определил критерии готовности;
  • кто будет разбирать последствия после релиза.

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

Этот сдвиг не означает исчезновение профессии. Он повышает требования к инженерному мышлению. В отдельном разборе навыков разработчика выделены четыре опоры: инженерное мышление, ответственность, проверка кода и креативность. Материал о востребованных навыках разработчика связывает их с проектированием надёжных систем, а не с объёмом вручную набранного кода.

Программирование как ремесло в эпоху генеративных инструментов

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

Автор может начать с описания поведения, попросить агента предложить черновик, затем переписать критические части, добавить тесты и убрать лишние абстракции. В этом процессе человек создаёт критерии, принимает решения и доводит систему до надёжного состояния.

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

Open source и авторство: почему код может быть ценностью сам по себе

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

Nau Engine как пример ценности открытого исходного кода

Nau Engine описывают как универсальный игровой движок с открытым исходным кодом. Его можно бесплатно использовать в образовательных и коммерческих задачах, а исходники хранятся в Git-репозитории. Дальнейшее развитие проекта связывают с сообществом; в его контексте упоминаются VK и ИТМО.

Открытая модель даёт пользователям возможность изучать код, предлагать изменения и видеть, как проект развивается. Конечный продукт здесь соседствует с прозрачностью процесса и правом сообщества влиять на результат.

Прозрачность процесса и непрозрачная делегация - разные вещи

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

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

Это аналитическая связь, а не утверждение о мотивации участников Nau Engine. Проект служит смежной иллюстрацией: для сообщества ценность кода может включать право изучать и развивать его, а не сводиться к запуску готового бинарного результата.

ИИ как инструмент для разработчика: где проходит рабочая граница

Три вопроса перед передачей задачи агенту

Перед запуском ИИ-агента разработчику стоит ответить на три вопроса:

  1. Можно ли легко откатить изменение? Если нет, нужны резервная копия, отдельная ветка и предварительный план возврата.
  2. Сможет ли человек самостоятельно проверить результат? Если команда не понимает предложенный код, его нельзя принимать автоматически.
  3. Кто отвечает за ошибку? У агента нет бизнес-ответственности. Её сохраняет конкретный специалист или команда.

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

Когда сопротивление ИИ - это не консерватизм

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

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

Руководителю команды полезно обсуждать не абстрактное «за» или «против» ИИ, а рабочие правила. Какие задачи делегируются? Какие данные разрешены? Где требуется второй ревьюер? Какие действия агенту запрещены? Как команда поймёт, что инструмент приносит пользу?

Короткий вывод для разработчика и руководителя команды

Разработчику стоит использовать ИИ там, где он ускоряет проверяемую работу и сохраняет понимание решения. Генерация рутинного кода, черновики тестов, поиск похожих участков и подготовка гипотез для отладки подходят для такого режима.

Руководителю нужно оценивать скорость генерации вместе с качеством ревью, поддерживаемостью, безопасностью, мотивацией команды и ответственностью за результат. Агент, который создаёт много кода, но увеличивает объём расследований, может ухудшить процесс.

Практическая матрица выглядит так:

Риск задачиОбратимостьСтоимость ошибкиРекомендуемая автономность
НизкийИзменение легко отменитьЛокальная ошибкаГенерация и ограниченное редактирование с ревью
СреднийОткат требует проверки зависимостейСбой функции или части сервисаПлан агента, ручное подтверждение, тесты
ВысокийОткат сложен или затрагивает данныеПотеря данных, уязвимость или простойАгент только предлагает варианты, решение принимает человек

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

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

Подписаться на канал