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

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

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


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


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

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

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

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

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


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

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

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

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

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

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

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


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

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

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

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

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


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

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

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

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


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

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

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

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


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

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


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


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

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

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


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

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

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

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


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

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


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

Комментарии (25)


  1. ReadOnlySadUser
    28.10.2024 13:14

    Гсди, да успокойтесь уже :)

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

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

    Основных стратегий две:

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

    2. Освоить ИИ-инструменты на уровне, который делает вас конкурентноспособнее остальных. Если считаете абсолютным правило "брать код ИИ - это отстой" - вы скорее всего проигрываете. Впрочем, не обязательно.

    Перестаньте уже строчить статьи с одинаковым содержанием :)


    1. DarthVictor
      28.10.2024 13:14

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

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

      Сельскохозяйственный рынок ЕС де-факто закрыт для стран из-за пределов ЕС. США закрывает рынок от Китая.

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


  1. Cyrus
    28.10.2024 13:14

    Много идей рождается в процессе написания рутинного кода. В какой-то мере даже умный автокомплит и генерация кода иногда мешают – не происходит такой нужной прогрузки кода в мозг, которая помогает находить неочевидные решения.


    1. nikis05
      28.10.2024 13:14

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

      Писать много кода должно быть тяжело. Лень от написания бойлерплейтов должна перевешивать лень от вынесения абстракций.


  1. AlekseyPraskovin
    28.10.2024 13:14

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

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

    Ровно то же самое относится к генеренке визуала и текста


    1. MarkAntoniyIII
      28.10.2024 13:14

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


  1. Abyss777
    28.10.2024 13:14

    Простите, но я честно не понимаю хайпа вокруг ИИ. Это же всё просто галлюцинации либо "вода".

    Картинки это бред с 7 пальцами или рунами вместо букв.
    Ответы на бытовые вопросы это просто вода.
    Код нерабочий, за ним всё надо перепроверять, а нах тратить время если всё равно придётся разбираться.

    100 % моих попыток его использовать были провальными.


    1. vlmonk
      28.10.2024 13:14

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


      1. PeterFukuyama
        28.10.2024 13:14

        Понять бы еще необходимость участия в этой борьбе, если дело дойдет до этого.


    1. ciiz
      28.10.2024 13:14

      Семь пальцев это уже лучше чем ничего.


  1. MarkAntoniyIII
    28.10.2024 13:14

    Все так, но что если условный ChatGPT рассматривать как язык программирования сам по себе? Язык программирования, код (Промт) которого автоматически переводится на другой язык программирования? Все таки писать промты тоже надо уметь. Я в детстве читал завалявшиеся у нас дома старые номера журнала "Наука и жизнь". Там был раздел про программирование и там помню была статья (может и не одна, даже) где автор сокрушался что мол начинающие программисты не хотят осваивать ассемблер, а ведь без него настоящим (тм) программистом не стать! Так мне кажется и тут.


    1. bromzh
      28.10.2024 13:14

      что если условный ChatGPT рассматривать как язык программирования сам по себе?

      Пока в таком языке уж очень много UB


      1. MarkAntoniyIII
        28.10.2024 13:14

        Пока да. Но практически все языки были несовершенны в своих первых версиях.


  1. markinmarch
    28.10.2024 13:14

    Нейронки могут заменить творческие профессии, но не технические.


    1. MarkAntoniyIII
      28.10.2024 13:14

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


  1. wolodik
    28.10.2024 13:14

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


    1. lobotomic
      28.10.2024 13:14

      И поскольку он недостаточно детерминирован, нам приходится писать на ЯП, а не промпты.


  1. mOlind
    28.10.2024 13:14

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


  1. spirit1984
    28.10.2024 13:14

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

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

    А также автор явно запамятовал, как выглядели разборки с отладкой в те времена и чтение 100500 бумажных справочников при написании программ:

    Маргарет Хамильтон
    Маргарет Хамильтон

    И насколько это было медленно, на самом деле.


  1. tcapb1
    28.10.2024 13:14

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

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


    1. Miller777
      28.10.2024 13:14

      Вот да. Всегда прошу объяснить подробно, если чего-то в сгенерированном коде не понимаю. Иногда узнаю что-то новое, иногда прошу разъяснить то, что знаю нетвердо.

      Как продвинутый справочник - очень помогает.


  1. Miller777
    28.10.2024 13:14

    А если я обычный инженер - недоадмин, и код мне нужен здесь и сейчас под конкретную задачу, на языке, который я знаю плохо (но при этом могу написать промпт, оттестировать результат и внести уточнения в промт, если надо), - мне стоит использовать ИИ? Знания языка мне хватает, чтобы примерно понимать, что и как делается в сгенерированном коде, а писать самому - нет столько времени, сколько нужно на написание и отладку..

    Не холивара ради, просто интересно: может, не стоит так делать? Я не программист, все таки. К сожалению.

    Но если не делать так - сам я это сделаю неизвестно когда.


  1. panzerfaust
    28.10.2024 13:14

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

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


  1. vagon333
    28.10.2024 13:14

    ИИ кодинг не обязательно либо обучение либо весь код написан ИИ.

    Возможен гибридный подход:
    - на простые рутинные куски кода передаем задачу ИИ.
    Дальше: test, review, add to my codebase.

    - на новые задачи, с которыми не работал, даю задачу на скелет решения.
    Дальше: анализ решения, наброски кусков на скелет, тест.


  1. mclander
    28.10.2024 13:14

    Может ещё и автодополнение и автоподстановку отключить в редакторе? Я не пользуюсь ИИ, но просто потому, что лень разбираться. Да и не вижу пока(?) особого профита по скорости. Всё равно надо будет прочитать и разобраться, что оно мне в код подкинуло.

    Но если это ускоряет разработку, то это уже не остановить. Как бы не стыдили халявщиков)