Заменит ли искусственный интеллект разработчиков? Исследование будущего программирования

by Matt Stamp
Заменит ли искусственный интеллект разработчиков? Исследование будущего программирования thumbnail

Может ли будущий ИИ действительно писать полноценные приложения и забирать работу у программистов? Давайте реалистично понимать, что ИИ может и не может делать к 2024 году.

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

Является ли искусственный интеллект экзистенциальной угрозой для карьеры разработчиков? Или он станет лишь еще одним инструментом, усиливающим возможности программистов?

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

ChatGPT и LLMs: Понимание технологии ИИ

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

Чат-боты, такие как ChatGPT, не являются программами, которые «мыслят». Они не понимают язык или программирование. Они предсказывают умно звучащие ответы, находя закономерности в огромных объемах текстовых данных из интернета.

Программисты называют их «большими языковыми моделями» (LLMs), это изысканный термин для текстового предиктора на стероидах.

Чтобы проиллюстрировать, что значит “большой”, ChatGPT был обучен на наборе данных от 570 ГБ до 45 ТБ, включающем фрагменты текста с интернет-форумов, книг и онлайн-публикаций, причем много информации было взято прямо с Reddit.

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

Так что, хотя ChatGPT и кажется способным к разговору, его интеллект имеет ограничения.

  • Он может поддерживать контекст только до нескольких тысяч слов.
  • У него нет реального опыта.
  • Он не может рассуждать или делать интуитивные выводы.
  • Ему трудно понимать сложный код.

Однако эта технология стремительно развивается. Итак, как сегодня ChatGPT и другие LLM справляются с задачами программирования?

Может ли ChatGPT писать функциональный код?

ChatGPT может генерировать рабочий код на JavaScript, Python, SQL, Bash и других языках при соответствующем запросе. Это начинающий программист, но вы можете продолжать задавать ему вопросы для исправления ошибок, чтобы получить рабочий код.

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

Тем не менее, его код часто неэффективен или игнорирует крайние случаи, поскольку не обладает полным контекстом проблемы. Фактически, ChatGPT иногда даже предостерегает, что его примеры кода требуют тщательного рассмотрения перед применением.

Так что, мы точно знаем, что LLM пока не достигли своего максимума. Но мы можем только представить, насколько они будут хороши, ведь продвинутые LLM появились всего год назад (ChatGPT был запущен 30 ноября 2022 года).

“Если искусственный интеллект будет продолжать развиваться такими же темпами, то в течение следующих 30 лет большинство человечества окажется в затруднительном положении в отношении рабочих мест, не только программисты,” сказал один пользователь Reddit в сабреддите /r/learnprogramming/.

Задачи разработки, с которыми может справиться ИИ

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

Автоматизация повторяющихся задач

Для опытных разработчиков написание CRUD-приложений, простых скриптов и шаблонного кода для backend является одной из самых утомительных частей работы.

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

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

Получайте контент прямо в свой почтовый ящик

Подпишитесь сейчас, чтобы получать все последние обновления прямо в свой почтовый ящик.

Обработка естественного языка

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

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

Используя документы клиента и беседы, LLM могут помочь перевести запросы в исполняемую семантику для программистов. LLM могут помочь выявить неоднозначности для их решения в начале проекта, а не в середине, когда вы оптимизируете свои запросы.

Обнаружение ошибок

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

пример скриншота ошибки исключения сериализации системного времени выполнения в случае подключения инструмента ИИ, справа текстовое поле, описывающее причину ошибки

Источник

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

Прогнозирование проблем

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

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

Лучшая оценка проекта и временных рамок

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

Инструменты ИИ начинают помогать, анализируя данные из прошлых проектов, чтобы увидеть, сколько времени занимали похожие проекты. Например, CloudBees берет контекст из ваших инструментальных цепочек и помогает его понять. Затем он может использовать эту информацию для оценки сроков доставки программного обеспечения.

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

Оптимизация вашего кода

Замечательно иметь вторую пару глаз для вашего кода. Это может помочь вам выявить проблемы с логикой кода, найти более простые и лучшие способы получения того же результата, а также оптимизировать скорость выполнения.

В то время как программисты постоянно вкладывают усилия в улучшение систем с точки зрения скорости и эффективности, настройка кода методом проб и ошибок становится утомительной.

LLMs могут предложить рекомендации по оптимизации, чтобы помочь вам быстро оптимизировать и рефакторить код.

скриншот запроса ChatGPT «оптимизировать и рефакторить функцию 'exit_adjustment' и вывод в python как способ оптимизации кода

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

Ограничения инструментов ИИ в разработке

Должны ли разработчики чувствовать угрозу от использования ИИ для автоматизации рутинного программирования и дополнительных задач разработки?

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

Некачественный код

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

Вот эксперимент, проведенный пользователем GitHub. Вы можете видеть, что ChatGPT отлично справляется с объяснением и разбором проблемы:

скриншот ответа ChatGPT с разбором каждой строки кода (для n-1, разрез не нужен, поэтому ответ ) и т.д.

Но затем выдает только частично правильный код, где пропускается логика установки ответа в 0, когда n равно 1.

Чтобы убедиться, что все крайние случаи учтены, код потребовал добавления этого условия if, как вы можете видеть на скриншоте ниже.

частично правильный код против правильного кода с блоками фрагментов кода, подчеркивающими, как ChatGTP исправил первую строку кода, выведя правильное утверждение

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

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

Потенциальные риски безопасности

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

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

Не удаётся решить новые задачи

Чтобы вытеснить человеческих программистов, а не помогать им, ИИ должен решать новые проблемы. Современные модели лишь ассоциируют запросы с решениями, с которыми они столкнулись во время обучения. В независимом исследовании исследователи обнаружили, что ChatGPT не справился с 52% программных вопросов, предоставив частичный или некорректный код.

Тем не менее, пользователи все еще выбирали ответ ChatGPT в 39,34% случаев из-за его общей полноты.

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

ИИ не имеет понимания

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

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

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

Будущая роль ИИ в программировании

Хотя у ИИ в настоящее время есть серьезные ограничения, темпы роста в этой области феноменальны. ИИ перешел от непонятного письма к безупречной английской прозе, неотличимой от текста, написанного человеком, всего за один год.

В ближайшем будущем ИИ сможет заменить начинающего программиста, выполняя базовые задачи по кодированию автоматически. Фактически, согласно внутренним оценкам OpenAI, GPT-4 значительно превосходит свои предыдущие версии по всем показателям, включая задачи, связанные с кодированием.

гистограмма, показывающая эволюцию Chat GPT 1-3 (40-48%) по сравнению с GPT-4 (примерно 55%)

“Это будет инструментом в наборе разработчика, который сделает их работу как более быстрой, так и более легкой, в то же время внося уровень сложности и непрозрачности, который, несомненно, вызовет новые проблемы,” говорит Lawjarp2, пользователь Reddit.

Природа программирования уже изменяется, как мы видим это на примере GitHub Copilot, CodeWhisperer от Amazon и многих других.

Программирование преобразится из ручного ввода в синергетическую работу с генеративными системами ИИ — при этом люди будут предоставлять контекст, видение, контроль и устранение неполадок.

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

Так что, хотя задачи меняются, разработчики программного обеспечения не исчезают полностью. Однако профессия через несколько лет будет выглядеть кардинально иначе.

Как обезопасить свою карьеру в области программирования

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

Изучите инженерию запросов

Максимальная польза от использования ChatGPT и GitHub Copilot зависит от эффективной подготовки запросов. К сожалению, составление запросов сейчас больше искусство, чем наука.

Но ожидать, что инженеры будут вручную кодировать всё, как это делали предыдущие поколения, уже не имеет смысла. Лучше позволить новым разработчикам использовать новые инструменты, которые теперь у них под рукой.

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

Оттачивайте свои навыки решения проблем

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

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

Научитесь понимать пользователей

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

Придавайте приоритет ролям, таким как менеджеры по продукту или UX-дизайнеры, которые подчеркивают понимание аудитории и создание продуктов для людей. Выдвигайте на первый план мышление, ориентированное на пользователя, даже при сотрудничестве с программистами AI по вопросам реализации.

Изучение машинного обучения

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

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

Часто задаваемые вопросы

Заменит ли ИИ программистов через 5 лет?

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

Сможет ли ИИ когда-нибудь заменить разработчиков?

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

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

Так что вместо того чтобы беспокоиться о том, будут ли в долгосрочной перспективе код писать биологические или кремниевые руки, развивайте универсальность, независимо от того, какие инструменты появятся.

Как вы относитесь к помощникам по программированию на базе ИИ?

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

Будем ли мы позволять тревоге о будущем парализовать прогресс? Или будем активно переосмысливать наши роли, извлекая выгоду из экспоненциальной мощи этой технологии?

Самые мощные конкуренты — это обычно те, кто быстро принимает новейшие технологии, а не борется с изменениями. Но ключевым моментом остаётся разумное сочетание человеческого изобретательства и машинного интеллекта как дополняющих друг друга сил, а не как противоборствующих сторон.

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

Получайте контент прямо в свой почтовый ящик

Подпишитесь сейчас, чтобы получать все последние обновления прямо в свой почтовый ящик.