Джун и AI-помощник лучшие друзья
Джун и AI-помощник лучшие друзья

Всем привет! В настоящее время очень активно насаждается использование AI программистам, так было в зелёном банке, в котором я отработал последние три года. Использование AI-помощников в основном продвигалось у нас сверху, людьми, которые никак не связаны с IT и не имеют технического образования. В общем я хочу подсветить те проблемы, которые наблюдал за время работы, когда джуны взаимодействовали с AI для написания кода, такими как ChatGPT, GigaChat или YandexGPT.

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

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

Наглядное отличие между работой джунов, мидлов и сеньоров
Наглядное отличие между работой джунов, мидлов и сеньоров

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

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

Примеры неправильного использования AI-помощника

Типичный AI-помощник в руках джуна
Типичный AI-помощник в руках джуна

1. Джун не понимает кода, который AI помощник написал

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

И тут мне на глаза попадается строчка кода, в которой прописан вызов функции из стандартной библиотеки очереди, которая ожидает подтверждения отправленного сообщения, в параметрах которой был аргумент timeout=0. Сразу стало ясно, что ожидать подтверждения 0 секунд — это как-то странно, не понятно зачем вообще это делать. Ну я ясное дело подумал, что это какое-то осмысленное действие, может эта функция ещё что-то делает. Начал гуглить, искать примеры, в общей сложности потратил минут 20, но так и не понял смысла. Когда позвал джуна и спросил его: «А что делает эта строчка кода?», получил честный и прямой ответ: «Я не знаю, это AI-помощник сгенерировал».

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

В итоге я в тот день потратил около двух часов своего времени принимая код, написанный AI-помощником, который работал на простых тестовых примерах, но таил в себе кучу подводных камней, не продуманной логики и просто мусора.

2. AI-помощник предлагает хорошее решение, которое является не подходящим в контексте задания

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

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

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

3. Трудоёмкая поддержка сгенерированного кода

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

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

Примеры, когда AI-помощник действительно полезен

AI-помощник работает как надо
AI-помощник работает как надо

1. При поиске стандартных решений

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

Это действительно удобно и значительно ускоряет работу.

2. Простые рутинные задачи

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

Это как оказалось было ошибкой, т. к. некоторые версии Outlook могли код этой CSS разметки вывести в тексте письма. Такой вот интересный и не известный мне баг, о котором я узнал на ревью моего финального кода от коллеги.

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

Вот тут-то мне и подсобил AI-помощник, который выполнил эту работу буквально за пару секунд, мне нужно было только сделать пару правок.

Выводы

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

AI-помощники — это хороший и мощный инструмент в работе программиста, но применять его стоит с умом.

Если у кого есть забавные истории взаимодействия AI-помощников с джунами, можно написать их в комментариях. Спасибо за внимание!