Несколько дней назад я наткнулся на интригующий заголовок в LinkedIn со смелым заявлением: «Техническая компания стремится повысить производительность программистов на 50 % с помощью GitHub Copilot». Еще более курьезным ситуацию делало то, что автор поста не был программистом. Несмотря на дерзость заголовка, я считаю, что этот вопрос может привести к интересному анализу и обсуждению.

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

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

Это не совсем так…

«ChatGPT (или Copilot), создайте страницу для продажи билетов на шоу в Node.js. Серверная часть должна быть подготовлена ​​в среднем к 2000 запросов в секунду и быть устойчивой к сбоям. Настройте балансировщик нагрузки для распределения запросов между распределенными серверами. Убедитесь, что кэши работают и действительно снижают нагрузку на сервер. Инструментальные инструменты мониторинга в реальном времени. И, конечно же, база данных должна быть кластеризована с использованием хорошей стратегии репликации».

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

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

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

ИИ как резиновая уточка

Одним из материалов, которые значительно расширили мои взгляды на разработку программного обеспечения, стала классическая книга Дэйва Томаса и Эндрю Ханта «Программист-прагматик». В одной из глав рассказывается о любопытной технике отладки: резиновой утке.

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

ChatGPT отлично подходит для общения, и, кроме того, для общения в контексте. Может ли этот искусственный интеллект быть эволюцией резиновой утки Дэйва Томаса и Эндрю Ханта? Уже существуют расширения для Visual Studio Code, которые интегрируются с ChatGPT, используя его как резиновую утку. Вы можете ознакомиться с ними здесь.

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

Суровая реальность

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

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

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

Программисты не просто пишут код. Не бойтесь своей новой резиновой утки, вместо этого используйте ее. И спасибо, ChatGPT, за помощь в составлении этой статьи.