ИИ оглупляет программистов? Исчезнут ли нормальные джуны?

TLDR; - нет, программисты не глупеют от использования ИИ, но вполне могут при неправильном использовании.

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

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

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

Что тут сказать? Когда сейчас жалуются на засилие генеративного ИИ, ведущего к отуплению программистов, как бы забывают, что явление тупости у программистов - давнее, и будет постарше многих жалующихся. Еще в конце 90-х появилось понятие Script kiddies, а с появлением StackOverflow в наш обиход прочно вошло понятие копипастеров, даже не пытающихся понять суть кода, который они копируют.

Генеративный ИИ можно уподобить спортивным тренажерам. Тренажеры в зале весьма полезны, но при неправильной технике новичка они не только не сделают его сильнее, но и могут привести к травмам (или даже пожизненной инвалидности).

Аналогично с генеративным ИИ, особенно в области разработки. Я вижу в нем как возможные перспективы, так и серьезные угрозы. Я верю, что AI Augmented Development - это будущее программирования. Разработчика НЕ заменят, а дополнят, однако его работа станет существенно сложнее (вопреки распространенному мнению, что благодаря ИИ теперь обычные пользователи смогут писать программы).

Бизнес должен четко понимать при этом, какие угрозы исходят от такой разработки. Приведу пример. Представим, что в сетевом стеке некоего вычислительного центра была обнаружена серьезная уязвимость. Уточняю - но дело происходит в начале 80-х где-нибудь в СССР, и этот центр не связан ни с какими остальными. Эту уязвимость по идее надо исправить, но... а кто конкретно ею сможет воспользоваться? Кто вообще за пределами центра о ней знает, а даже если узнает, как он проникнет во внутренюю сеть центра?

Совсем иной расклад в современном интернете, где те же script kiddies c помощью сканеров портов на раз-два обнаружат вашу уязвимость и ею воспользуются. Время, необходимое на латание дыр в уязвимости, сокращается до дней и даже часов.

Что касается разработки, то здесь основная угроза от ИИ, по моему мнению - сокращение времени застывания бетона. Это если на сленге строителей, а если на сленге разработки - ИИ резко повысит вероятность превращения проектов в безнадежные системы костылей. Почему я так думаю?

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

Такая фаза обычно длится максимум два года, а вот проект встает на развилке. Если руководство вменяемое, то в эти моменты обычно начинаются рефакторинги, введение различных best industry practices, и т.д. Если же руководство считает, что все в порядке, два года все нормально было и дальше будет, бетон проекта постепенно начинает застывать. То есть новые фичи добавлять становится все сложнее, и даже небольшие изменения начинают требовать непропорционально много времени. Это из-за того, что код становится все более запутанным и в нем возрастает Accidental Complexity. И постепенно проект превращается в безнадежный.

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

Переработка таких проектов во вменяемые является нетривиальной инженерной задачей. Достаточно упомянуть классическую книгу Michael Feathers "Working effectively with legacy code", для погружения в проблему. А при чем здесь ИИ? А ИИ здесь при том, что благодаря нему можно существенно быстрее довести проект с нуля до такого состояния. Генеративный ИИ по определению способен генерировать массу кода по запросам промпт инженеров и вот тут проблемы:

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

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

Можно ли рассматривать таким образом ИИ? Пока нет. Его наборы промптов и выдача пока недостаточно структурированы, чтобы их можно было рассматривать как тексты литературного программирования. Возможно, когда-нибудь такое время настанет. Тогда программирование в современном понимании исчезнет, но просто потому, что программисты будут формулировать программы в чем-то наподобие мета-языков.

Подводя итог, генеративный ИИ не избавит от программистов, и не делает их тупее. Как это не сделали калькуляторы, логарифмические линейки, да и сами персональные компьютеры. Генеративный ИИ позволяет повысить производительность программистов, но одновременно резко повышает риски при неграмотном использовании. Точно так же в качалках есть тренажеры, которые могут использовать профессионалы, но к которым новичков в принципе подпускать нельзя (например, для проработки дефиниции верха спины).

А что думаете Вы?

@spirit1984
03.04.2025 14:26 UTC
Первоисточник

Комментарии

@pavelsha
03.04.2025 09:42 UTC
0

С декабря по февраль были статьи с таким вопросом. Уже довольно подробно обглодана эта кость..

@pavelsha
03.04.2025 09:46 UTC
0

@pavelsha
03.04.2025 13:21 UTC
0

Манки-кодеры существуют уже много лет... Хапнуть кусок кода и утащить не внимание и не правя в свой модуль... Это классика. AI-хайп просто придал этому явлению налёт чего-то передового и прогрессивного... 🤪

AI-копирайтеры уже практически везде. Ждем, когда это официально переползет в резюме и штатное расписание. 🙁

И да, я писал этот текст, отвечая в комментариях на статью-перевод с кликбейтным заголовком:

Некоторые новые джуны на самом деле не умеют писать код без ИИ-помощников

https://habr.com/ru/news/883560/

@milkyway044
03.04.2025 12:19 UTC
0

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

@Emelian
03.04.2025 13:23 UTC
0

А что думаете Вы?

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

А так, да, ИИ – это пока что только помощник, как, скажем, документация, Интернет, книги, видео и т.д. и т.п. Ибо, действительно, за ним нужен глаз да глаз. Например, смотрите мой диалог с французским ИИ: https://habr.com/ru/companies/bothub/news/891934/#comment_28055496 . Из него видно, что, если вы не в теме, то ИИ вам вполне может скормить не вполне точный результат. А уже сейчас, на Хабре, можно услышать мотивы, типа, нафига мне учиться, если на все вопросы ответит машина? Что сильно напоминает фразу Митрофанушки: «Зачем мне знать географию, если есть извозчики?».

Второй момент, это, как правило, выдается не оптимальное решение, по крайней мере, в бесплатных версиях ИИ. Поэтому, нужно хорошо понимать, что хочется получить и в каком виде.

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

@KEugene
05.04.2025 00:30 UTC
0

Термин "индусский код" появился задолго до AI. Просто теперь это стало доступнее, оперативнее и, возможно, качественнее.

@
05.04.2025 08:25 UTC
0
НЛО прилетело и опубликовало эту надпись здесь
@milkyway044
05.04.2025 11:57 UTC
0

Утрата некоторых навыков — это не конец, а начало нового.

Когда первобытный человек взял палку, чтобы достать плод, он не просто получил плод — он изменился сам. Он стал меньше полагаться на физическую силу и ловкость, чтобы залезть на дерево, но взамен развил способность думать об инструментах: как их выбрать, как улучшить, как применить в других ситуациях. Палка превратилась из случайного предмета в прототип копья, лестницы, рычага — и это запустило цепочку изобретений. Утрата навыка лазать по деревьям не сделала его слабее; она освободила время и энергию для создания более сложных решений, которые в итоге привели к строительству домов, охоте на крупную дичь и даже земледелию.

Главное — не забывать, зачем мы взяли эту "палку" и как она должна служить нашим целям.

@milkyway044
05.04.2025 12:38 UTC
0

LLM всегда предложит усредненный по медиокрам подход, который сработает почти всегда (ибо у конкурентов будет такой же), но когда потребуется что-то неожиданное — наступит п…фиаско.

А что, если вместо "медиокров" наполнить контекстное окно примерами творческих решений? Тогда LLM сможет:

  • Извлечь закономерности из этих примеров.

  • Уловить "оригинальность" через структуру и стиль контекста.

  • Выдать решение, "усредненное" по вашему творческому контексту, а не по общим данным.

Модель адаптируется к задаче через промпт (контекст). Этот механизм называется In-context learning (ICL). Без примеров (Zero-shot) она опирается на предобученные данные — то самое "усредненное по медиокрам". С примерами (Few-shot или Long-context) она сдвигает вероятности в сторону контекста.

С окном в 200k токенов (10k–15k строк кода) вы можете задать десятки творческих примеров, оставив место для ответа (5k–10k токенов). Модель "впитает" их дух и выдаст нечто близкое по уровню.

Наполняя окно творческими примерами, вы переопределяете "усредненное" — теперь это среднее по вашим шедеврам, а не по "медиокрам".

05.04.2025 12:54 UTC
0
НЛО прилетело и опубликовало эту надпись здесь
05.04.2025 13:07 UTC
0

Слишком категорично.

Да, LLM не изобретает, а адаптирует. Полного "неожиданного решения" (как у человека "с высоты птичьего полета") не будет — модель не способна к интуиции, только к экстраполяции.

Но это всё равно шаг вперед от "медиокров".

05.04.2025 15:10 UTC
0
НЛО прилетело и опубликовало эту надпись здесь
05.04.2025 18:17 UTC
0

Честно говоря, @cupraer, конкретных примеров у меня пока нет — я сам использую LLM как 'палку' для рутины ('All You Need Is CRUD'), но ваша критика и мысль про 'медиокров' вдохновили задуматься, как сделать из него 'копьё' через творческий контекст.

05.04.2025 18:59 UTC
0
НЛО прилетело и опубликовало эту надпись здесь
04.07.2025 11:25 UTC
0

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