Дисклеймер: это перевод и адаптация развёрнутого мнения программиста из интернетов. Лично я считают его спорным и во многим с ним не согласен (но это тема для отдельной статьи). С ним можно соглашаться, можно не соглашаться, но считаю, что это очень хороший материал для инициализации дискуссии, формулирования аргументов и контраргументов сторонниками разных мнений. Призываю именно так его воспринимать 😊
Возможно, использовать ИИ нормально, но только если вы не собираетесь развиваться и гордиться своей работой.
Уточним, что когда речь про "использование кода, сгенерированного ИИ" то тут мы понимаем именно написание кода за вас. Речь не идёт об использовании ИИ в качестве инструмента для обучения, чтобы лучше понять языки программирования и библиотеки или улучшить код, который вы пишете сами. Но если вы через названия переменных и комментарии описываете, что должен сделать код, чтобы его сгенерировал ИИ, либо вы полагаетесь на него, чтобы изучить и понять свою собственную кодовую базу, чтобы не делать это самостоятельно, то эта статья для вас.
Причины не использовать код, сгенерированный ИИ
Вы лишаете себя возможности для обучения
На заре интернета был такой уничижительный термин «скрипт-кидди» для людей, которые пользовались скриптами и программами для взлома паролей, получение доступа к чужим ПК, атак на веб-сайты и для прочих подобных целей. Они считали себя «хакерами», но у них не было понимания, как такие программы работают, они просто пользовались чужими готовыми решениями.
Можно подумать, что это очень грубая аналогия — сравнивать разработчиков, использующих код, сгенерированный ИИ, со скрипт-кидди, использующими готовые инструменты для взлома. Но это не совсем так.
«Серийные скрипт-кидди» хотят стать тру-хакерами, но они никогда не достигнут этого, просто запуская готовые скрипты. Настоящие хакеры — это те, кто пишет эти скрипты, кто исследует, проверяет и глубоко понимает уязвимости, которые могут быть использованы для взлома.
«Серийные ИИ-программисты» могут хотеть стать тру-разработчиками, но, позволяя генеративным моделям писать код за них, они только уменьшают свои шансы на это. По крайне мере, на текущий момент, настоящие разработчики — это те, кто пишут код, на котором обучаются эти генеративные модели.
Самоочевидно, что невозможно научиться делать что-то лучше, не делая этого. Вы не улучшите свои навыки в шахматах, не играя в них. Вы не станете лучшим хоккеистом, сидя на скамейке запасных. Вы не научитесь играть на пианино, просто слушая чужие композиции — в какой-то момент вам нужно будет играть самому. Очевидно, что ваши навыки разработчика никогда не будут расти, если вы не будете писать код.
Ваши навыки могут атрофироваться
Если вы уже уверены в своих навыках программиста, то, возможно, вам захочется, чтобы ИИ выполнял за вас рутинные задачи. Вы могли бы доверить ему создание структуры нового проекта, написание функций для расчёта факториала и сортировки слиянием (почему люди так любят поручать ИИ писать функции для расчёта факториала и сортировки слиянием?), а также генерацию шаблонного кода — в общем, все те скучные задачи, которые вам не хочется делать самостоятельно.
Вы можете подумать, что это вполне нормально. Ведь сеньоры уже делегировали рутинные задачи джунам, ещё до того, как идеи больших языковых моделей (LLMs) даже появились у Сэма Альтмана в голове. В чем же разница?
Во-первых, джунам требуется больше руководства, чем ИИ-инструментам, и они могут обращаться к вам за помощью и за советами. Помогая им, вы не только укрепляете свои собственные навыки, но и приобретаете новые — менторство, коммуникацию, а также умение улыбаться и быть приятным, несмотря на растущее раздражение и злость.
Во-вторых, в разработке, как и в жизни в целом, существует фундаментальный закон: если вы не занимаетесь чем-то достаточно долго, то забываете, как это делать. Если вы уже давно в деле, вспомните свой первый язык программирования. Допустим, это был Паскаль. Сможете ли вы сейчас написать хотя бы одну синтаксически правильную строку на Паскале, не говоря уже о том, чтобы сделать на нём что-либо серьёзное?.
Попробуйте программировать целый день без подсветки синтаксиса или автодополнения и почувствуйте, насколько некомфортно вам без этих инструментов. И вы поймёте, что эти "помощники" существенно подорвали ваши знания, устранив необходимость запоминать даже смехотворно простые действия. А теперь представьте, насколько жалким вы станете, если ИИ полностью исключит необходимость писать код. Если вы перестанете писать свой собственный код — даже скучные его части — вы начнете ржаветь. Вы начнёте забывать. А написание кода для интересных и сложных проектов станет ещё труднее, потому что вы потеряете базис, на котором основываются более продвинутые навыки.
Представьте, что производитель спортивного оборудования завтра выпустит новый продукт "Искусственная Сила", обещающий, что вы сможете "поднять уровень" своих тренировок и повысить эффективность при помощи Ассистента Для Тренировок — робота, который будет поднимать штангу за вас. Если бы вы начнёте полагаться на такой продукт, то что, по вашему мнению, со временем станет с вашим жимом лёжа? Что ИИ-ассистенты со временем сделают с вашей способностью писать и понимать код?
Вы станете зависимы от того, что вас же и заменит
Многие из существующих на рынке ИИ-помощников по написанию кода (на момент написания этой статьи) предлагают свои продукты студентам бесплатно. Вы можете подумать, что это мило с их стороны — благослови их за то, что они облегчают жизнь этим бедным, финансово обременённым детям. Ошибаетесь. Если и есть время в жизни разработчиков, когда они не должны искать лёгких путей, так это когда они только начинают осваивать самые азы.
Это прямо-таки хищническое поведение. Как религиозные культы, которые вербуют новообращенных сразу после рождения, чтобы обеспечить постоянный приток новых членов, компании, занимающиеся ИИ, знают, что если они подсадят разработчиков на свои продукты до того, как те откроют свой первый текстовый редактор, это будет гарантировать стабильный доход от подписок. Они видят, что всё не так для них хорошо с разработчиками старой закалки, которые пишут абсурдно длинные тирады и рисуют глупые комиксы о том, как мы ненавидим ИИ и компании, которые его продвигают. Поэтому они смотрят на будущие поколения разработчиков, вероятно, представляя армию зависимых от ИИ "код-кидди", которые не смогут написать даже "Hello World" без длительной сессии общения с чат-ботом, для которого они будут придумывать инструкции, чтобы ИИ сделал это за них наилучшим образом.
Ранее мы уже обсудили, что многие из нас уже зависимы от наших продвинутых сред разработки — подсветки синтаксиса, автодополнения, анализа кода, автоматического рефакторинга и пр. Вы можете задаться вопросом, чем ИИ отличается от этих инструментов. Ответ довольно прост: первые — это инструменты, цель которых помочь вам стать более эффективными и писать лучший код; а ИИ-ассистенты — это инструмент, цель которого полностью заменить вас.
Корпоративные боссы активно продвигают и быстро адаптируют ИИ-инструменты не потому, что они верят, что это сделает из их сотрудников высокооплачиваемых сеньоров. Нет, они спят и видят будущее, в котором их высокооплачиваемые сеньоры будут заменены более дешевыми, начинающими, зависимыми от ИИ "код-кидди". Или, что еще лучше, полностью заменены ИИ, как только достаточное количество из нас заплатит за подписку за привилегию обучать эти ИИ до такой степени, что в нас больше не будет необходимости.
Краткое отступление: владеете ли вы кодом, сгенерированным ИИ?
Сейчас, мягко говоря, существует некоторая юридическая неопределенность относительно прав собственности на контент, созданный с помощью ИИ.
Сейчас обсуждение в основном касается художественных произведений, но нет причин считать, что это не может относится и к коду. Ведь программирование можно воспринимать как форму художественного самовыражения.
Если вы сгенерировали функцию с помощью ИИ, который обучался на коде, лицензированном под LGPL, должна ли эта сгенерированная функция также подпадать под действие LGPL? Возможно, вас не волнует LGPL, потому что у этих ребят нет зубов для защиты, но что если обучающая выборка включала неоткрытый код от неприлично богатой и сутяжной корпорации с собственной армией высокооплачиваемых юристов? Что если они смогут доказать, что вы использовали этот ИИ при создании своего конкурирующего продукта, который стал слишком успешным?
Кто знает ответы на эти вопросы? Хотите ли вы оплачивать счета юристам, когда придётся их привлекать для защиты вас в суде?
Ваш код не будут уважать
Некорректно говорить, что код, сгенерированный ИИ, обязательно будет плохим. Иногда это так, иногда нет, но очевидно, что эта технология будет развиваться и совершенствоваться.
С уверенностью можно сказать, что если вы используете эти инструменты, вряд ли кто-то, кроме других "код-кидди", будет впечатлён вами как программистом. Разработка программного обеспечения — это искусство. Создание связного и лаконичного кода, поиск элегантных решений сложных проблем и завоевание уважения коллег должны быть источником гордости и радости для каждого программиста. Хотите ли вы радоваться своими собственными достижениями или достижениями инструмента, который генерирует код за вас?
Кто-то из вас хочет просто покупать предметы искусства и выдавать себя за художника? Или вы хотите быть художником?
Понятно, что условное приложение для планирования стирки, над которым вы работали для какой-нибудь сети отелей, либо другой проект с вашей основной работы впяд ли попадёт в шорт-лист премии "Самый элегантный код". Но равзе плохо стремиться к этому? Разве гордость за свою работу не делает её более значимой? Как вы можете испытывать уважение к своему собственному коду или ожидать, что кто-то другой будет его уважать, если вы не писали его сами?
Причины использовать код, сгенерированный ИИ
Вы мазохист, который предпочитает код-ревью программированию
Вы любите писать код? Или любите читать, проверять и давать обратную связь по чужому коду? Я понимаю, что это полезный навык, который может помочь менее опытным коллегам стать более эффективными, но действительно ли это то, чем вы хотите заниматься?
Чем больше кода вы позволяете ИИ генерировать за вас, тем больше вы смещаете свою работу от программирования к код-ревью. Может, это ваше. Некоторые люди любят всякие странные извращения — никого судить не будем.
На самом деле вы не хотите быть программистом
Если у вас нет истинного интереса к изучению программирования и вы воспринимаете ИИ скорее как скорее фрилансера, который может выполнять ваши заказы, — говоря ему что-то вроде "создай гоночную игру" и "это отстой, сделай лучше", — то вас переубеждать нет смысла.
Вероятно, это будущее, к которому стремятся гигантские корпорации. Мир, в котором их закрытые экосистемы контролируют не только средства распространения приложений, но и средства их создания. У вас есть идея для нового приложения? Просто скажите ИИ в App Store, что вы хотите, и он доставит его прямо на ваше устройство. Это позволит большой корпорации получать 100% от платежей за подписку на их приложения. Это гораздо выгоднее, чем 30%, которые они получали раньше, когда разработчики приложений настаивали на том, что они для чего-то нужны.
И подходим к последней причине, по которой вы, возможно, захотите использовать код, сгенерированный ИИ.
Вы верите, что мы вступили в новую пост-рабочую эру и доверяете корпорациям вести нас через нее
Если вы дочитали до этого места и не закрыли статью после первых абзаце, то добавить в общем-то нечего. Прочитайте «1984», «451 градус по Фаренгейту» или «Лавина» — вам, вероятно, понравятся такие картины будущего, и у вас появится что-то, чего можно ждать.
👉Если тебе интересны и другие полезные материалы по IT и Python, то можешь подписаться на мой канал PythonTalk или посетить сайт OlegTalks👈
Давайте обсудим эти тезисы в рациональном ключе 👇🏻
Автор: obulygin