Разработчик из Meta: код, написанный AI, превращает кодовую базу в карточный домик
AI usage generates a fragile codebase

Автор, уволенный из Meta и теперь работающий в другой крупной tech-компании, где от него требуют генерировать 100% кода через AI, разбирает, почему такой подход делает продукт хрупким. AI отлично решает задачи в пределах своего контекстного окна, но не видит долгосрочных последствий: пишет поверхностные тесты, усложняет код, снижает понимание кодовой базы у людей и не оставляет времени на качественное ревью. Итог — больше инцидентов, дольше восстановление и ошибки, заметные только пользователям.
AI склонен очень хорошо решать задачи, которые помещаются в его контекстное окно, но он совершенно не замечает долгосрочных проблем, которые невозможно понять в этих относительно узких рамках.
- basilgohar
Думаю, смотреть на использование ИИ для кода и разработки с инженерной точки зрения — это путь к разочарованию. Я software-инженер с более чем 20-летним стажем и полностью перешёл на использование ИИ для своего кода на 100%. Считаю это бесценным — практически единственным способом оставаться востребованным и вести бизнес в наше время. Буду рад, если кто-то со мной не согласится, потому что я не хочу оказаться правым впервые в жизни.
Тем не менее, мой опыт говорит, что корпоративная и бизнес-разработка редко когда была связана со стабильными или надёжными кодовыми базами. Мы, инженеры, и небольшая доля компетентных engineering-менеджеров, и исчезающе малое число директоров боролись с бизнес-интересами, чтобы гарантировать приоритет качества в коде, но это всегда была борьба с ветряными мельницами, и нас часто наказывали за то, что мы тратили слишком много времени на качество и дизайн.
Жёсткий график релизов — анафема для качественного кода, потому что его нельзя уложить в таймбокс.
Так что ИИ — просто продолжение этого. Пытаюсь ли я гарантировать, что мои агенты проектируют код, который я счёл бы хорошим? Да, абсолютно! Но я полностью передал это на аутсорс и обнаружил, что они также вполне способны исправлять собственные ошибки. С помощью ИИ я достиг гораздо большего, чем когда-либо мог в одиночку или даже с командой, так что, полагаю, мне просто нужно применять свой опыт и навыки в управлении и архитектуре, а не в написании строк кода.
Только время покажет, как это развернётся.
Wallaahu aʿlam.
- solatic
Думаю, мы увидим больше усилий в области статического анализа / линтеров.
> Например, я видел, как один из лучших программистов в моей команде пытался влить код, который использовал javascript-события для CSS-эффектов при наведении мыши вместо селектора :hover, что является совершенно немасштабируемым способом написания mouseover.
Ладно, может ли статический анализ найти JS-события mouseover и завалить линтер в результате? Возможно, в прошлом это было бы излишним или срабатывало бы очень редко, если вообще когда-либо, но в кодовой базе, написанной ИИ, это помогает поймать такое и указать агенту-обвязке переписать это.
- monjerry
Качество кода не проблема.....пока не станет ею. Все будут счастливы, если кажется, что всё работает и движется быстро, и только когда вы начнёте видеть симптомы вроде невозможности что-то изменить, не сломав существующие функции, или даже роста количества токенов, сжигаемых на чтение сложных кодовых баз, вы начнёте заботиться о качестве кода (которое, как я полагаю, теперь люди просто попросят ИИ попытаться исправить собственный бардак).
- peterbell_nyc
Я не уверен, что статьи «ИИ генерирует...» хорошо сохранятся.
Мой первый вопрос был бы: какие именно состязательные ревью и детерминированные гейты написал автор, чтобы охватить те аспекты сопровождаемости (отсутствие DRY, цикломатическая сложность, неясные имена, плохо спроектированные потоки и т.д.), которые его волновали?
Не поймите меня неправильно. Когда я нёсся со скоростью 200 PR в день (личные проекты — я бы не стал навязывать их другим), я довольно быстро соорудил большой комок грязи, но поскольку я перегенерирую своё хозяйство, (а) модели стали немного лучше, но (б) я добавляю гораздо больше строгости вокруг верификации (корректность, производительность, безопасность, эксплуатационные расходы и сопровождаемость). Это нелёгкая проблема, но мне кажется, что это инженерная задача, а не спекулятивная ракетостроение.
Я прекрасно понимаю, что многие кодовые базы, сгенерированные ИИ, действительно страдают от большего числа инцидентов и меньшей сопровождаемости, но, думаю, важно различать, что является распространённым, а что возможным, поскольку решение для одного — повышение строгости вашей верификации, тогда как решение для другого — либо принять дерьмовый код, либо отказаться от LLM.
- jdpigeon
Эти правила настолько верны, что кажутся очевидными. Пришло время начать давить на руководство, чтобы донести до них эти правила.
- happy_dog1
Здесь чистая спекуляция, но вот мысль, которая приходит мне в голову. Я часто видел, как мебель используют как аналогию того, как быстро автоматизированный процесс может вытеснить ремесленников, но, думаю, в каком-то смысле это может быть аналогией того, как ремесло может продолжать выживать и процветать даже после автоматизации. Конечно, IKEA продаёт ГОРАЗДО больше мебели, чем Ethan Allen; но мебель ручной работы Ethan Allen гораздо более высокого качества и продаётся по премиальной цене.
Потребители выигрывают во всех отношениях. Те, кто может себе позволить, покупают высококачественный продукт ручной работы; большинство, которые не могут, получают дешёвый доступ к мебели приемлемого качества.
Это чистая спекуляция, но мне интересно, будет ли software постепенно развиваться таким же образом с доступностью ИИ. Для многих базовых задач потребители смогут в основном писать собственное software с помощью какого-нибудь инструмента ИИ; оно может быть невысокого качества, но, по крайней мере, будет дешёвым и быстрым в производстве, и это значительно снизит барьер для доступа среднего пользователя компьютера к тому, что он хочет делать на своей машине. Тем временем гораздо более узкий нишевый рынок высококачественных инструментов, которые хотя бы частично сделаны вручную экспертами для удовлетворения какой-то особой потребности, где производительность или качество опыта имеют решающее значение, будет продолжать процветать. В любом случае, в этом сценарии я предполагаю, что важность и заметность SaaS будет постепенно снижаться.
- yodsanklai
Я не думаю, что это теперь имеет значение. Software становится чёрным ящиком, и агенты заставляют его работать, если только вы можете предоставить разумную спецификацию того, что хотите сделать, и немного надзора и указаний.
Сейчас они не очень хорошо следуют хорошим принципам software-инженерии. Они делают работу, с многословным кодом, множеством дублирования, утечками абстракций, бесполезными юнит-тестами и так далее.
Это проблема? Можно подумать, что в долгосрочной перспективе это будет так, что ИИ не сможет справиться со сложностью, которую он ввёл, но я не особо волнуюсь. Большинство software не такое уж большое, и агенты с каждым днём становятся лучше. И если вам действительно важен дизайн, не так уж сложно поручить вашему агенту следовать вашим стандартам.
Хотел бы я, чтобы это было не так и чтобы я мог оправдать свой опыт и экспертизу ещё на несколько лет, но факты налицо.
- jasode
Я не не согласен со статьёй, но она может создать у некоторых читателей впечатление, что написанный вручную код до ИИ не был хрупким.
Вот известный комментарий о кодовой базе Oracle RDBMS в 25 миллионов строк: https://news.ycombinator.com/item?id=18442941
Любая кодовая база большой компании с миллионами строк превращается в подобное состояние. Маленькая кодовая база начинается с чистой концептуальной целостности. Затем она неизбежно разлагается в непостижимый спагетти-код по мере добавления новых людей. Разные причины, включая то, что поздние разработчики заботятся о коде меньше, чем первоначальная команда разработчиков, дедлайны, избегание рефакторинга из-за страха что-то сломать и т.д.
Если вы не хотите, чтобы ИИ создавал хрупкий код, вы должны применять те же гейты качества, которые применялись бы к написанному вручную коду до ИИ, чтобы всё оставалось чистым. Большинство компаний этого не делают.
- a34729t
Одна из вещей, которые ИИ сокращает, — это любопытные инженеры, копающиеся в кодовой базе, что является отличным способом найти мёртвый код, неоптимальные структуры и т.д. С ИИ всё это исчезло.
- hackersnooze1
Качество кода больше не волнует почти никого примерно с полгода назад. Software теперь чёрный ящик, привыкайте.