В начале 2025 года исследователи из METR провели масштабное рандомизированное контролируемое исследование, целью которого было измерить влияние новейших AI-инструментов на производительность разработчиков с опытом работы над проектами с открытым исходным кодом. В ходе эксперимента разработчики выполняли разнообразные задачи с поддержкой ИИ и без неё. Неожиданный итог исследования показал, что использование AI приводило не к сокращению, а к увеличению времени выполнения задач в среднем на 19%. Среди участников исследования я также был, работая с проектом jsdom — одной из популярных реализаций движка веб-браузера на языке JavaScript. Проект jsdom является достаточно крупным и сложным — его кодовая база насчитывает более миллиона строк.
Основная задача проекта — эмуляция браузерной среды для проведения автоматизированного тестирования и веб-скрапинга. Администрированием jsdom занимаюсь в одиночку с 2012 года. Обычно основное время уделяется обработке пул-реквестов от сообщества, но для целей исследования мне предстояло сосредоточиться на самостоятельной работе с багфиксами, улучшениями тестового покрытия и решением задач из бэклога. Перед экспериментом я подготовил список из 19 задач, каждая из которых предполагала решение в пределах двух часов. Все они были разделены на группы с доступом к AI-инструментам и без, по рандомному принципу распределения.
Для каждого случая велись подробные отчёты, фиксировалась продолжительность работы и создавались pull-request'ы с результатами. Важным аспектом организации исследования были видеозаписи экрана, зафиксированные во время работы. Это обеспечивало максимальную концентрацию и минимизацию отвлечений, что снижало влияние внешних факторов на результаты замеров времени. Анализ данных проводился с помощью статистического лог-линейного моделирования, учитывающего предварительные оценки продолжительности задач и случайные шумы, что гарантировало корректность выводов и возможность установления доверительных интервалов. В моём личном опыте отметил значительные расхождения между оценками и фактическим временем выполнения задач как при использовании, так и без использования AI.
Например, один из процессов оптимизации занял у меня более четырёх часов при изначальной оценке в полчаса, что на первый взгляд казалось нестандартным отклонением. Однако подобные несоответствия встречались и в группе задач без AI, что говорит о влиянии множества факторов помимо самой технологии. Поэтому при оценке результатов эксперимента важно смотреть не на отдельные кейсы, а на совокупные данные, где статистика даёт надёжные сигналы. Отмечу, что до участия в эксперименте мой опыт работы с AI-инструментами был ограничен. В основном я пользовался простыми дополнениями к редакторам в виде автодополнения кода, а также веб-интерфейсами чат-ботов вроде ChatGPT и Claude для генерации новых участков кода.
Встреча с более продвинутыми режимами, такими как agent mode, проходила впервые, и, хотя обучение прошло достаточно успешно, всё же подозреваю, что другие факторы больше повлияли на итоговое замедление работы, нежели недостаток опыта с AI. Сам эксперимент проходил в период ранних версий современных AI-инструментов, таких как Claude Code и Cursor. На тот момент многие из этих технологий ещё находились в режиме предварительного доступа или имели ограниченную функциональность и производительность. Например, я неоднократно сталкивался с проблемами стабильности и грамотного приспособления AI к стилю существующего кода. Это выражалось в излишних комментариях, несоблюдении внутренних соглашений проекта и даже путанице с именами и структурой тестов.
В больших, зрелых кодовых базах такие мелочи существенно влияют на эффективность совместной работы и требуют постоянной корректировки и переподготовки AI. Особенно я удивился тому, насколько AI struggles с правильной реализацией веб-спецификаций на практике. Технические документы, формализованные в довольно сложном стиле, по идее должны были приносить быструю пользу при правильном автоматическом прочтении и трансляции в код. Однако на деле модели склонны опираться на устаревшие или ошибочные представления из обучающей выборки, что приводит к появлению неправдоподобных структур и констант, которых в спецификациях нет. В одном случае я вёл спор с моделью о несуществующем CSS-свойстве, что ярко иллюстрирует проблемы неполноты и неточности AI-знаний.
Что касается личных ощущений, работа с AI напоминала скорее интерактивную игру, чем просто кодинг. Особенно это касалось монотонных, повторяющихся задач вроде создания тестов. Построение правильных подсказок и взаимодействие с AI приносили удовольствие и вносили элемент вариативности в работу. Тем не менее, суммарно AI не ускорял процесс, а скорее отвлекал из-за необходимости множества проверок, вмешательств и исправлений, связанных с недочётами моделей и их склонностью к ошибкам. Одной из основных причин относительно низкой эффективности является ограниченность возможностей технологий AI по обработке сложных проектных структур.
Например, инструменты плохо справлялись с переходом между репозиториями, управляли файлами и каталогами не вполне разумно, регулярно залипали на простых задачах вроде исправления статических ошибок. Эти трудности приводили к необходимости постоянного «руководства» AI и мешали сосредоточиться на создании качественного кода. Несмотря на это, я убеждён, что многие проблемы с AI могут быть решены с помощью доработки инфраструктуры и более глубокой интеграции технологий. При более продуманной предварительной подготовке и автоматизации уже сейчас можно значительно повысить продуктивность работы с AI, особенно если использовать параллельные потоки задач и распределение нагрузки между несколькими агентами. Такой подход позволит компенсировать негативные эффекты за счёт масштабирования.
С моей точки зрения, крупные и зрелые проекты с огромными базами кода предъявляют уникальные требования к инструментам ИИ. Им нужно не просто генерировать код, а грамотно интегрироваться в существующие процессы и соблюдать внутренние стандарты качества. Новые проекты или «зеленые поля» имеют здесь преимущества, поскольку в них проще выстроить единые правила и не привязаны к многолетним наработкам. По итогам исследования я остаюсь осторожно оптимистичным. Современные AI-инструменты ещё далеки от совершенства, и их использование требует времени на обучение, адаптацию и подготовку.
Однако прогресс в этой области идёт очень быстрыми темпами. Уверен, что с развитием моделей, улучшением контекстного взаимодействия, освоением параллельных агентских рабочих процессов и развитием специализированных решений мы увидим значительный рост эффективности. Для разработчиков, работающих с большими и сложными кодовыми базами, важно быть готовыми к тому, что применение AI будет подразумевать не просто пассивное использование, а активное наставничество и контроль. Со временем, освоив подобные практики, они смогут добиться значимого ускорения и повышения качества. Таким образом, опыт, полученный в исследовании METR и отражённый мной на примере jsdom, не только демонстрирует текущие вызовы и ограничения AI в программировании, но и указывает путь для будущего развития инструментов и методов их интеграции в процессы разработки.
Будущее AI в программировании обещает быть насыщенным инновациями, и каждому специалисту полезно следить за этими изменениями, чтобы не упустить выгоду и не отстать от быстро меняющегося технического ландшафта.