Как стать автором
Обновить

AI делает разработчиков тупее

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров5.9K
Автор оригинала: James Anderson
Графические материалы взяты с freepik, постер носит иллюстративный характер
Графические материалы взяты с freepik, постер носит иллюстративный характер

Всем привет! Предлагаю вашему вниманию перевод статьи «AI is Making Developers Dumb». Перевод выполнен человеком, а не LLM :)

Тема статьи мне очень близка, соответствует личному опыту. Ещё я бы добавил, что всё сказанное в принципе справедливо для любой сферы деятельности.


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

Я утверждаю это не на пустом месте. Со временем у вас развивается зависимость от инструментов LLM. Это приведёт к тому, что вам будет трудно работать без AI-помощника.

Я занялся разработкой ПО, потому что мне нравится что-то создавать и разбираться, как это работает. Это значит, что я получаю удовольствие, кропотливо набирая блоки кода на своей клавиатуре.

Использование LLM-ассистента в рабочем процессе лишает этого. Вместо радости от самостоятельного решения проблем, теперь нужно просто попросить LLM предложить дополнение кода.

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

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

Лучшие инженеры, которых я встречал —  люди, которые могут в свой выходной часами просидеть над улучшением ПО или созданием своей тулзы. Чёрт возьми, вот откуда берутся новшества и достижения. Вы не сможете улучшить производительность ПО без чёткого понимания как работает система. Иначе вы просто тыкнете пальцем в небо.

Есть такое понятие «Отставание Второго Пилота» (англ. «Copilot Lag» ). Оно описывает состояние, когда после каждого действия разработчик останавливается, ожидая подсказки, что ему делать дальше. Самостоятельности мышления больше нет, осталось только ожидание подсказки от AI, что нужно делать дальше. Это сродни первым шагам новичка — полагаться на более опытных коллег, которые направляют твои действия и понимают, что нужно делать дальше.

Это реально.

Вечность назад я использовал «Github Copilot» в «VSCode». Когда я оглядываюсь на то время, то поражаюсь, что не растерял ещё больше знаний.

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

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

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

После этого я перестал пользоваться LLM-аccистентами для кодинга. И очень рад, что сделал это.

В качестве примера: мне очень интересна сфера компиляторостроения. В то время я пробовал работать по книге «Writing An Interpreter In Go» Thorsten Ball. Но это была пустая трата времени. Вместо изучения матчасти из книги, Copilot просто генерировал мне код. В самом деле, вы можете почувствовать себя очень крутым, написав парсер. А сможете это повторить, выключив Copilot? Наверняка нет. Вы так же теряете возможность изучить концепции типа «управление памятью» или «Data Oriented Design», потому что Copilot даст вам код, который по его мнению, может сработать, вместо того чтобы самостоятельно исследовать тему и разобраться в деталях.

На самом деле мы подходим к другой стороне вопроса. Исследование. На этот раз с более позитивным отношением к AI.

Верно. Большие Языковые Модели полезны. Они подобны поисковой системе. Мы часто обращались к Stackoverflow за помощью в программировании. Поскольку Большие Языковые Модели обучены на всех этих данных, они могут стать эффективным инструментом для получения дополнительной информации по определённой теме. Но только если вы будете использовать их, имея пытливый ум, и не будете им слепо доверять.

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

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

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

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


От переводчика

Я добавлю немного своих мыслей: я пошёл немного дальше автора и генерировал функции и целые программы (и сайты) с помощью «DeepSeek», просто давая описание того что мне нужно. В какой-то момент это действительно дало прирост производительности и у себя в голове я уже рисовал картину, как 1 инструмент заменит мне целую команду напарников. Так длилось до тех пор, пока я не увидел "The server is busy".

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

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

Кстати почему пилот второй, если на самом деле ему достаётся ведущая роль?

Теги:
Хабы:
+9
Комментарии106

Публикации

Ближайшие события