Достаточно ужасного для вас? Позвольте мне объяснить, откуда я пришел: как для программиста, так и для непрограммиста.

Уже неделю использую продукт под названием GitHub Copilot. Эта бесплатная программа (хотя и очень дорогая в расчете на мои данные) преподносится как ваш дружелюбный программист пары ИИ.

И почему бы это не называть дружелюбным! Посмотри на этого маленького приятеля. Какая милашка. У меня нет разрешения на использование настоящего логотипа Copilot, поэтому придется использовать Octocat на GitHub.

Ваш приятель Copilot появляется, когда вы пишете код, и, ну, он помогает вам писать любой код, который будет следующим.

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

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

Это не то, что делает GitHub Copilot. И поэтому мы не друзья.

Этот пост вот-вот сорвется с рельсов.

Квантовый скачок

Это сложно объяснить аналогиями.

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

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

Мне нужен был код, который просматривал дерево каталогов и находил все подкаталоги, которые сами содержали каталог с именем .git. Это не самая сложная проблема, но это не сутулость.

Я написал на английском описание того, что хочу:

// рекурсивно находим все подкаталоги с папкой git

… И это код, который Copilot написал для меня:

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

Я решил, что хочу подтолкнуть Copilot, поэтому добавил в свой комментарий английское прилагательное: asynchronously. Не зацикливайтесь на конкретном значении этого прилагательного, если вы не уверены, что оно означает - дело в том, что я добавил в свой комментарий английское прилагательное.

Угадай, что? Получилась ужасная асинхронная версия:

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

Я пошел дальше, добавив еще несколько слов на английском языке, and in parallel, в конец моего комментария - опять же, не волнуйтесь, если вы не понимаете деталей.

Это, черт возьми, это сделало. Этот код тоже не совсем правильный, но довольно близкий. Это каркас законченного решения. Если бы я попросил выполнить асинхронный, параллельный, рекурсивный поиск по каталогам, 99% js-программистов также предоставили бы мне неправильный код, хотя, скорее всего, это было бы не так. Это не оскорбление для js-программистов, это свидетельство силы ИИ. И я не преувеличиваю: я опросил сотни инженеров.

И это предварительный технический выпуск инструмента первого поколения.

Почему мы не друзья?

Дружба неправильно характеризует эти отношения.

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

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

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

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

Мне интересно, как новые архитектурные шаблоны когда-либо закрепятся, когда ИИ будет писать код, основываясь на весе своих входных данных. Будет ли у React интересный преемник, когда ИИ попросят выпускать решения, основанные на совокупности тяжелых решений React?

Я обеспокоен невозможностью создания хорошего конкурента для Copilot. Уже заложено столько заделов. У кого столько кода сидит без дела, как у Microsoft + GitHub? Я понимаю, что GANN существуют, но, если я чего-то не упускаю, наиболее привлекательный GANN будет построен с использованием Copilot.

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

Тем не менее, что меня больше всего беспокоит в этой надписи на стене - о чем я раньше думал абстрактно, но никогда не было так конкретно, - это то, как многие личности будут поколеблены. Сколько из нас, программистов, связывают определенную долю своей идентичности или самооценки с умением писать неполноценный код? Я думаю, что это уже случалось раньше, когда автоматизация опустошала другие отрасли. Представьте себе, что машина может делать то, в чем вы всегда были хороши, кроме как лучше вас, быстрее, чем вы, дешевле, чем вы. Уф.

Попасть на борт

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

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

Все на борт.