Восхищает ли нас ChatGPT или беспокоит, но существует взгляд на технологии искусственного интеллекта, который может действительно изменить подход разработчиков к созданию и доставке кода, пишет на портале The New Stack Коди Деаркланд, главный инженер по техническому маркетингу компании LaunchDarkly.

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

В отличие от других новых технологий, доступность этой системы быстро вывела ее за пределы круга разработчиков ПО. Для одних это создание целых отчетов или аналитических материалов по какой-либо теме, для других — песен или других произведений искусства. Если вы хотите по-настоящему посмеяться, попросите систему написать вам «язвительное письмо об увольнении с работы».

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

Истина в споре о том, стоит ли радоваться или беспокоиться, вероятно, лежит где-то посередине, и хотя у обеих сторон есть весомые аргументы, существует взгляд на ChatGPT, который может действительно изменить подход разработчиков к созданию и доставке кода.

С одной стороны, ChatGPT радикально снижает планку сложности написания ПО, чего мы никогда не видели ранее. И здесь возникает вопрос о распространенных путях, которые люди выбирают при изучении новых языков программирования, и о том, как они изменятся.

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

Сегодня, на раннем этапы эры создания ПО с ChatGPT мы просим ИИ найти компонент, и он возвращает пример кода. Мне было интересно посмотреть, как это может выглядеть в чистом виде, и я проверил эту идею, попросив ChatGPT: «Покажи мне, как написать флаг функции в React с помощью LaunchDarkly». Как и обещалось, он неожиданно и быстро выдал пример переключения между двумя программными компонентами с помощью флага функции.

Когда я дал ему второй запрос с просьбой: «Можешь показать мне пример на Python?», он быстро переключился на него. Оба они также включали пошаговые примеры, показывающие значение кода и соображения по реализации, характерные для LaunchDarkly. В них даже были ссылки на документацию.

Но было ли это «копированием и вставкой»? Не совсем.

Хотя выданный код был правильным, в нем отсутствовали критические части. LaunchDarkly требует, чтобы языковые SDK были инициализированы в коде приложения, а поскольку запрос не касался этого, эта часть была пропущена. Когда я дополнил свой запрос, ChatGPT выдал новый код, включающий компоненты инициализации.

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

Так, в этом простом примере мы попросили ChatGPT предоставить некоторый код и получили результаты, которые мы просили, а также объяснения и ссылки на документацию, но этого было недостаточно, потому что в запросе отсутствовали требования, о которых мы не подумали. Мы немного изменили наши вопросы, и в ответ получили дополнительные детали, которые нам были нужны. Таким образом, ChatGPT требует от нас определенного уровня знания инструментария, чтобы понимать, какой вопрос задать.

Что это означает в плане полезности ChatGPT в реальном мире?

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

В новой эпохе сборки ПО будут возможны ситуации, когда разработчик слепо копирует код, сгенерированный ChatGPT, в свою среду и тратит несколько часов на отладку, когда/если что-то идет не так. Хотя, возможно, преимущества столь быстрого инструмента создания кода, перевесят такие издержки, как сбой сайта.

Более вероятным сценарием использования ChatGPT будет такой, когда разработчик подходит к нему как к инструменту, который он может применять для дополнения существующего рабочего процесса, чтобы ускорить ранние стадии разработки.

Такие возможности, как быстрый запуск проекта или заполнение пробелов в знаниях (в области знания как языка, так и процессов), позволят разработчикам ускорить процесс обучения и создания ПО.

Если бы мир ПО состоял из шаблонного кода, тогда был бы шанс, что ChatGPT сможет заменить команды разработчиков. Однако это не наша реальность. Реальность такова, что каждый бизнес подходит к решению своих задач по-разному.

Уровни процесса, бизнес-логика, технический долг, проектные решения и архитектура создают контекст, на который ChatGPT не может ответить универсально. Это инструмент, который мы можем использовать для более быстрого создания ПО, расширения возможностей нашего собственного обучения и профессионального роста. Те, кто игнорирует его, в конечном итоге окажутся в числе отстающих, но тем, кто полагается только на него, в конечном итоге придется больше заниматься ретроспективой отказов и заполнением документов по анализу первопричин.