Дисклеймер: это перевод и адаптация развёрнутого мнения программиста из интернетов. Лично я считают его спорным и во многом с ним не согласен (но это тема для отдельной статьи). С ним можно соглашаться, можно не соглашаться, но считаю, что это очень хороший материал для инициализации дискуссии, формулирования аргументов и контраргументов сторонниками разных мнений. Призываю именно так его воспринимать ?

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

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

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

Вы лишаете себя возможности для обучения

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

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

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

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

Ваши навыки могут атрофироваться

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

Вы можете подумать, что это вполне нормально. Ведь сеньоры уже делегировали рутинные задачи джунам, ещё до того, как идеи больших языковых моделей (LLMs) даже появились у Сэма Альтмана в голове. В чем же разница?

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

Во-вторых, в разработке, как и в жизни в целом, существует фундаментальный закон: если вы не занимаетесь чем-то достаточно долго, то забываете, как это делать. Если вы уже давно в деле, вспомните свой первый язык программирования. Допустим, это был Паскаль. Сможете ли вы сейчас написать хотя бы одну синтаксически правильную строку на Паскале, не говоря уже о том, чтобы сделать на нём что-либо серьёзное?.

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

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

Вы станете зависимы от того, что вас же и заменит

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

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

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

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

Краткое отступление: владеете ли вы кодом, сгенерированным ИИ?

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

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

Кто знает ответы на эти вопросы? Хотите ли вы оплачивать счета юристам, когда придётся их привлекать для защиты вас в суде?

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

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

Кто-то из вас хочет просто покупать предметы искусства и выдавать себя за художника? Или вы хотите быть художником?

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

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

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

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

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

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

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

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

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

Вы верите, что мы вступили в новую пост-рабочую эру и доверяете корпорациям вести нас через нее

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

?Если тебе интересны и другие полезные материалы по IT и Python, то можешь подписаться на мой канал PythonTalk или посетить сайт OlegTalks?

Давайте обсудим эти тезисы в рациональном ключе ??

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


  1. myswordishatred
    12.12.2024 15:06

    Основную проблему вижу в обучении. Возможность генерации кода позволяет людям пропустить решение базовых задач типа кручения циклов и вместо принципа "от простого к сложному" получаем "сразу к сложному": лёгкие задачи порешал ЛЛМ, на сложных задачах буксует, а сами люди их решить не могут, потому что им программирование заменило промптописание.


  1. BenGunn
    12.12.2024 15:06

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


  1. habrbah
    12.12.2024 15:06

    На мой скромный взгляд начинающего, всякое облегчение именно рутинного, тупого труда - это во благо и повышает эффективность и персональную, и командную. Однако, меня лично тревожит этический момент. Представляется, что было бы честно авторское право и личную профессиональную репутацию делить с ассисентом, поскольку за ним - работа поколений программистов, которую ассистент "цап-царапнул")) Я все пытаюсь придумать некую оговорку для таких случаев, метку подобную (С) - элегантную и короткую. Нечто похожее на (GHC) - Global Humans Copyright, или вроде того.


    1. Rive
      12.12.2024 15:06

      Люди в любом случае делят свою репутацию с авторами учебников и статей, которые (возможно) отравили свои тексты идеологической войной, так что в этом принципиальной новизны нет.

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


      1. habrbah
        12.12.2024 15:06

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


        1. Rive
          12.12.2024 15:06

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


          1. habrbah
            12.12.2024 15:06

            Благодарен за ваше мнение и с удовольствием его использую в заметках об этических аспетах ИИ. Для поддержания дискуссии - гипотетически, но и весьма реально. Предположим, прописанный ассистентом код вы отправили на "прошивку" микроконтроллера светофорных объектов от Красногорска до Волоколамска, получили свой скромный или нескромный гонорар (за лично ваш, как вы полагаете и объявили, девелоперский труд). Но, впоследствии, светофор пустил машины со встречных потоков на зеленый свет – иски пострадавших и регрессные иски страховых компаний будут обращены именно к вам, вы же скромный автор кода? И страховой защиты у вас нет – вы отказались от страховки ответственности за работу с ИИ. И авторское право вы себе присвоили ради денежки)) И вопящие от боли калеки (после ДТП) с вас получат по полной. Потому я и рассуждаю о том, что неплохо бы найти баланс между новыми технологиями и пыльными правовыми нормами. Не для того чтобы прижать программеров, а чтобы гармонизировать интересы в бушующем от алчности мире))


  1. habrbah
    12.12.2024 15:06

    И еще один момент, разговорился, простите. Мне посчастливилось в уходящем году побывать на лекции Eddie Aftandilian (GitHub Copilot, led development of Copilot for Docs, and currently leads development of Copilot Workspace). И на мой тупой вопрос (переданный через ведущего) он развернуто ответил. Вопрос, конечно же, о том - заменят ли машины и ИИ разработчиков или нет. Процитирую по расшифровке записи, возможно, это многих и утешит, и порадует - мнение далеко не последнего человека в разработке:

    «[Eddie Aftandilian] 19:32:40

    Спасибо, что пришли на мою лекцию, и я с удовольствием отвечу на вопросы.

    [Rahul Pandita] 19:32:47

    Хорошо. Спасибо, Эдди.

    [Рахул Пандита] 19:32:49

    Copilot - это наш помощник или наш конкурент? Или другой вариант того же вопроса: как вы думаете. Или как вы думаете, будет ли когда-нибудь уровень, когда машины будут разрабатывать код самостоятельно. Уменьшение зависимости от разработчиков программного обеспечения когда-нибудь достигнет ноля?

    [Eddie Aftandilian] 19:33:44

    Хм. Я имею в виду. Так что я имею в виду, во-первых, мы очень далеки от этой точки прямо сейчас, но модели улучшаются. И кто знает, что будет дальше, может быть, у нас будет AGI.  Может, и нет. Кто знает?

    Мое личное мнение здесь таково. Есть много программного обеспечения, которое не просто связано с написанием кода, верно? Так что это связано с выяснением того, что мы должны создать, или что вы знаете? Если у вас есть клиент, который просит что-то, чего он на самом деле хочет, а не того, что он просит. Верно? Здесь есть набор навыков и своего рода выявление правильных требований и выяснение того, что создать.

    Кроме того, вы знаете, пока что с моделями, к которым у нас есть доступ сейчас, очень сложно создать каркас целого, как существенное приложение. Так что вы – это вы.

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

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


    1. Hardcoin
      12.12.2024 15:06

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


      1. habrbah
        12.12.2024 15:06

        Мне не показалось на на лекции, ни сейчас, что Эдди был столь категоричен. К тому же приоритет человеческих, природных навыков (в т.ч. и в разработке) он оставляет именно за людьми.


  1. 192IP
    12.12.2024 15:06

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


  1. Valerdos_UA
    12.12.2024 15:06

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

    Обычно, при обучении, мы получаем базис по наработанной спецами базе, а потом начинаем задавать вопросы. Т. е. курс лекций + ии вполне себе рабочий вариант.

    Для опытного разработчика, напротив, чат большое подспорье, беря на себя рутину и подкидывая решения, даже не всегда верные(анализ+исправление = повышение уровня разработчика), существенно ускоряет разработку.


  1. a1111exe
    12.12.2024 15:06

    Ещё калькулятор надо прекращать использовать, а то мозги заржавеют... Oh, wait!..

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

    Вообще, если следовать духу статьи, то надо срочно отказаться от использования IDE, и переходить в блокнот или vi (не vim, т.к. там по умолчанию есть подстветка синтаксиса!). Ну такое себе.. Тем временем, на работе провели видеоконференцию с демонстрацией возможностей Cursor и призывом пробовать. Что ж, мозги уже убиты калькулятором, почему бы и не попробовать...

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


  1. Fixer201
    12.12.2024 15:06

    Я начинающий Front-end NextJs и много не знаю, например у меня нет насмотренности когда стоит выносить код в отдельные компоненты, когда не стоит, плюсы и минусы в конкретных ситуациях, примеры. Лично я использую ИИ для советов, стоит ли выносить в отдельный компонент, плюсы, минусы, стоит ли выносить допустим анимации в интерфейс (когда использую Framer Motion, так как они во многом повторяются и держать их в компоненте нет особого смысла), так плюсы и минусы этого. Считается ли это тем, что ИИ думает за меня? Я считаю, что нет, так как код я пишу сам, а у ИИ прошу совета и на основе его ответа уже анализирую плюсы и минусы. Мне кажется это на оборот помогает в обучении, посмотреть на код с разных сторон.


  1. morgfrimen
    12.12.2024 15:06

    Я использую ИИ чаще для более рутины задач. Например у менять C# классы и ENUM и мнетнудно тоже самое продублировать в proto контакте - оно генерирует.

    Мы по TDD не работаем и иногда есть серьёзная логика. Прошу сгенениролвать тест на класс. Потом редактирую код, потому что получается не прям идеально. Иногда что то допишу, но основная масса сгененирована быстро и нормально.