Истории успеха

Новостной портал GADGETPAGE » Истории успеха » «В ближайшее время ситуация принципиально не изменится», - ведущий Unity-разработчик Voodoo о повышении эффективности AI-ассистентов разработчика

«В ближайшее время ситуация принципиально не изменится», - ведущий Unity-разработчик Voodoo о повышении эффективности AI-ассистентов разработчика

40%, именно такое количество ошибок, гласит недавнее исследование, допускает при генерации кода GitHub Copilot. «На сегодня – это один из лучших AI-ассистентов разработчика», пояснил нам Игорь Фролов, ведущий Unity-разработчик технологического стартапа Voodoo, выпускающего игры. Он согласился поделиться видением изнутри мира разработки на то, как «умные» помощники меняют индустрию.


Несмотря на то, что AI-ассистенты часто ошибаются, их применение уже стало привычной частью производства программного обеспечения. По данным Forbes, 40% кода на распространенных языках программирования создается «
искусственным интеллектом». Также, по информации издания, использование AI-ассистентов помогает ускорить разработку на 25%.

- Игорь, какие AI-инструменты Вы, как опытный разработчик, могли бы посоветовать?

- Прежде всего, это GitHub Copilot. На сегодня – это один из лучших AI-ассистентов разработчика. Он обучен методами «машинного обучения» на миллионах Git-репозиториев. GitHub – самое «богатое» хранилище открытого кода в интернете. Copilot платный, доступен для многих языков программирования и совместим с большинством популярных сред разработки и редакторов кода. По личному опыту скажу, что «заточен» он прежде всего под Visual Studio, в то время как на любимом мною Rider ассистент работает куда хуже. Copilot может похвастаться глубокой интеграцией с разными сервисами, прежде всего, конечно, GitHub. Еще один интересный инструмент – Tabnine. Самый старый из ассистентов на рынке. По утверждению создателей, он может обучаться на вашей собственной кодовой базе, что позволяет предлагать автодополнения, максимально соответствующие стилю и логике проекта. Большой акцент сделан на безопасность и приватность корпоративных данных. По моему опыту и опыту коллег по цеху, он все-таки проигрывает Copilot в практических задачах и часто выдает менее качественный результат. Также стоит отметить Cursor. В отличие от предыдущих ассистентов, Cursor может похвастаться наличием собственного редактора кода, похожего на Visual Studio Code. Также у него более продвинутые функции по работе со всеми файлами проекта, в то время как большинство схожих решений, как правило, работают только в рамках текущих открытых файлов. Напоследок хочу упомянуть AI-помощника от Codeium. В отличие от вышеупомянутых ассистентов, он обладает наименее «урезанной» бесплатной версией, со всей необходимой полнотой функционала. У всех «умных» ассистентов схожий функционал. Большинство из них «под капотом» эксплуатируют ChatGPT, а различаются между собой в нюансах, которые могут сделать их предпочтительными для разработчиков в тех или иных ситуациях.

- Применяете ли вы AI в написании кода для новых игр в Voodoo? Как вы это делаете?

- Сейчас мы пользуемся AI-ассистентами. Как вы знаете, в ChatGPT можно напрямую задать промпт, то есть специально сформулированное задание на написание кода, и получить результат. Но нейросеть не владеет контекстом вашего проекта, поэтому она вам не предложит код, который вы можете немедленно использовать. Вам нужно будет долго рассказывать ей о вашей кодовой базе, присылать код связанных с той частью приложения, которую вы пишете, классов. Это итеративный процесс. Нейросеть выдает вам сырой результат, после чего вы уточняете задание. А потом, еще раз так, и еще раз так. Вы можете потерять больше времени, чем потратили бы, если бы просто писали код «по старинке». Полученный этим способом код, вам нужно еще добавить самостоятельно в проект. Это тоже может потребовать много времени. AI-ассистенты улучшают ситуацию. Они устанавливаются в виде плагинов в редакторы кода, в Visual Studio, Visual Studio Code, продукты JetBrains, вашу среду разработки, на сервер. В отличие от нейросети, которая не связана с вашим проектом, они в курсе всего, что у вас есть. Имеют доступ к файлам. Изучают ваш код. Могут обучаться на вашей кодовой базе, а не на чьем-то коде в открытых источниках, который сам по себе содержит много ошибок. Поэтому они предлагают код, учитывающий особенности вашего синтаксиса, например, правила именования, которые вы у себя приняли, учитывающие специфику проекта. AI-ассистентам даже не нужны промпты, они создают код автодополнением. Вы пишете скрипт в редакторе кода, а они автодополняют его. Вам остается утвердить предложение или отвергнуть. Мы в Voodoo пишем с «умными» ассистентами, но имеем жесткие процедуры контроля за машинным кодом. Когда целые модули программного обеспечения пишутся AI, вы утрачиваете контроль над кодом. Перестаете так же хорошо понимать, что в нем происходит, как если вы сами его написали. Вдобавок, работа ассистентов не стабильна. Вы можете получить код, который просто не будет работать, но хуже, если это будет рабочий код, в который будет заложена ошибка или потенциальная ловушка, увеличивающая «технический долг», то есть провоцирующая новые и хронические проблемы, требующие постоянного внимания.

- Насколько сильно получается ускорить разработку и повысить ее эффективность?

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

- Как вы считаете, как скоро AI-ассистенты смогут стать лучше и решать больше задач?

- Думаю, в ближайшее время ситуация принципиально не изменится. Понимаете, AI-ассистенты основаны на LLM –«больших языковых моделях». Как таковые, они не столько являются «искусственным интеллектом», сколько очень совершенными и «продвинутыми», но генераторами текста. Таким образом, многого они не могут и не смогут по своей сути. Например, только разработчик-человек может понимать реалии окружающего мира и бизнеса, влияющие на проект. Следовательно, и все ключевые решения может принимать только он. Потенциал развития ассистентов в текущей парадигме еще не израсходован, он есть. Например, с предстоящим выходом нового «умного» помощника Claude Sonnet 3.7 ждут еще более корректного понимания контекста кода, меньшего количества ошибок. С другой стороны, я бы не торопился провозглашать «вайб-кодинг»: эру программистов как визионеров, которые просто говорят «искусственному интеллекту», что нужно сделать, а делает это он сам. Генератор текста вам такого не сделает. Есть, конечно, попытки создать полноценный AI, который будет думать как разработчик и заменит инженера среднего звена. Но тут пока продвижения скромные. Например, последние исследования в сфере развития «искусственного интеллекта» выявили ряд тупиков в этом процессе, к которым инженеры не знают, как подступиться. Например, отсутствие у AI интуиции, которая в человеческой жизни важна при решении, фактически, любой задачи. Специалисты называют это «проблемой неизвестных неизвестных». Александр Ведяхин из «Сбербанка» во время своей лекции не так давно приводил интересный пример, как даже самый сложный AI может становиться беззащитным из-за этого. Робот-охранник на AI, сломался, потому что поскользнулся на вымытом полу. Он просто не знал, что пол моют. Нет, AI-ассистенты – пока инструмент, дающий возможность живому программисту сделать гораздо больше. В самом лучшем случае они смогут дать возможность опытному специалисту заменить собой целую команду инженеров, работающих без «умных» помощников.

- Так значит AI не заменит в обозримом будущем программистов?

- Нет, я думаю интрига в другом: заменит ли разработчик, вооруженный AI, разработчиков, не пользующихся AI. Это мы увидим в ближайшие годы. Еще разработчик языка FORTRAN, Джон Бэкус в 1954-1957 годы собирался сделать язык программирования, который смогут легко освоить ученые разных специальностей, не занимающиеся разработкой или информатикой профессионально. И использовать весь потенциал компьютера для решения самых разных научных задач: от химии и экономики до лингвистики. Боюсь, что если возникла такая проблема в формировании языка программирования настолько простого, чтобы пользоваться им можно было без обучения, то не удастся и передать всю инженерную составляющую работы профессионального программиста машине. Хотел бы ошибаться, но думаю, что не ошибаюсь. Развитие тех же AI-ассистентовсейчас наоборот, приводит к появлению новых инженерных специальностей. Например, прямым следствием экспансии в разработку AI, стало рождение профессии промпт-инженеров и специальных инженеров по качеству кода, написанного AI.

- Какие еще возможности AI можно использовать при написании кода. Может быть, они могут помочь делу как-то косвенно?

- Я бы обратил внимание на недооцененную пока функцию анализа кода и пересказа чужого кода, которая есть в арсенале многих современных AI-ассистентов. Приложения разрабатывает почти всегда команда, и раньше большой проблемой была коммуникация между разработчиками. Иногда требовалось и требуется уметь общаться даже лучше, чем представителям профессий, которые никогда не считались интровертными (смеется). Если ваш код взаимодействует с кодом коллеги или он поддерживает то, что вы написали, нужно уметь объяснить ему, как у вас все устроено. На это может уходить очень много времени. Если объяснять код будет AI и делать это хорошо, то, конечно, продуктивность команд разработчиков возрастет.

AI-сервисы для разработчиков развиваются. Существуют разные мнения о том, насколько полезными они будут. Эксперты Росбизнесконсалтинга недавно опубликовали прогноз, согласно которому AI потенциально способен увеличить мировой ВВП на 15 триллионов долларов к 2030 году. Время покажет, какую часть этой «добавленной стоимости» будет связана с автоматизацией IT-сектора. Или как отметил в разговоре с нами Игорь Фролов: «Любые прогнозы в этой сфере опираются на текущую динамику и не учитывают внезапного прорыва, который может быть связан с любой из многочисленных групп инженеров и ученых, которые трудятся над экспериментальными AI-платформами для разработчиков».

Автор статьи: Левков Сергей