В условиях растущей нехватки разработчиков помощь искусственного интеллекта в кодировании становятся все более полезной, поскольку она устраняет разрыв в квалификации, снижая барьер для входа, считают опрошенные порталом InformationWeek эксперты.
Традиционное кодирование предполагает выполнение повторяющихся задач и требует знания множества мельчайших деталей. Эти аспекты отвлекают разработчиков от творчества и замедляют их работу. Технология ИИ обещает устранить значительную часть этой повторяющейся работы, и разработчики больше не будут отвлекаться из-за необходимости искать в Интернете какие-то мелкие детали. Она работает аналогично автозаполнению в текстовом редакторе, но вместо обычного языка пишет код и создает целые функции за один раз.
ИИ помогает с алгоритмами и шаблонным кодом
Среди последних предложений в области ИИ-поддержки кодирования — инструмент для парного программирования Copilot от Github. Компания утверждает, что Copilot может предложить готовые методы, шаблонный код, целые модульные тесты и даже сложные алгоритмы.
«С технологией кодирования на базе ИИ, такой как Copilot, разработчики могут работать как прежде, но с большей скоростью и удовлетворением, поэтому ее очень легко внедрять», — объясняет Оге Де Моор, вице-президент GitHub Next. По его словам, во время технического превью продукта компания узнала от пользователей, что, получая от ИИ лучшие предложения, они пишут более точные и понятные объяснения в комментариях к коду.
«Пользователи также пишут больше тестов, потому что Copilot побуждает их сосредоточиться на творческой части создания хороших тестов, — объясняет де Моор. — В результате они чувствуют, что пишут более качественный код, рука об руку с Copilot».
Он добавляет, что, конечно, важно, чтобы пользователи знали об ограничениях технологии. «Как и любой код, предложения от ИИ-помощников, таких как Copilot, должны быть тщательно протестированы, рассмотрены и проверены», — говорит де Моор.
GitHub Copilot создан с помощью Codex — потомка GPT-3 — который обучается на общедоступном исходном коде и естественном языке. «Благодаря этому вы можете написать комментарий на английском языке, и тогда Codex предложит соответствующий код, — объясняет де Моор. — Фактически, он может даже написать целую функцию или класс, просто исходя из их описания на английском языке».
Будущие возможности ИИ помогут с отладкой
Генеральный директор Tabnine Дрор Вайс считает, что в будущем ИИ-помощники смогут просматривать код для разработчиков, автоматически создавать тесты, помогать в отладке и выполнять «умные» автоматические операции по обслуживанию систем. «В конечном счете все действия, которые можно автоматизировать, будут автоматизированы», — говорит он.
С его точки зрения, критически важной функцией является возможность интегрировать конкретные лучшие практики и шаблоны кода для проектов и организаций. «Используя такой специализированный ИИ, организации получат выгоду не только от ускорения, но и от лучшей согласованности и качества кода, — объясняет Вайс. — Еще одно преимущество — сокращение времени, которое требуется разработчикам для того, чтобы стать высокопродуктивными, когда они присоединяются к новому проекту».
Одним из основных преимуществ инструментов кодирования с помощью ИИ является контекстно-зависимое завершение кода. Например, Visual Studio IntelliCode — это набор возможностей ИИ, которые позволяют разработчикам эффективно завершать код с помощью таких функций, как завершение аргументов, форматирование кода и ссылка на правила стиля.
IntelliCode обучается на коде тысяч высоко оцененных Open Source-проектов на GitHub и использует контекст текущего кода для создания соответствующих рекомендаций. В него уже внесены такие обновления, как завершение кода целыми строками, рефакторинг и предложения, которые улучшают опыт повторного редактирования для экономии времени разработчиков.
Дорожная карта — ключевой момент
Вайс говорит, что для организаций, планирующих реализовать стратегию, включающую ИИ-помощников по кодированию, ключевым моментом является составление дорожной карты: «Организациям необходимо мыслить стратегически и иметь представление о том, как они хотят использовать ИИ, даже если некоторые важные функции еще не доступны ни в одном из продуктов на рынке».
Он объясняет, что логичным первым шагом на пути к внедрению помощи ИИ будет определение определенной группы разработчиков и предоставление им возможности использовать ИИ на основе предварительно обученных моделей, которые изучают шаблоны из общедоступного кода.
После успешного внедрения на этом этапе организации могут приступить к внедрению в других группах. Параллельно организации смогут адаптировать помощь ИИ к своим потребностям, создавая собственные модели ИИ на основе своего кода.
Де Моор также отмечает, что разработчики тратят большую часть своего времени на другие задачи, и вскоре эти задачи также выиграют от помощи ИИ. Примерами таких задач, которые уже созрели для помощи со стороны ИИ, являются обзор кода, тестирование и рефакторинг.
«Изменит ли это работу разработчиков? Конечно, и в лучшую сторону, — говорит де Моор. — Я не предвижу будущего, в котором Copilot будет производить что-то полезное без участия человека, но я вижу необузданное человеческое творчество, которое больше не будет загромождено несущественными деталями».
По его словам, сейчас программирование — это проектирование (разложение большой задачи на более мелкие), а затем определение того, что должны делать мелкие блоки. А ИИ как раз заполнит детали.
Вайс добавляет, что поскольку каждая организация становится софтверной, разработка ПО является ее наиболее стратегической и ограниченной в ресурсах деятельностью. «Компании начинают сталкиваться с ограничениями в количестве разработчиков, и повышение продуктивности небольших команд имеет первостепенное значение, — говорит он. — ИИ — это самый эффективный способ повысить продуктивность разработчиков и команд, и он станет естественным следующим шагом для каждой организации, внедрившей базовые платформы DevOps и CI».