habrahabr

Сгенерированный ИИ код сделает вас плохим программистом

  • пятница, 1 ноября 2024 г. в 00:00:11
https://habr.com/ru/companies/ruvds/articles/853996/

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

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

Причины не использовать сгенерированный ИИ код


▍ Вы забираете у самого себя возможность учиться


В самом начале эпохи развития Интернета возник уничижительный термин «скрипт-кидди», обозначающий людей, «взламывающих» компьютерные системы, не понимая, что и как они делают. Скрипт-кидди — это человек, скачавший инструмент или скрипт, позволяющий взломать пароль, получить доступ к чужому компьютеру, выполнить дефейс веб-сайта или ещё какое-то зловредное действие. Если скрипты срабатывали, то скрипт-кидди начинали считать себя настоящими хакерами.

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

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

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

▍ Навыки, которые у вас уже есть, могут атрофироваться


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

Возможно, вы считаете, что это нормально. В конце концов, сениор-разработчики делегировали скучные задачи джуниорам задолго до того, как у Сэма Альтмана зародилась сама идея LLM. В чём же разница?

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

Во-вторых, в разработке ПО (и в жизни в целом) есть фундаментальный факт: если вы достаточно долго чего-то не делаете, то начинаете забывать, как это делается. Если вы уже давно работаете в нашей отрасли, вспомните свой первый изученный язык программирования. Для меня это был Pascal. Не думаю, что смогу сегодня написать хотя бы одну синтаксически правильную строку на Pascal, не говоря уже о минимально полезной программе. Другой пример: попробуйте программировать целый день без подсветки синтаксиса и автодополнения, чтобы ощутить, насколько неуверенно вы чувствуете себя без них. Я обнаружил, что из-за этих «помощников» мной утеряна большая часть знаний, ведь они избавляют от необходимости запоминания даже чрезвычайно простых задач. Представьте, насколько жалкими станут ваши навыки, если ИИ полностью избавит вас от необходимости писать код. Если вы перестанете писать собственный код, пусть даже и скучные его части, то потеряете сноровку и постепенно начнёте забывать тонкости. Кодинг интересных частей усложнится, потому что вы потеряете фундамент, на котором построены продвинутые навыки.

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

«Ух, щас как накачаюсь!»

▍ Вы можете оказаться зависимыми от вашей собственной замены


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

Это хищническое поведение со стороны таких компаний. Подобно религиозным культам, индоктринирующим с самого рождения, чтобы обеспечить постоянный приток новых членов, ИИ-компании знают, что, подсадив разработчиков на крючок ещё до того, как те откроют текстовый редактор, они получат пожизненные подписки на свои услуги. Я уверен, что они понимают бесперспективность попыток привлечь опытных разработчиков, поэтому берутся за будущие поколения, надеясь на появление армии зависящих от ИИ код-кидди, не умеющих написать «Hello World» без долгой беседы с чат-ботом.

«Ребята, хотите стать кодерами? Первая доза бесплатно!»

Я уже говорил, что многие из нас уже зависят от многофункциональных сред разработки, имеющих такие возможности, как подсветка синтаксиса, анализ кода и автоматический рефакторинг. Вы можете задаться вопросом, чем от них отличается ИИ. Ответ довольно прост: IDE — это инструменты, в конечном итоге помогающие вам быть более эффективными и писать качественный код; ИИ — это инструмент, цель которого — полностью заместить вас. Корпорации агрессивно продвигают и с радостью приветствуют ИИ-инструменты не потому, что те, по их мнению, превратят сотрудников в разработчиков сениор-уровня с большими зарплатами. Нет, они в нетерпении ждут будущего, в котором их разработчиков сениор-уровня с большими зарплатами заменят дешёвыми, зависящими от ИИ код-кидди. Или ещё лучше — полностью заменят ИИ, когда наша оплата подписки за привилегию обучения этих ИИ уже будет не нужна.

▍ Небольшая ремарка: принадлежит ли вообще вам сгенерированный ИИ код?


Я не юрист, но подписан на Hello Future Me, и у меня сложилось чёткое ощущение, что существуют, мягко говоря, небольшие разногласия относительно того, кому принадлежат сгенерированные ИИ результаты. Пока обсуждения в основном затрагивают художественные работы, но нет причин предполагать, что они не коснутся и кода. (Кроме того, если вы такой же чудак, как и я, то наслаждаетесь программированием как формой художественного самовыражения.)

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

Честно говоря, я не знаю ответов на эти вопросы, но мне бы не хотелось раскошеливаться на юридические расходы, когда настанет время отвечать на вопросы в суде. А вам?

▍ Ваш код не будут уважать


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

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

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

«Создай произведение искусства».
Бж-ж-ж.
«Я художник».


Я понимаю, что приложение для составления графика стирки, которое вы пишете для отеля, или любые другие задачи из вашей повседневной работы вряд ли будет изучать Фабьен Санглар как пример изящества кода, но плохо ли, если вы будете на это надеяться? Разве ощущение гордости за свою работу не делает её приятнее? Как вы можете уважать собственный код или ожидать, что его будет уважать кто-то другой, если вы даже не писали его?

Причины использовать сгенерированный ИИ код


▍ Вы мазохист, предпочитающий выполнять ревью кода, а не писать его


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

Чем больше кода будет генерировать за вас ИИ, тем больше ваша работа будет смещаться в сторону ревью кода. Возможно, вам это понравится — некоторые любят странное, не осуждаю их.

▍ На самом деле вы не хотите быть программистом


Если вас не интересует обучение кодингу, и вы используете ИИ, как фрилансера, давая ему задания типа «напиши мне игру про гонки» или «это ужасно, вот здесь улучши», то всё написанное выше к вам не относится.

Честно говоря, я считаю, что именно о таком будущем и мечтают гигантские корпорации: о мире, где их тщательно огороженные экосистемы — это инструмент не только для распространения приложений, но и для их создания. У вас появилась идея нового приложения? Просто скажите ИИ App Store, что вам нужно, и он изрыгнёт результат прямиком в ваше устройство, позволив корпоратам получить все 100% оплаты подписки — такая ситуация гораздо лучше, чем жалкие 30%, которые платили эти противные разработчики приложений, посмевшие утверждать, что привносят какую-то ценность.

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

▍ Вы верите, что мы входим в новую эпоху «постработы» и доверяетесь корпорациям, которые будут вести нас в неё


В том маловероятном случае, если вы уже глубоко погрузились в культуру Kool-Aid и не забросили чтение статьи спустя пару абзацев, то мне вам уже практически ничего не остаётся сказать. Я бы порекомендовал почитать «1984», «451 градус по Фаренгейту» или «Лавину» — вероятно, вам понравятся образы будущего из этих книг, и вы будете знать, чего вам ждать.

«Вам, молодёжи, очень уж легко живётся! Мы начинали программировать с перфокарт».
«Лол. Что такое перфокарты?»
«Вам, молодёжи, очень уж легко живётся! Нам приходилось программировать при помощи людей».
«Что такое люди?»


Telegram-канал со скидками, розыгрышами призов и новостями IT 💻