Взгляд на интеграцию ИИ в программирование от опытного программиста (миллион строк кода я, наверное, написал за всю жизнь). Текст писал я сам, это не мусор от GPT, ИИ здесь только исправил ошибки.
Если дать этот текст ИИ на фактчек, то он может как полностью подтвердить мою статью кучей проверенных фактов, так и полностью опровергнуть, и тоже с кучей фактов, т.е. по сути будет заниматься черри-пикингом - всё зависит от формулировки вопроса. И где же тогда правда? Правда, я думаю, у тех, кто в этой среде годами работает и получает много опыта как разработки с ИИ, так и без него. Т.е. имеет хоть какие-то экспертные знания. В этой статье мнение одного из таких людей. Мнения одного человека, конечно, мало, нужно обобщать опыт сотен людей из разных сфер программирования. Я вношу в это обобщение свой небольшой вклад.

Печально осознавать, что с появлением ИИ работа опытного программиста стала намного сложнее. ИИ не является интеллектом, это по сути комбинатор шаблонов. Какие бы ухищрения люди ни применяли, ни у каких LLM, даже сверхмощных, не появляется здравого смысла, если, конечно, он не заложен в самих шаблонах. Программы не являются просто комбинацией шаблонов, в них заложено множество глубоко продуманных решений, от архитектуры до мелочей, там очень многое выбивается за рамки шаблонов. ИИ не способен к такому мышлению и принятию решений, он может предложить только шаблоны. А чуть в сторону от шаблонов - ИИ перестаёт что-либо понимать. Многие из этих решений практически невозможно предвидеть заранее и записать в ТЗ, они всплывают по мере разработки самим человеком, т.к. человек не просто пишет код, а заодно и продумывает перспективы его развития и использования, и возможные проблемы. Если человек не будет сам писать код, он не будет глубоко продумывать его, а ИИ этого делать не умеет. А значит, использование ИИ добавляет проблем в проект, ведь чем дальше отложено во времени выявление и исправление проблем, тем сложнее их исправлять. Технический долг будет расти, и работать с таким кодом будет сложнее.
Вдобавок к этому ИИ генерирует много мусора, который можно и не сразу заметить, т.к. человек не продумывает код до мелочей, а только делает ревью после ИИ. Мусор тоже добавляет проблем в будущем, и такой код намного сложнее читать и понимать. А делать это придётся во многих проектах, где ИИ использовался для затыкания старых проблем новым мусором и упёрся в потолок своих возможностей.
ИИ может находить ошибки. Это разгружает мозги иногда и уменьшает время последующей отладки. Но ИИ находит в основном очевидные ошибки и не продумывает глубоко поведение программы. Есть впечатление, что и тут он просто сопоставляет код с шаблонами и ищет противоречия шаблонам, а не реально думает над ошибками. Часто ИИ даже в простом коде не видит грубой ошибки и нередко видит ложные ошибки, исправления которых ломают код или вносят много мусора. В этом мусоре кандидатов на ошибки приходится копаться, чтобы найти реальные ошибки. Иногда такое копание окупается, но после этого всё равно целесообразно проверить код самому. Чтобы ИИ лучше искал ошибки в коде, код должен быть шаблонным, хорошо прокомментированным и идеальным, иначе ИИ не увидит за множеством мелочей грубых ошибок. Это требует дополнительной работы по вылизыванию кода и переосмыслению архитектуры.
ИИ может писать автотесты, документацию и комментировать код, но делает он это наот****сь. Он не способен полноценно протестировать код или написать документацию или комментарии со всеми важными нюансами, чётко, понятно и без мусора. Но он сделает это красиво, так что будет казаться, что это качественно. Особенно важны комментарии к коду для лучшей работы ИИ - по сути код должен стать похожим на книгу, где кратко излагаются важные идеи, принятые решения и их причины, шаги алгоритма, если они не очевидны, и т.д. ИИ не способен на такое, т.к. не может отделить важное от неважного, он напишет очевидные вещи, но про критически важный смысл забудет.
И�� может объяснить, как работать с незнакомыми человеку инструментами, но и это понимание ИИ будет поверхностным, и код на основе этого понимания будет некачественным. Часто полезно просто заглянуть в документацию, а не слушать ИИ.
А теперь самое ужасное. От программистов в разработке теперь требуется активное использование ИИ. Это значит, что вместо того чтобы спокойно себе писать код, продумывать его, использовать ИИ когда я сам считаю это целесообразным, и быть уверенным в результате, теперь нужно активно пользоваться генератором мусора - и чем активнее, тем лучше. Я всегда избегал работы с плохим кодом, потому что знаю, какая это сложная, неэффективная и неинтересная работа, а теперь я буду вынужден погружаться с головой в это болото, потому что клиенты этого хотят. Я думаю, некоторые клиенты и сейчас уже понимают, что ИИ не так уж и хорош в долгосрочной перспективе, а значит, и подход к его использованию нужен хорошо продуманный. А это означает, что теперь, помимо создания и развития проекта, программисту нужно заниматься параллельно намного более сложной работой - заставлять эту хромую лошадь делать хоть что-то в проекте качественно, продумывать для него инструкции, тестировать и отлаживать их, продумывать архитектуру проекта так, чтобы ИИ с ней работал эффективно, постоянно редактировать инструкции, т.к. проект всё время меняется. Это будет уже не просто проект, а целая система по автоматическому написанию кода. Junior-разработчика обучать в сто раз легче, чем обучать ИИ, просто потому что он человек и у него есть мозг.
Печально ещё и то, что ИИ сейчас такой, что я не могу использовать его для самого себя, чтобы ускорять работу над личными проектами. А чего-то действительно разумного пока не видно на горизонте.
ИИ может работать автономно, но ввиду всех описанных причин он сначала будет писать код с мусором, потом будет опираться на написанный им же мусор и добавлять ещё больше мусора. Нужно очень активное участие человека во всех процессах разработки, чтобы в этой замкнутой системе не росла энтропия. Одного только присмотра за ИИ и ревью его кода сильно недостаточно. По-хорошему программисты должны продолжать работать, как работали и раньше, используя ИИ как помощника, как дополнительный инструмент, а не как замену ни в каких задачах программирования.
