Комментарии 16
Настало время посмотреть, насколько Copilot может помочь мне с реальным кодом.
Class to generate verify HS256 and RS256 JWT tokens, without using any external libraries.
Ну да, типичная, рутинная задача, с которой сталкиваешься постоянно.
С нуля без библиотек всяким ИИ просто писать, а как дела с контекстом проекта? Сможет копилот добавить что-то в уже существующую архитектуру? Сколько за ним придётся исправлять?
Каждой задаче свой инструмент.
Задача Copilot — заменить джуна,
А задача архитектора или senior — использовать Copilot для ускоренной разработки, по возможности исключая джунов.
Откуда брать новых мидлов/сеньёров, если джунов заменят на Copilot?
Задача Copilot — заменить джуна
Задача Copilot — приносить прибыть MS. Все эти демонстрации "магии" copilot'a обычно происходят в стерильных условиях без учета контекста, архитектуры и доменной области, на абсолютно стандартных задачах большинство из которых уже реализованы и выложены на гитхаб, откуда и просочились в обучающую выборку.
Это не уровень джуна или даже трейни, это уровень студента первого курса решающего какой-то популярный задачник.
А ещё недавно выяснилось, что ИИшки в некоторых случаях вместо адекватного результата просто его выдумывают по подобию, т.е. врут - такой результат похож на настоящий, использует те же знания, но совершенно бессмысленный. Вот и играй потом в детектор лжи, выясняя рабочий ли код, выполняет ли он свою задачу, или это просто правдоподобный мусор.
А это всегда правдоподобный мусор, просто по определению того чем является языковая модель.
Людям дали эстиматор P(token | context) а они носятся с этим как с писаной торбой, рассказывают что это "early sparks of AGI" и боятся что он заменит джунов/мидлов/сеньоров/небо/Аллаха просто потому что в обучающей выборке уже были примеры кода которые они пишут в своих очень оригинальных проектах.
Он вроде имеет контекст проекта, с другой стороны сложную логику доверять ему не стоит - насуёт скрытых ошибок, задолбаешься тестировать потом. Как говорят пользователи - позволяет сокращать повторяющиеся части, но не писать логику.
Кстати, а кто-то пробовал через Copilot писать хотя бы Unit-тесты? Как он с этим справляется?
Инструмент отличный, тоже удивлялся, как много он догадывается о том, что я хочу сделать, но не без огрехов. Есть пара неприятных моментов:
1) Copilot, технически, нарушает ваш NDA
2) Сейчас без ВПН не поиспользовать его, а постоянно туда-сюда включать и выключать ВПН отнимает время.
Copilot скорее всего не напишет вам бизнес-логику, потому что она специфична. Единственное, для чего он хорош - это писать велосипеды, которые, чего греха таить, мы все любим. Но по-правильному, если этот код уже написан, то нужно его переиспользовать - либо из сторонней библиотеки, либо со своего же модуля, а не копипастить.
Я все-таки склоняюсь к мысли - если в вашем проекте есть реальная польза от Copilot, значит у вас скорее всего что-то не то с архитектурой.
Из реально полезных инструментов генерации кода - это схематики и генераторы апи-клиентов с ДТО-шками из сваггера. Было бы интересно видеть добавлении ИИ в эти инструменты.
Начиная со сниппетов и автоматического импорта зависимостей существует проблема верификации предложенного кода. Вы и так должны знать что конкретно должно получиться в итоге. ИИ выносит эту проблему на новый уровень. Джун просто не будет знать как надо на самом деле. А это чревато еще более сложными ошибками в логике, которые могут маскироваться под красивый и складный код и которые потом надо будет исправлять уже эксперту. В общем время всё расставит на свои места. Для сеньора - может быть - какое-то ускорение на бойлерплейтах можно получить. И то я бы очень осторожно к этому относился. Буковка туда, буковка сюда - потом поди отдебаж.
Пишу на Go. Copilot - это просто бомба для Go. В Go приходится писать очень много однотипного шаблонного кода, например типа if err != nil ... Copilot справляется с этим на ура и сильно экономит мне время. Он намного умнее IDE в этом вопросе. Тесты генерирует тоже лучше, чем IDE.
Однако не давайте ему сложных задач. Этим вы выстрелите себе в ногу. Потому что сгенерированный код на первый взгляд может показаться рабочим и вполне приемлемым. Но... Это обманчивое ощущение. Copilot умеет вносить очень незаметные и неочевидные баги, которые вас сильно замедлят. А если за ним постоянно тщательно проверять такие участки кода, то вы точно так же потеряете время.
Как итог: если можете сразу одним взглядом охватить и оценить за полсекунды его короткое предложение, смело пользуйтесь этим, но если он предлагает вам простыню, то сразу отказывайтесь, оно не стоит того, вы потратите больше времени, чем напишете сами.
P.S. Copilot хорошо подойдёт вместо первой попытки гугления. Если вы не совсем чётко представляете себе, как решать какую-то задачу, то вместо гугления можно дать задачу Copilot-у, посмотреть саму идею решения, и ОЧЕНЬ ВНИМАТЕЛЬНО отрефакторить её. Иногда этого бывает достаточно, и это тоже экономит время.
Пользуйтесь обязательно!
Я пробовал GitHub Copilot, и я в восторге