Сегодня мы поговорим о стартапе, который собрал 150 млн долларов. О чем говорит подобная сумма инвестиций? — о гонке, сравнимой с разработкой беспилотных автомобилей.
CodiumAI — это инструмент, созданный специально для тех, кто хочет верить в безупречное функционирование своего кода, но на самом деле понимает, что без тестов любая система — это бомба с часовым механизмом.
Зачем тратить часы на написание юнит-тестов, когда можно передать эту задачу искусственному интеллекту, который, как выяснилось, может не только писать в чатах, но и генерировать тесты для вашего творения.
Весь его функционал построен на том, чтобы сэкономить ваше время, нервы и пару килограммов кофе, заменив ручной процесс тестирования автоматизированной магией.
Итак, ключевой функционал CodiumAI — это автоматическая генерация юнит-тестов. Разработчики машинного обучения часто склонны считать, что модели должны работать по умолчанию ведь в конце концов, они обучены на миллионах данных.
Но кто проверит, что предсказания модели адекватны и соответствуют ожиданиям на реальных данных? Конечно, тесты! CodiumAI анализирует ваш код и автоматически создаёт тесты, которые покрывают как базовые сценарии, так и граничные условия.
Например, если вы пишете функцию предсказания для классификатора, инструмент предложит тесты на случай, когда модель получает входные данные в формате, не соответствующем ожидаемому (например, пустые массивы или входы с невалидными значениями).
Кроме того, он может генерировать тесты для корректной работы в условиях многопоточности, что особенно актуально для моделей, работающих в продакшене на больших объёмах данных.
Один из примеров использования — это тестирование вашего любимого Keras или PyTorch кода.
CodiumAI способен сгенерировать тесты, проверяющие, например, что слои нейронной сети корректно инициализируются, а модель возвращает предсказания с ожидаемой формой выходных данных. Забудьте о бесконечных мануальных проверках, чтобы убедиться, что модель «собрана» правильно.
Также, если в вашем пайплайне есть функция обработки данных, CodiumAI может создать тесты, которые проверят, что при подаче различных входных данных (например, из различных распределений) код не развалится.
Вы увидите тесты, которые сами протестируют исключительные случаи, такие как обработка пропущенных значений или неожиданных категориальных переменных. То есть AI не просто пишет очевидные тесты, а делает это на уровне паранойи опытного разработчика.
Теперь немного о продакшенах. Представьте, что у вас есть долгожданный релиз, который никто не хочет откладывать. Обычные юнит-тесты, конечно, могут покрыть функциональность, но кто протестирует возможные сценарии деградации?
CodiumAI может предложить регрессионные тесты, которые сравнивают текущее поведение модели с предыдущими версиями, выявляя мельчайшие отклонения.
И если вы думаете, что это слишком хорошо, чтобы быть правдой, знайте: алгоритм основан на статическом анализе кода и использует исторические данные о тестировании подобных систем. Проще говоря, он не просто берёт рандомные случаи, а действительно «думает», как опытный тестировщик.
Но не обошлось и без своего рода «магии». Система использует сочетание NLP и AI, чтобы не только предлагать тесты, но и объяснять, какие кейсы он покрывает и почему именно эти тесты важны.
Таким образом, вместо того чтобы слепо полагаться на результат, вы получаете контекст и видите, как AI дополняет ваш процесс разработки.
Конечно, старший разработчик поймёт, что без критического подхода нельзя полагаться на один лишь инструмент, но согласитесь — это помогает сосредоточиться на написании ключевых частей ML-пайплайна, а не на скучных, но нужных проверках.
CodiumAI — это не просто «ассистент», это ваш новый коллега, который никогда не уходит домой и не жалуется на дедлайны.
Да, у него могут быть свои промахи, но что может быть лучше, чем знать, что в критической ситуации у вас есть надежный инструмент, который протестирует ваш код за вас — и, может быть, спасёт вашу репутацию перед тем самым продакшеном, который никто не хочет ломать?
Реальность ИИ-ассистентов сегодня:
Но как дело обстоит на самом деле? — все скрывается в нюансах.
CodiumAI, этот пресловутый «магический помощник», якобы призванный спасать программистов от бесконечной рутины написания тестов, на деле оказывается не таким уж спасителем.
Конечно, в мире красивых презентаций и маркетинговых лозунгов, инструмент должен автоматически генерировать тесты для любого кода, избавляя разработчика от скучных задач.
Однако реальность, как это часто бывает, намного прозаичнее и жестче. Давайте разберемся, почему CodiumAI не становится вашим лучшим другом и почему на него не стоит полагаться, как на Святой Грааль.
Во-первых, тесты, которые генерирует CodiumAI, чаще всего настолько примитивны, что опытный senior-разработчик только посмеется. Да, они покрывают самые базовые кейсы, где ваша функция возвращает то, что от неё ожидается при подаче правильных данных.
Но вот когда дело доходит до реальных сценариев — сложных условий, граничных ситуаций, скрытых багов — тут AI внезапно оказывается на уровне джуниора, который только что прошёл пару бесплатных курсов по Python.
Он создаёт тесты, но совершенно игнорирует детали, которые действительно важны в реальной разработке. Например, глубокая проверка логики, тестирование сложных взаимодействий между модулями или даже предсказание того, как код поведёт себя в продакшене, — это всё остаётся за бортом.
Во-вторых, если уж Codium и находит что-то интересное, будь готов к тому, что он завалит тебя кучей ложных срабатываний. Это как те автоматические тесты, которые ты запускаешь ночью в CI/CD пайплайне, а на утро видишь ворох непонятных алертов — то сеть прервалась, то какой-то некорректный кейс был обработан.
Вот так и с Codium — ты получаешь гору тестов, но большинство из них либо дублируют существующие, либо проверяют настолько тривиальные вещи, что кажется, будто это шутка. В итоге вместо облегчения работы ты начинаешь тратить время на чистку автосгенерированных тестов.
Третья проблема — это «магическое мышление», на которое легко поддаться с такими инструментами. Да, идея, что AI возьмёт на себя трудную часть работы, заманчиво звучит, но реальность такова: AI не знает ваш код так, как знаете его вы.
Он не поймёт всей бизнес-логики, не увидит скрытые взаимосвязи между частями системы. В итоге, когда вы полагаетесь на Codium, вы рискуете упустить важные моменты.
Это как доверить строительство дома архитектору, который видит только фасад, игнорируя фундамент. Да, всё будет выглядеть красиво, но первый дождь покажет, что здание держится на честном слове.
И наконец, как и любой AI-инструмент, Codium ограничен своими данными и моделями. Он не учтёт уникальные случаи, не сможет адекватно оценить критические пути выполнения программы.
AI хорош для генерации типовых решений, но когда код становится более сложным и требует настоящей инженерной интуиции, Codium начинает терять хватку. Программирование — это искусство управления исключениями и неожиданными сценариями, а такие вещи нельзя «втиснуть» в алгоритм, сколько данных ему ни дай.
В итоге CodiumAI, хоть и выглядит как яркая игрушка, в реальной работе чаще мешает, чем помогает. Он создаёт иллюзию автоматизации, но в лучшем случае остаётся полезен только на уровне поверхностных проверок.
Да, возможно, он избавит от написания нескольких тривиальных тестов, но реальную работу вам всё равно придётся делать самостоятельно, и, честно говоря, с учётом времени на разбор его ложных результатов, это даже не экономия.
Проблема Copilot — он просто не работает, не выполняет свою главную функцию — писать за программиста код даже под его строгим надзором. Такой формат работы превращает кодинг в бесконечную отладку, а не действительно творческие решения.
Исследования, проведённые экспертами Uplevel, ставят под сомнение заявления разработчиков Copilot и других сторонников ИИ-ассистентов, утверждающих, что такие помощники способны существенно увеличить производительность труда программистов. Все, конечно, в оценке КПД.
К сожалению, творчество и такая сложная с технической точки зрения работа, как программирование, не может оцениваться простыми социологическими метриками. А еще такой эксперимент не может быть действительно чистым.
Привычка, накопление усталости во время эксперимента, настроение, голод, выгорание, проблемы на личном фронте — все это накладывает отпечаток на работу. Это не говоря, что Copilot — все же инструмент, работать с которым нужно еще научиться.
В частности, представители другой исследовательской группы опровергают эти утверждения, представив данные, согласно которым использование Copilot позволяет ускорить написание кода на 55%.
Исследование было проведено при финансовой поддержке самой платформы GitHub, под крылом которой и находится Copilot. Этот ИИ-ассистент разработан на основе технологий OpenAI — компании, в которую Microsoft инвестировала не менее 1 млрд долларов. Важно также подчеркнуть, что сервис GitHub, начиная с лета 2018 года, полностью принадлежит корпорации Microsoft.
Но, судя по отзывам в интернете, программисты действительно не ощущают реальной поддержки от ИИ-ассистента.
Почему? — зайдем издалека, из США, Tesla, парочки сбитых граждан и беспилотных автомобилей.
Проекты по разработке беспилотных автомобилей, казалось бы, должны были привести нас к светлому будущему, где машины не знают усталости, ошибок и плохого настроения.
Но реальность, как всегда, оказалась немного печальнее. Давайте разберёмся, почему попытки превратить автомобили в независимых агентов по самоуничтожению на дорогах пока провалились, причём с особым изяществом.
В теории ML-разработчики с коммерческой жилкой любят говорить о том, как их модели обучаются на бесконечных массивов данных, но реальность показывает, что даже самые обширные датасеты недостаточны, чтобы учесть всё разнообразие и случайность поведения участников движения.
Когда обучаешь нейросеть на симуляциях и немного на реальных дорогах, это совсем не то же самое, что столкнуться с внезапно выбежавшим на трассу енотом или неадекватным водителем с вечеринкой в голове и ногой на педали газа.
Ситуации, которые в симуляциях выглядят как статистические аномалии, в реальной жизни встречаются слишком часто, чтобы их игнорировать. А нейросети, как оказалось, любят только то, что попадает в распределение обучающей выборки, и совершенно теряются перед низкоприоритетными, но критичными случаями.
Да и человеческий глаз, несмотря на все его изъяны, превосходит большую часть датчиков, которыми укомплектованы автономные системы.
Лидары, камеры, радары — все они дают только частичную картину мира, при этом любую погоду, туман или просто грязь на датчиках система интерпретирует как сигнал к началу катастрофы.
«Куда поехали глаза, туда поехала машина» — эта мудрость явно не про ИИ.
И как только на дорогу падает дождь, снег или солнце не в том угле, алгоритмы начинают колебаться между полным бездействием и манёврами, достойными профессиональных каскадёров.
Проблема беспилотных автомобилей скрывается в крупной социологической проблеме — система. Точнее, ее отсутствие. Реальный социум никогда не был структурой, которая работает алгоритмически: красный — едем, зеленый — стоим. Нужно помнить, что всегда кто-то пролетает на желтый, а кто-то и на зеленом стоит.
Социум, как и дорожное движение, сложное динамическое собрание поведенческих практик и не только… юридических (некоторых желание остаться на камере видеонаблюдения побуждает к нарушениям), психологических (бросившая девушка может вынудить вдарить педаль газа даже на страшном, опасном для жизни повороте).
И это не говоря о стилях вождения, изменяющемся законодательстве и даже изменении обстановки. К сожалению, вождение — это сложнейший навык с когнитивной и поведенческой точки зрения, который еще и предполагает сложную социологическую многофакторную систему.
Ух… как сложно. Не хотим вводить в заблуждение, что автомагистраль — это хаос. Ни в коем случае. Это система, но действующая по достаточно динамичным правилам, как бы трафики автомобилей на автобанах не казались нам «рутинными» и даже статичными.
Поэтому разработка беспилотного автомобиля упирается не в вычислительные препятствия, ни в архитектуру нейросети, а в необходимости, по-сути, имитировать поведение человека и научиться предугадывать поведение других как человек. Впрочем, Илон Маск совсем недавно заявил, что готов это сделать. Ну или приблизиться к некоторым решениям.
Идентичная ситуация разворачивается вокруг Copilot, который стремится имитировать сознание программиста. Безусловно, программирование — последовательное выстраивание алгоритмов и оно может быть верным и неверным, особенно, если мы не притрагиваемся к сложным задачам.
Но реальность такова, что решить глобальную задачу самостоятельно Copilot не может, а частные задачи всегда лежат в глобальной среде, которая используется ИИ-ассистентом не концептуально, а чисто информативно.
У нас есть переменная a, которая лежит где-то в самом начале проекта — тогда она будет использована. Но на этом всё. Поэтому вопрос о Codium лежит не в сфере простейших технологических решений, а перестраивания концепции ПО или вообще подхода к ИИ-ассистентам.