Как стать автором
Обновить
106.19

Как быть успешным кодером в мире ChatGPT

Время на прочтение6 мин
Количество просмотров7.5K
Автор оригинала: Rina Diane Caballar

Искусственный интеллект, и в особенности генеративный ИИ на основе больших языковых моделей (large language model, LLM), может перевернуть жизни многих кодеров. Но некоторые специалисты говорят, что ИИ не заменит живых программистов… по крайней мере, сразу.

«Вам стоит беспокоиться о людях, которые используют заменяющий вас ИИ», — говорит докторант биомедицинской инженерии Калифорнийского университета и CEO центра исследований медицинского ИИ MedARC Танишк Мэтью Эйбрехем.

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

Придерживайтесь основ и рекомендаций


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

«Я считаю, что ИИ способен существенно повысить производительность разработчиков ПО, но разработка ПО — это гораздо больше, чем просто генерация кода, это ещё и выявление требований пользователей, отладка, тестирование и многое другое», — рассказывает аспирант Приян Вайтхилингам, работающий на пересечении человеко-компьютерного взаимодействия и языков программирования в John A. Paulson School of Engineering and Applied Sciences Гарвардского университета.

Один из наиболее неотъемлемых навыков программиста по-прежнему остаётся сферой живых кодеров — это решение задач. Анализ задачи и поиск изящного решения — это всё ещё высоко ценимый умение кодера.

«В этом есть аспект творчества, и многие эти навыки решения задач важнее, чем языки или инструменты», — говорит член Python Software Foundation, сооснователь и CEO Explosion Инес Монтани. Explosion — это компания, занимающаяся созданием инструментов разработчиков для ИИ и обработки естественного языка. «Не попадайте в ловушку, сравнивая себя с ИИ, который в большей или меньшей степени является статистическим результатом работы большой модели. Есть различия в том, что делает разработчики и выдаёт модель — разработчик не только пишет произвольные строки кода».

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

«Именно живой кодер по-прежнему должен определять структуру кода, нужные абстракции вокруг него для упорядочивания, а также различные интерфейсы», — рассказывает заместитель директора и COO Computer Science and Artificial Intelligence Laboratory MIT Армандо Солар-Лезама. «Всё это очень важно для практики разработки ПО, и эти аспекты останутся с нами ещё долго».

Найдите инструмент, отвечающий вашим потребностям


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

Например, GitHub Copilot и другие ИИ-помощники в кодинге могут дополнять программирование, предлагая подсказки во время написания кода. ChatGPT и Google Bard, с другой стороны, ведут себя больше как разговорные ИИ-программисты и могут использоваться для ответов на вопросы об API (интерфейсах прикладного программирования) или для генерации фрагментов кода.

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

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

Самое главное — чёткие и конкретные разговоры


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

При работе с ИИ-программистами вам нужно найти наилучший способ формирования промтов. Здесь нам на помощь приходит промт-инжиниринг.

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

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

«Обращайтесь с ней почти как с умным стажёром, много знающим о теме, но не особо опытным», — говорит Эйбрехем.

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

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

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

Будьте критичны и осознавайте риски


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

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

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

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

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

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

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

«Одно из свойств опытных разработчиков ПО — осознание большинства распространённых уязвимостей в коде и вариантов того, как код может становиться уязвимым», — говорит Солар-Лезама. «У них развивается интуиция о том, на что стоит обращать внимание и что является „красными флагами“. В будущем эти методики станут более важной частью инструментария разработчиков ПО».

Чтобы программисты могли выживать в мире генеративного ИИ, им нужно освоить ИИ как инструмент и встроить его в свои рабочие процессы, при этом осознавая возможности и ограничения этих инструментов. А чтобы быть успешными, им необходимо полагаться на свои навыки кодинга.
Теги:
Хабы:
Всего голосов 16: ↑12 и ↓4+13
Комментарии11

Публикации

Информация

Сайт
sibur.digital
Дата регистрации
Численность
1 001–5 000 человек
Местоположение
Россия

Истории