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

Но подождите, что это за штука с GitHub Copilot? GitHub Copilot — это передовой инструмент, созданный в результате сотрудничества GitHub, OpenAI и Microsoft, в результате которого появился компаньон по программированию со сверхспособностями искусственного интеллекта. Основная идея состоит в том, чтобы предоставить разработчикам предложения по коду в режиме реального времени, автодополнение и даже генерировать целые строки кода или целые функции, и все это на основе кода, над которым вы активно работаете. Это как иметь под рукой парный программист на базе искусственного интеллекта 😉

Я решил углубиться в детали этого инструмента, чтобы понять, что это такое. Я отправился в путешествие, чтобы ознакомиться с ним. Нельзя говорить о том, чего лично не переживаешь, верно? Я начал с чтения официального веб-сайта Copilot и изучения документации Copilot, чтобы получить базовое представление о его функциях. Чтобы получить больше практического опыта, я решил записаться на курс Udemy, где провел пару вечеров в будние дни, погрузившись в практическое обучение. Курс не только предоставил мне краткую информацию, но и дал мне практический опыт, который позволил мне создать простое веб-приложение. Это приложение позволяет пользователям вводить свои доходы и расходы, визуализировать данные с помощью гистограммы и даже загружать диаграмму в виде изображения. Вся эта поездка заняла у меня около трёх часов.

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

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

И вообще, что там с парением?

Мое знакомство с практикой парного обучения произошло около пяти лет назад, когда я присоединился к Thoughtworks. Спаривание мне объяснили как два человека, пишущие код на одном компьютере. Эта концепция была довольно пугающей, особенно потому, что создание пар было для меня новым, и я не привык, чтобы кто-то смотрел, как я кодирую. Будучи интровертом, эта идея была еще более пугающей 🙀 Однако акцент Thoughtworks на объединении в пары означал, что это стало нормой, и я обнаружил, что часто объединяюсь с другими работниками мысли. Поначалу я неизбежно боролся и чувствовал себя крайне неловко. Я чувствовал, что теряю контроль над своим кодом, способность отключаться или мечтать и делать каждый фрагмент кода идеальным в соответствии с моими стандартами 😝

В те первые дни я часто задавался вопросом: «Почему нам нужно все время работать в парах? Разве это не утомительно и не контрпродуктивно?» Создание пары требовало усилий и постоянного общения, в отличие от работы в одиночку, когда не требовалось никаких объяснений, и можно было просто погрузиться в свой код.

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

Мозговой штурм

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

Проверка кода в режиме реального времени

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

Обмен знаниями

Когда мы работаем вместе, мы делимся идеями, методами кодирования и знаниями в конкретной области. Этот совместный процесс гарантирует, что знания не ограничиваются пониманием одного человека, а распределяются между членами команды. Объединение в пары предотвращает разрозненность знаний. Кроме того, когда я погружаюсь в новые или сложные области, создание пар становится быстрым обменом знаниями. Если я работаю над чем-то незнакомым, я объединяюсь с кем-то, кто уже разбирается в этой области. Этот метод более эффективен, чем традиционные сеансы передачи или обмена знаниями. Кроме того, он выявляет крошечные, но важные детали, которые часто остаются незамеченными во время официальных заседаний. Люди, которые много знают о предмете, склонны не замечать этих маленьких, но важных вещей. Вдобавок ко всему, я обычно из первых рук узнаю от своей пары советы и рекомендации о том, как они используют свою IDE или отлаживают, просто наблюдая за их кодом в качестве бонуса 😉

Поддержание фокуса

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

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

Второй пилот против человеческой пары

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

Мозговой штурм

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

Проверка кода в режиме реального времени

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

Обмен знаниями

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

Поддержание фокуса

Работа со вторым пилотом аналогична работе в одиночку, поэтому вы более склонны отвлекаться и блуждать в мыслях. Лично меня предложения Copilot отвлекли, и я часто углублялся в кроличьи норы, проверяя и исследуя его код. В отличие от партнера-человека, второй пилот не способен подвергать сомнению ваши намерения, что приводит к отсутствию направления, когда вы сбиваетесь с пути. Он не может спросить вас: «Что ты делаешь, Май?» 😆

Вердикт

Итак… может ли GitHub Copilot быть моим программистом для пар искусственного интеллекта, как рекламируется? Мой ответ – однозначное НЕТ!

На момент написания этой статьи текущие возможности GitHub Copilot не позволяют воспроизвести истинные ценности человеческого соединения. Вместо того, чтобы предоставлять совместную информацию о человеческих парах, второй пилот иногда увеличивает рабочую нагрузку. Вместо того, чтобы плавно совершенствовать свой опыт программирования, я часто тратил больше времени на отладку и проверку предложений. Если бы я не использовал Copilot, создание веб-приложения заняло бы около 2,5 часов вместо трех часов. Несмотря на то, что Copilot ускоряет работу, сокращая время, которое вы тратите на чтение документации или поиск в Google, вы обычно тратите больше времени на чтение его предложений, пытаясь понять их смысл и проверить их.

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

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

Загляните в мой репозиторий, если хотите узнать, как на самом деле выглядит Copilot и как я использовал его в паре 😆