16.06, ООО «ВК»
16.06, ООО «ВК»
16.06, ООО «ВК»

Copilot сильно заблуждается: как ИИ убивает код

Манифест, в котором отдаем дань трушным программистам.

318 открытий2К показов
Copilot сильно заблуждается: как ИИ убивает код

Многие говорят, что GitHub Copilot — лучшая нейронка для работы с кодом. Но автор статьи The Copilot Delusion с этим не согласен. Разбираемся, что хотел сказать разработчик и действительно ли Copilot сильно заблуждается.

Дисклеймер от автора: пост написан в мае 2025 года и отражает текущее состояние ИИ-инструментов в программировании. Утверждения о некомпетентности ИИ, вероятно, будут со временем становиться менее актуальными. Чего нельзя сказать о вопросах, касающихся разрушения радости программирования и понимания человеком кода — их будут обсуждать еще больше.

Мы не стали переводить статью дословно, а лишь сохранили авторский замысел.

Мой коллега, программист

Представьте себе коллегу. Он печатает быстро — это первое, что бросается в глаза. Настолько быстро, что кажется, будто клавиши должны ему денег. Он лихо вскакивает с места, срывает с вас клавиатуру в середине вашей утончённой логики и вставляет туда решение, вырванное из комментария на Stack Overflow 2014 года. Как будто вы не архитектор системы, а стенографист его вдохновения.

— Подожди, у меня идея!

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

— Я добавил useEffect, который всё перезапрашивает, когда что-то меняется. Круто, да?
— Зачем? Что ты сделал? Почему? — Оно починило штуку. Штука не работала. А теперь работает.

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

И все бы ничего, если бы это был обычный коллега. Его можно было бы научить, направить, в конце концов — уволить. Но этот персонаж встроен в вашу IDE. Он называется GitHub Copilot. Или Claude Codex. Или OpenAI LLM Ultra Max Pro с начинкой из стеклянного пузыря и пяти миллионов постов с Hacker News.

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

Когда ты протестуешь — тебя спрашивают, почему ты больше с ним не работаешь.

— Он печатает быстрее тебя! — говорят они.

Конечно, печатает. Как кот, пробежавшая по клавиатуре. Но ты ведь не сажаешь кота писать код на прод, правда?

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

Второй пилот в кабине самолёта знает системы, проходит симуляции, сдает экзамены — он помогает капитану, а не заменяет его. GitHub Copilot же — это призраки компиляций тысяч чужих решений без контекста, разбора и ответственности. Он шепчет:

Я это где-то видел. Значит, сойдёт.

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

Но стоит налепить логотип Microsoft, внедрить в каждый редактор кода, и перед нами продукт, от которого ждут продуктивности вместо зрелости. Инструменты — это хорошо, но иллюзии — едва ли.

Слово предоставляется стороне защиты

Прежде чем мы снова зажжем костер критики и бросим туда очередную порцию кода, давайте кое-что проясним: GitHub Copilot не полностью бесполезен.

Представьте: вы молоды, только что открыли C++. Синтаксис — наравне с клингонским. Пугают слова типа template, unique_ptr, RAII. Спрашиваете у Copilot — и внезапно получаете четко оформленный пример: шаблоны, умные указатели, красивые циклы.

Конечно, Copilot не расскажет о подводных камнях:

Эй, shared_ptr может утечь, если ты раскидываешь raw_ptr как гранаты.

Он не укажет, где зарыта семантика исключений или как тонко обсуждают move и copy ветераны форумов. Но если вы точно знаете, чего хотите, Copilot станет идеальным стажером: работает без жалоб, в любое время суток, хоть в 3 часа ночи, даже если вы просите шаблонную метапрограмму.

Идеи

Copilot особенно полезен, когда вы проектируете системы и раскладываете архитектуру — решаете, где будут очереди, кэш и так далее. И задаете вопрос:

Где оно может сломаться?

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

Кажется, вы на нуле

Вы не мертвы, но мозг в режиме энергосбережения. Надо просто превратить объект в строку. Или составить банальный LINQ-запрос. Вы не хотите вращать матрицу условий в голове.

— Copilot, сгруппируй по X, просуммируй Y, отфильтруй по Z. — Сделано, босс.

Вы не доверяете, а проверяете. Но зато не тратили 15 минут на механическую сборку методов.

Когда Copilot спасает

Вы читаете математическую статью, автор которой — безумный гений с тремя докторскими. Надо перевести идею в код — сил нет, но Copilot нарисовал модель. Или — классика: вы унаследовали код. Ад замыканий, переменные d или foo, комментарии из разряда «it's magic». Вы спрашиваете:

— Copilot, что делает этот код?

И вы можете получить вполне адекватное объяснение.

Вердикт: невнимательный стажер

Copilot — не помощник-сеньор. Он обычный стажер, но со своими фишками и тараканами:

  • Отличная память на синтаксис.
  • Быстро набрасывает идеи.
  • Хорош в шаблонах и заготовках, если четко сформулировать запрос.
  • Ужасен в нюансах.
  • Бесполезен без надзора.
  • Потенциально опасен, если вы отвернётесь на 30 секунд.

Ты же программист

Помни: ты должен любить писать код, а не указывать какому-то пускающему слюни искусственному стажеру, что делать (он при этом даже не помнит, что такое std::move). Ты должен хотеть строить — даже если система собрана из палок и чего-то еще.

«Но мне нужен ИИ только для шаблонного кода», — кричишь ты. Задумайся: если каждый день пишешь один и тот же шаблон — автоматизируй его сам. Создай библиотеку, придумай макрос и верни себе достоинство. Если ИИ делает за тебя «самое скучное» — что тогда остается тебе? Крестиком вышивать?

ИИ не может создавать что-то новое — он знает только то, что придумали еще в Юрском периоде. Это просто автодополнение с манией величия.

Если хочешь настоящую связь с кодом, вгрызайся в нее: борись с segfault'ами в три часа ночи; ходи кругами по квартире, бормоча про арифметику указателей; пиши конспекты, а не фоткай слайды, делая вид, что и так сойдет. Когда ты отдаешь мышление на аутсорс — ты отдаешь туда и обучение. Ты не знаешь свой код — ты его нянчишь.

И давай поговорим о качестве твоего кода — потому что лучше оно не становится. Большинство инженеров и так пишут раздутый, абстрагированный, медленный код, который сжигает CPU. Чистый код? Ха! Ты забыл, что машина имеет значение. ИИ не знает, что такое локальность памяти, он не чувствует кэш и никогда не развернет цикл и не заметит ложное разделение в твоей атомарной структуре. Он обучен на коде, который уже оскорбляет кремний.

Проблема не только в лени. Проблема — в деградации. Инженеры перестают исследовать и улучшать. Ещё один слой абстракции. Ещё один ленивый fetch внутри render loop. В итоге твоя жизнь — сплошной технический долг, и расплачиваются за это пользователи. Миллисекунда за миллисекундой, секунда за секундой, каждый клик — это налог на твоё безразличие. 50 миллионов пользователей каждый день теряют по 3 секунды из-за ненужных лагов, потому что тебе лень было дописать код самому? Суммарно это почти 5 лет потраченного впустую времени.

И это ещё не говоря о «copilot» в названии. Настоящий второй пилот — это товарищ. Он прошел сертификацию, может посадить самолет, если ты вырубился. Он учится и тренируется. А GitHub Copilot — это скорее тип, который наиграл 200 часов в Arma 3 и теперь уверен, что может посадить Boeing 747. Он читал инструкцию. Один раз. На китайском. Задом наперёд. И теперь орёт тебе через плечо: «Дай, я этот кусок кода влеплю, я видел его в комментах на Slashdot!».

В этот момент ты не со вторым пилотом работаешь. Ты играешь в русскую рулетку с зависимостями. Хочешь быть настоящим программистом? Думай головой. Уважай машину. Или убирайся из кабины.

Компьютер = машина

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

Машина — реальна. Кремний — реален. DRAM, L1, ложное разделение, предсказатель ветвлений, подбрасывающий монетку — все это реально. И если тебе не все равно, ты можешь работать с этим. Можешь заставить свои программы скользить по памяти, изящно проставлять prefetch'и, вручную наклепать стратегию аллокации, после которой malloc будет выглядеть как игрушка. Можешь знать, когда пришло время хрустнуть пальцами, и влепить пару грязных, но прекрасных строк inline-ассемблера, чтобы вколоть стероиды в щеки твоей программе.

А что бот? У него — ноль понимания. Он не отличает page fault от бумажного пореза, легко придумывает модель памяти, не умеет профилировать, не понимает flamegraph. Он просто копирует советы парня из треда на StackOverflow 2008 года, где тот гонял бенчмарки на Pentium 4 с 512MB RAM. И скажет: «Это оптимально», — будто знает хоть что-то. Но это вообще не так.

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

Эти пользователи отдали твоей компании деньги — свою зарплату — в обмен на инструмент. Не на кафкианскую дыру во времени. Не на раздутое, лагающее нечто, которое душит железо. Они не платили за то, чтобы ты сидел в коворкинге и давил tab вместо того, чтобы писать.

Если ты уже расселся на своем офисном троне, сжигаешь венчурные деньги по четверти миллиона в год — можешь хотя бы сделать вид, что тебе не все равно. Это профессия. Гордись тем, что ты делаешь.

Ты формируешь вкус через действие и боль, через написание рутин в понедельник, их переписывание во вторник, и осознание в среду, что они все ещё ниже среднего. Ты не нарабатываешь вкус, спрашивая у Clippy 2025 года, как делать свою работу.

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

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

Говорят:

«Эй. Всё ещё не летит. ... ... ... Всё ещё не летит. ... ... ... Не летит. Почини, пожалуйста».

И к чему же мы пришли

Худшее в ИИ и его повсеместной доступности — мучительная смерть хакерской души от удобства, кнопочек и ботов.

Настоящий ужас не в том, что ИИ отберёт у нас работу. Ужас в том, что он привлечёт в эту сферу тех, кто никогда не хотел этой работы и кому не важно качество. Он уничтожит и без того крошечный порог входа, который раньше хотя бы заставлял людей попытаться понять, как работает флоу. Придут вампиры с мечтами о SaaS и Web3 в шапке LinkedIn. Пустые оболочки, для которых терминал — не рубеж, не исследование, а просто лопата, чтобы качать деньги из инвесторов. Они будут пускать слюни на свой GitHub Copilot, клепая React-CRUD без задней мысли. Они форкнут VS Code в десятый раз, чтобы продать ту же самую мечту другому такому же заблудшему ребенку.

Раньше здесь была магия. Дети просиживали ночи в IRC с красными глазами, пытаясь нарисовать куб в OpenGL, не убив при этом будущее segfault'ом. Им было не все равно. Они ставили Gentoo на тостер, просто чтобы проверить, заработает ли. Они знали запах сгоревших стабилизаторов напряжения и точно помнили строку ассемблера, где Doom выдавил свои 10 FPS на калькуляторе. Это были художники.

А теперь мы строим мир, где это любопытство пресекается прямо на пороге. Какой-то бедолага, рожденный быть великим, будет восемь часов в день ревьюить сгенерированный патчсет. А потом его восхищение окаменеет и превратится в апатию. Терминал станет Excel'ем. Отладчик — гробом.

Потому что ты не знаешь того, чего не знаешь. Вот в ирония судьбы. Мы наводним индустрию людьми, которые уверены, что они хороши, потому что их бот прошёл CI. Они будут плыть по течению, самодовольные, пока настоящие — голодные, страстные, упертые. Но их будет пережевывать машина, которая больше не ценит суть, а только результат. Только «токены в секунду».

А хуже всего — мы нормализуем эту посредственность, бетонируем ее в инструментах и возводим в статус best practice. В итоге — увековечим этот раздутый, медлительный, абстрагированный донельзя кошмар как вершину софта.

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

Если так случится, если последних настоящих программистов утопят в море карьеристов с горячими клавишами — будет очень жаль тех гениев, которые придут после нас.

Доверишь мышление боту — и мы все пропали.

Следите за новыми постами
Следите за новыми постами по любимым темам
318 открытий2К показов