Мы живем в эпоху, когда обещания искусственного интеллекта звучат как манифест новой эры: «Код будет писаться сам», «Баги исчезнут», «Программирование станет доступным для каждого». Однако, чем больше времени я провожу, работая непосредственно с кодовыми агентами (coding agents), тем сильнее убеждаюсь в обратном. Они не упрощают инженерный труд — они делают его значительно сложнее. Это не призыв отказаться от технологий, а скорее предупреждение о том, что цена за автоматизацию высока и часто скрыта от глаз новичков.
Безусловно, с помощью этих инструментов можно совершать невероятные вещи. Мы видим прототипы, которые создаются за минуты, и целые модули, которые генерируются по описанию. Но чтобы раскрыть их полный потенциал, требуется дисциплина и глубина знаний, которые раньше были не нужны даже старшим разработчикам. Мы переходим от роли «писателей кода» к роли «архитекторов поведения ИИ», и этот переход требует переосмысления всей нашей работы.
01Иллюзия простоты и ловушка абстракции
Главная проблема современных AI-агентов заключается в том, что они создают иллюзию простоты. Когда вы вводите запрос в интерфейс, вы ожидаете, что машина выполнит работу. Но реальность такова, что агенты часто не понимают контекст так же глубоко, как человек. Они оперируют паттернами, а не смыслами. Это приводит к ситуации, когда агент генерирует код, который выглядит рабочим, но содержит тонкие ошибки, невидимые на первый взгляд.
Раньше, чтобы написать функцию, программист должен был четко понимать алгоритм, структуру данных и граничные условия. Теперь же, чтобы получить тот же результат от агента, вы должны уметь сформулировать задачу так, чтобы исключить двусмысленность. Это требует не просто знания языка программирования, но и понимания того, как модель «думает», какие у нее есть ограничения контекста и как она интерпретирует неявные требования. Эта новая форма когнитивной нагрузки — нагрузка на формулировку и верификацию — делает процесс разработки более напряженным.
02Дисциплина в эпоху хаоса
Работа с агентами требует исключительной дисциплины. В традиционной разработке вы контролируете каждый шаг: от создания файла до написания строки кода. В работе с ИИ вы делегируете выполнение, но сохраняете за собой ответственность за результат. Это создает парадокс: вы тратите меньше времени на написание кода, но больше времени на управление процессом его создания.
Дисциплина здесь проявляется в нескольких аспектах. Во-первых, это управление контекстом. Агенты часто теряют нить повествования, если проект становится слишком большим. Вам нужно постоянно «подкармливать» модель контекстом, очищать историю диалога, переформулировать задачи. Во-вторых, это тестирование. Поскольку агент может генерировать код с ошибками, вам необходимо писать более обширные тесты, чем раньше, чтобы убедиться, что поведение системы соответствует ожиданиям. В-третьих, это документация. Если вы не задокументируете, почему вы просили агента сделать именно так, а не иначе, через месяц вы сами не поймете логику своего проекта.
Эта дисциплина не приходит сама собой. Она требует перестройки рабочих привычек. Многие разработчики, привыкшие к линейному процессу «написал-проверил», сталкиваются с фрустрацией, когда агенты начинают вести себя непредсказуемо. Они могут переписать часть кода, которая работала, или добавить лишние зависимости, не спросив разрешения. Умение работать в таких условиях — это новый навык, который становится критически важным.

03Глубокое знание как необходимость
Чем сложнее становится работа с агентами, тем более глубокими должны быть ваши знания. Парадоксально, но использование ИИ для упрощения кодинга требует от вас знания кодинга на уровне, превышающем средний. Почему? Потому что вы должны уметь обнаруживать ошибки, которые агент допустил. Если вы не понимаете, как работает система, вы не сможете отличить правильный код от правдоподобного, но ошибочного.
Например, агент может использовать устаревшую библиотеку или неэффективный алгоритм, потому что он обучался на данных, где это было нормой. Если вы не знаете о существовании более современных подходов, вы не заметите этой ошибки. Или агент может создать код, который работает, но не масштабируется. Без понимания принципов проектирования систем вы не сможете предвидеть эти проблемы.
Таким образом, ИИ не заменяет знания, а делает их более важными. Он становится зеркалом, которое отражает ваш уровень понимания. Если вы поверхностно знаете предметную область, вы получите поверхностный и потенциально опасный код. Если вы глубоко понимаете архитектуру, вы сможете направить агента на создание качественных решений. Это требует постоянного обучения и углубления экспертизы, что противоречит популярному нарративу о том, что ИИ делает программирование «легким».
04Проблема верификации и отладки
Одной из самых больших проблем в работе с кодовыми агентами является верификация. Когда вы пишете код сами, вы знаете, почему он написан именно так. Вы помните каждое решение, каждую альтернативу, которую вы отбросили. Когда код генерирует агент, эта история теряется. Вы видите только результат. Это делает отладку крайне сложной задачей.
Представьте ситуацию: агент написал функцию, которая падает в production. Вы начинаете искать причину. Но вы не знаете, какие именно инструкции вы дали агенту, чтобы он написал этот код. Возможно, вы забыли упомянуть о необходимости обработки исключений. Возможно, агент интерпретировал ваше требование «сделать быстро» как «игнорировать проверки». Без полного понимания процесса генерации кода вы тратите часы на то, чтобы реконструировать намерения агента.
Кроме того, агенты часто вносят изменения в несколько файлов одновременно. Это усложняет отслеживание изменений в системе контроля версий. Вы можете увидеть, что файл изменился, но не понять, почему. Это требует новых инструментов и подходов к аудиту кода, которые еще не стали стандартом в индустрии.

05Этические и архитектурные последствия
Использование кодовых агентов также поднимает серьезные этические и архитектурные вопросы. С одной стороны, они могут демократизировать разработку, позволяя людям без глубоких технических знаний создавать приложения. С другой стороны, они могут привести к созданию некачественного, небезопасного кода, который будет трудно поддерживать. Если каждый разработчик использует свои собственные промпты и настройки, код в проекте станет гомогенным по стилю, но гетерогенным по качеству.
Архитектурно это означает, что нам нужно пересмотреть принципы проектирования систем. Системы, созданные с помощью ИИ, могут быть более хрупкими, если они не были спроектированы с учетом возможности ошибок агента. Нам нужны более модульные, изолированные компоненты, которые легче проверять и заменять. Это требует дополнительных усилий на этапе проектирования, что снова возвращает нас к идее о том, что работа становится сложнее.
06Будущее инженерии: партнерство, а не замена
В конечном счете, будущее разработки ПО лежит не в замене программистов ИИ, а в создании эффективного партнерства. Агенты — это мощные инструменты, но они требуют умелого обращения. Как и любой другой инструмент, от молотка до компилятора, они усиливают способности пользователя, но не заменяют его экспертизу.
Разработчики, которые смогут освоить эту новую дисциплину, станут незаменимыми. Они смогут использовать ИИ для ускорения рутинных задач, освобождая время для творческих и архитектурных решений. Но для этого им придется инвестировать в свое обучение, углублять знания и развивать навыки критического мышления. Это путь, который требует усилий, но он ведет к более качественной и устойчивой инженерии.
07Что это значит на практике
Для практикующего разработчика это означает несколько конкретных шагов. Во-первых, пересмотрите свой процесс работы. Не позволяйте ИИ писать код в вакууме. Включайте его в цикл разработки как одного из участников команды, требующего ревью. Во-вторых, инвестируйте в обучение. Изучайте не только синтаксис языков, но и принципы работы больших языковых моделей, их ограничения и типичные ошибки. В-третьих, развивайте навыки тестирования. Пишите тесты, которые проверяют не только функциональность, но и безопасность, производительность и масштабируемость кода, сгенерированного ИИ. В-четвертых, документировать. Записывайте свои промпты, решения и обоснования. Это создаст базу знаний, которая поможет вам и вашей команде в будущем.
В конечном итоге, работа с кодовыми агентами — это не про то, чтобы перестать думать. Это про то, чтобы думать иначе. Мы переходим от микроменеджмента каждой строки кода к макроменеджменту интеллектуальных систем. Это сложнее, но и более масштабируемо. И те, кто примет эту сложность, получат огромное преимущество в новой реальности разработки ПО.
Источник: Simon Willison ↗
