ИИ-помощники для программирования стали очевидным ранним примером использования в золотой лихорадке генеративного ИИ, но обещанное повышение производительности не оправдывает ожиданий — если оно вообще существует.
Многие разработчики утверждают, что ИИ-помощники делают их более продуктивными, но недавнее исследование, проведенное с целью измерить их производительность, не выявило значительных улучшений. Использование GitHub Copilot также привело к появлению на 41% больше ошибок, согласно исследованию Uplevel, компании, предоставляющей данные о кодинге и совместной работе.
В исследовании измерялись циклы пул реквестов (их количество за определенное время) и их производительность — количество смердженых запросов. Исследование не выявило значительных улучшений для разработчиков, использующих Copilot.
Компания Uplevel, используя данные, полученные от своих клиентов, сравнила результаты работы около 800 разработчиков, использующих GitHub Copilot, за трехмесячный период с результатами их работы за три месяца до внедрения.
Измерение выгорания
Помимо измерения производительности, исследование Uplevel рассматривало факторы выгорания разработчиков, и оказалось, что GitHub Copilot не помог и здесь. Количество рабочего времени, проведенного вне стандартных часов, уменьшилось как в контрольной, так и в тестовой группе, использовавшей инструмент для программирования, но в большей степени оно уменьшилось, когда разработчики не использовали Copilot.
По словам Мэтта Хоффмана, менеджера по продуктам и аналитика данных компании Uplevel, исследование было вызвано любопытством по поводу заявлений о значительном повышении производительности труда в связи с повсеместным распространением помощников по кодингу с искусственным интеллектом. Опрос GitHub, опубликованный в августе, показал, что 97% инженеров-программистов, разработчиков и программистов сообщили, что используют помощников с искусственным интеллектом.
«Мы видели различные исследования, в которых люди говорили: «Это действительно помогает нам повысить производительность»», — говорит он. «Мы также видели, как некоторые люди говорили: Знаете что? Мне приходится больше заниматься рецензированием кода».
Представитель GitHub Copilot не дал комментариев по поводу исследования, но указал на недавнее исследование, в котором говорилось, что разработчики могут писать код на 55% быстрее, используя ассистент.
По словам Хоффмана, команда Uplevel также отправилась на исследование, ожидая увидеть некоторый рост производительности.
«Гипотеза нашей команды заключалась в том, что мы думали, что циклы PR сократятся», — говорит Хоффман. «Мы думали, что разработчики смогут писать больше кода, и мы действительно думали, что количество дефектов может снизиться, потому что вы используете эти инструменты искусственного интеллекта, чтобы помочь вам просмотреть ваш код еще до того, как вы его опубликуете».
Хоффман признает, что для измерения производительности разработчиков может быть больше способов, чем время цикла PR и пропускная способность PR, но Uplevel считает эти показатели надежным мерилом производительности разработчиков.
Проверьте позже
В конце концов, Uplevel не думает, что организации откажутся от использования ассистентов, поскольку инструменты быстро развиваются.
«Мы слышали, что люди в итоге становятся более внимательными к коду, чем раньше, и у вас может возникнуть ложная вера в то, что код делает то, что вы от него ожидаете», — добавляет Хоффман. «Нужно просто внимательно следить за тем, что генерируется; делает ли он то, что вы от него ожидаете?»
Команды разработчиков сообщают о неоднозначных результатах.
По словам Ивана Гехта, генерального директора компании Gehtsoft USA, фирмы, занимающейся разработкой программного обеспечения на заказ, не было отмечено значительного повышения производительности при использовании помощников на основе больших языковых моделей (LLM). Gehtsoft тестирует ассистентов для программирования в «песочнице», но пока не использует их в проектах клиентов.
«Использование LLM для повышения производительности требует как того, чтобы LLM по своим возможностям конкурировал с реальным человеком, так и того, чтобы реальный пользователь знал, как использовать LLM наиболее эффективно», — говорит он. «LLM не обладает критическим мышлением, самосознанием или способностью думать».
Есть разница между написанием нескольких строк кода и полноценной разработкой программного обеспечения, добавляет Гехт. Программирование — это как написание предложения, а разработка — как написание романа, считает он.
«Разработка программного обеспечения на 90% состоит из работы мозга — понимания требований, проектирования системы, учета ограничений и запретов», — добавляет он. «Преобразование всех этих знаний и понимания в реальный код — более простая часть работы».
Как и в исследовании Uplevel, Гехт также видит, что ИИ-помощники вносят ошибки в код. Каждая новая итерация кода, сгенерированного ИИ, в итоге становится менее последовательной, когда разные части кода разрабатываются с использованием разных подсказок.
Понять и отладить код, созданный ИИ, становится все сложнее, а устранение неполадок становится настолько ресурсоемким, что проще переписать код с нуля, чем исправлять его, — говорит он.
Видимые достижения
В компании Innovative Solutions, предоставляющей облачные услуги, опыт использования ассистентов кодирования значительно отличается. По словам Трэвиса Рела, технического директора компании, использование таких помощников кодирования, как Claude Dev и GitHub Copilot, значительно повышает производительность. Компания также использует собственную интеграцию Anthropic для мониторинга запросов и проверки качества кода.
По словам Рела, производительность труда разработчиков выросла в два-три раза, если судить по скорости выполнения тикетов для разработчиков, времени выполнения заказов для клиентов и качеству тикетов, измеряемому количеством ошибок в коде.
По его словам, команда Рела недавно завершила проект заказчика за 24 часа с помощью помощников по кодированию, тогда как раньше на тот же проект у них ушло бы около 30 дней.
Тем не менее, по словам Рела, некоторая шумиха вокруг ассистентов — например, предположения о том, что они заменят целые команды разработчиков, а не просто дополнят или изменят их — не оправдана. Помощники кодирования могут использоваться для быстрой замены кода или оптимизации кодовых путей путем переработки сегментов кода, добавляет он.
«Ожидания, связанные с помощниками по кодингу, должны быть умеренными, потому что они не напишут весь код или даже правильный код с первой попытки», — говорит он. «Это итеративный процесс, который при правильном использовании позволяет разработчику увеличить скорость кодирования в два-три раза».