8 полезных функций ChatGPT для программиста

Читать в полной версии →

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

Всем привет! Меня зовут Андрей Сундуков, я сеньор бэкенд-разработчик на Java и Kotlin. Недавно я попал в проект, занимающийся в основном фронтендом на React. И вот уже полтора месяца я на ежедневной основе использую нейросеть ChatGPT в своей работе. Немного расскажу о том, как и почему я вообще решил внедрить ее в рабочую рутину.

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

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

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

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

Как вообще работает ChatGPT

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

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

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

  1. Берем 4000 последних слов из диалога.
  2. Прогоняем их через формулу с сотнями миллионами параметров, чтобы найти (вероятностно) следующее слово.
  3. Прогоняем 3999 последних слов из диалога и новое написанное слово через ту же формулу, чтобы найти очередное слово.
  4. Повторяем пункты 2-3, пока ответ не будет нужного нам размера.

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

Функции ChatGPT для программиста

Перевод иностранной речи для общения с коллегами

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

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

Читайте также: Как я стал фронтенд-разработчиком в крупной американской компании

Написание документации

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

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

То же самое работает с письмами, шаблонами документов.

Подготовка к собеседованиям

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

Инженерные задачи

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

Альтернативный путь изучать новую технологию — отталкиваться от уже известной.

Написание тестов

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

Читайте также: Как правильно писать тесты

Менторская поддержка

ChatGPT отлично работает как неустающий бадди или ментор. Например, по поводу этих enum я задавал десятки вопросов:

  1. Разные подходы — плюсы/минусы, какие приняты в индустрии.
  2. Детали имплементации и значение элементов синтаксиса.

Подсветка синтаксиса или чекстайлинг

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

Ревью пулл-реквестов

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

Читайте также: Amazon открыл доступ к ИИ-ассистенту для программистов CodeWhisperer

С чем нужно быть осторожным

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

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

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

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

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

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

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

Итог

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

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

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

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