Как программирование с помощью ИИ повысило мою продуктивность

Сначала я попробовал GitHub Copilot, недолго, примерно в начале 2022 года. Он привлек мое внимание отчасти из-за своего названия — у меня есть лицензия частного пилота и я всегда был энтузиастом авиации. На тот момент идея показалась мне интригующей, но юзабилити продукта не очень удовлетворило: как по скорости, так и по качеству генерации. Я начал повторно использовать его около трех месяцев назад, и теперь он стал для меня незаменимым и стоит каждой копейки из тех 10 долларов в месяц, которые я плачу.

Что делает меня счастливым клиентом? Давайте разберемся.

Чего ожидать от второго пилота?

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

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

Хороший второй пилот должен обладать следующими качествами:

  • Помогайте, а не доминируйте
  • Надежный для задач, с которыми он справляется
  • Хорошее молчаливое взаимопонимание с капитаном

GitHub Copilot продемонстрировал некоторые из этих качеств за 3 месяца работы на меня.

Нулевая конфигурация

Одним из преимуществ Copilot является то, что вам не нужно ничего настраивать, чтобы начать его использовать. Как и второму пилоту, вам не нужно объяснять ему свой самолет. Он так много видел и так много летал, и с первого взгляда понимает, с какими установками он столкнулся.

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

Меньше переключения контекста, лучше фокус

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

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

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

Высокая контекстная чувствительность

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

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

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

Работает даже для неизвестных языков

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

При создании проекта ZenStack мы создали DSL для моделирования схемы базы данных. DSL основан на Prisma ORM, но с несколькими расширениями. Copilot, очевидно, сумел использовать свое знакомство с Prisma и на удивление хорошо работал с языком, который ему не был известен. Это похоже на то, что у опытного пилота Boeing 737 будет неплохая возможность безопасно посадить Airbus 320, даже если он никогда не обучался этому. Некоторые знания можно передать.

Больше, чем код

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

Еще это отличный маркетолог, который с душой придумал мне бизнес-идею, доменное имя и слоган 😂.

Программирование с помощью ИИ — благословение или проклятие?

Я использовал человека-второго пилота в качестве метафоры, и GitHub Copilot во многих отношениях хорошо ей соответствует.

Однако есть большая разница: вы можете (часто) доверить помощнику-человеку выполнение своей работы, но вы не можете доверять второму пилоту с искусственным интеллектом. Дважды проверьте сгенерированный код и обязательно напишите тесты, чтобы покрыть его, прежде чем фиксировать его в своем продукте. Точно так же, как вы не закроете глаза за рулем Tesla, нельзя слепо доверять GitHub Copilot. Просто нашего ИИ еще нет, так что будьте бдительны и контролируйте его!

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

Want to Connect?

I'm the creator of ZenStack, a toolkit that supercharges
Prisma ORM with a powerful access control layer and
unleashes its full potential for full-stack development.
Our goal is to let you save time writing boilerplate code
and focus on building what matters - the user experience.