Искусственный интеллект меняет способ генерации кода, и разработчики могут получить больше преимуществ в скорости. Этому способствуют встроенные в интегрированные среды разработки (IDE) возможности и платформы low-code, отмечают опрошенные порталом InformationWeek эксперты.

Разработка ПО — это постоянно меняющийся ландшафт. С годами стало проще генерировать высококачественный код быстрее, хотя определение «быстрее» тоже меняется.

Возьмем, к примеру, инструменты low-code. С их помощью разработчики могут создавать на платформе бóльшую часть необходимой им функциональности, поэтому им нужно писать только тот код, который требуется конкретному приложению. Инструменты low-code также демократизируют разработку ПО — особенно с добавлением ИИ.

Генеративный ИИ (GenAI) еще больше ускоряет разработку и меняет представление разработчиков о кодировании.

Сиддхарт Паракх, старший менеджер по инженерии компании Medable, ожидает, что ИИ «революционизирует» производительность. «Способность ИИ автоматизировать повторяющиеся задачи, рефакторить код и даже генерировать решения с нуля позволит разработчикам сосредоточиться на решении задач более высокого порядка и стратегических проектных решениях, — говорит он. — С помощью ИИ, занимающегося рутинным кодированием, разработчики смогут стать организаторами сложных систем, а не заниматься построчным написанием кода».

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

Как помогает ИИ

Речь идет об «автоматизации» операций.

«Если ИИ возьмет на себя большинство задач по кодированию, это обеспечит беспрецедентную эффективность и скорость разработки ПО, — говорит Паракх. — Команды смогут быстрее итерировать, быстрее адаптироваться к изменениям и масштабировать проекты без традиционных узких мест, связанных с ручным кодированием. Это может демократизировать разработку ПО, позволив нетехническим специалистам создавать функциональное ПО с минимальными усилиями».

Джеффри Борн, соучредитель компании Ayrshare, занимающейся разработкой API для социальных сетей, говорит, что GenAI-помощники по кодингу теперь являются неотъемлемой частью его работы. «Они создают строки кода, еженедельно экономя мне часы. Но, хотя результаты улучшаются, они верны менее чем в 40% случаев. Нужно иметь опыт, чтобы понять, что код просто не соответствует требованиям и нуждается в корректировке или переделке, — говорит он. — Новички начинают работать с такими помощниками под рукой, но у них нет многолетнего опыта написания кода, который есть у старших. Мы должны учитывать это и не обязательно ограничивать им доступ, но находить творческие пути для применения этих знаний. Нужно найти баланс между мгновенной фиксацией кода и здоровым опытом и критическим взглядом».

Эволюция программирования, особенно благодаря слоям абстракции и GenAI, значительно изменила подход к работе Сурабхи Бхаргава, ведущего технического специалиста Adobe по машинному обучению. «GenAI значительно ускорил некоторые аспекты разработки. Написание шаблонного кода, создание прототипов и даже отладка стали более рациональными. Поиск информации в различных документах стал проще благодаря ИИ и копипастам, — говорит она. — Хотя ИИ может ускорить работу, я должна критически оценивать его результаты. Это заставляет меня более аналитически подходить к оценке работы, выполняемой этими системами, и убеждаться в том, что она соответствует моим ожиданиям и потребностям, особенно при работе со сложными алгоритмами или работе, связанной с соблюдением нормативных требований».

ИИ-инструменты также помогают Бхаргава создавать быстрые прототипы и снижают когнитивную нагрузку. «Я могу больше сосредоточиться на стратегическом мышлении, что повышает производительность и дает мне возможность внедрять инновации, — отмечает она. — Иногда возникает соблазн слишком сильно положиться на ИИ при создании кода или принятии решений. Решения, генерируемые ИИ, не всегда оптимизированы или приспособлены к конкретным потребностям проекта, что приводит к ошибкам и проблемам в продакшн. А иногда, если инструменты сложны в использовании, на их настройку уходит много времени».

Времена без ручного кодирования еще не наступили

В настоящее время приходится бороться с целым рядом проблем ИИ, таких как неправильная интерпретация, галлюцинации и неверные «факты». Чрезмерная зависимость от кода, генерируемого ИИ, может привести к нехватке глубоких технических знаний в командах разработчиков.

«Если люди будут меньше вовлечены в тонкости кодирования, мы можем увидеть снижение уровня основных навыков, необходимых для отладки, оптимизации или творческого решения низкоуровневых проблем. Кроме того, могут возникнуть проблемы этического характера и безопасности, поскольку системы ИИ могут неосознанно создавать уязвимости или генерировать необъективные решения», — говорит Паракх.

Том Таулли, автор книги «AI-Assisted Programming: Better Planning, Coding, Testing, and Deployment», последние пару лет использует инструменты программирования с помощью ИИ. Эта технология оказала самое большое преобразующее влияние на его работу за весь его более чем 40-летний стаж.

«Что интересно, теперь я подхожу к проекту с точки зрения подсказок на естественном языке, а не кодирования или бесконечного поиска в Google и StackOverflow. Фактически, я создаю документ с требованиями к продукту, который представляет собой список подсказок. Затем я прохожусь по каждой из них при разработке приложения, — говорит Таулли. — Эти системы далеки от совершенства. Но на генерацию кода уходит всего несколько секунд, а значит, у меня есть больше времени на его проверку и итерации».

Он в основном занимался разработкой бэкенда, но программирование с помощью ИИ позволило ему больше заниматься разработкой фронтенда. «Самое забавное, что один из самых больших недостатков — это темпы инноваций в этих инструментах. Бывает трудно угнаться за многочисленными разработками, — говорит Таулли. — Правда, есть и другие известные недостатки, например, безопасность и защита интеллектуальной собственности. Скопирован ли код? Действительно ли вы являетесь владельцем созданного вами кода?».

Одним из самых больших недостатков он считает контекстное окно. «По сути, большие языковые модели (LLM) не могут „понять“ большие кодовые базы. Это может затруднить сложный рефакторинг кода», — отмечает Таулли. Еще одна проблема — дата окончания обучения LLM: возможно, в них нет самых последних пакетов и фреймворков. Но преимущества перевешивают недостатки, говорит он.

Том Джонси, главный специалист агентства цифрового маркетинга Nautilus Marketing, говорит, что инструменты GenAI, такие как GitHub Copilot, ускорили процесс кодирования, позволив ему заниматься архитектурой и дизайном высокого уровня. Он советует использовать ИИ, чтобы сэкономить время на шаблонном коде и документации.

«Некоторые вещи, которым мне пришлось научиться, — это как подсказывать инструментам ИИ и критически оценивать их результаты. Важно помнить, что, хотя ИИ отлично справляется с генерацией кода, он не всегда понимает более широкий контекст и требования бизнеса, — говорит Джонси. — Поэтому всегда сверяйте сгенерированный ИИ код с официальной документацией. Инструменты на базе ИИ облегчают изучение нового языка или фреймворка без необходимости вникать в детали синтаксиса».

Эдвард Тян, генеральный директор GPTZero, считает, что лучше использовать GenAI как помощника в кодировании, а не полагаться на него полностью. «Персонализация — ключевой аспект кодирования, а GenAI зачастую просто не может персонализировать все так, как вам нужно. Он, конечно, может создавать сложный код, но часто ему просто не хватает уникальности», — говорит он.

Заключение

GenAI ускоряет разработку за счет быстрой генерации кода, но не забывайте о его ограничениях. Хотя он хорошо подходит для написания шаблонного кода и документации, создания быстрых прототипов и отладки, важно проверять полученные результаты. Повысить производительность также помогут навыки инжиниринга подсказок.