Правильная роль искусственного интеллекта в кодировании, возможно, должна быть определена эмпирически, на основе реального практического опыта. О том, что уже выяснили программисты, рассказывает портал The New Stack.
Рина Диана Кабаллар, которая опубликовала на Hacker News ряд советов для кодеров, как выжить и процветать в мире генеративного ИИ, утверждает, что, по их мнению, ИИ заменит программистов в ближайшем будущем. «Но у ИИ есть потенциал изменить подход к программированию — хотя пока рано говорить о том, как именно», — отмечает она.
Первые подсказки могут услышать от реальных программистов, которые уже экспериментируют с кодированием с использованием ИИ в производственных условиях. Так, в спонтанном обсуждении статьи Кабаллар многие программисты поделились своим опытом, дали оценку различным возможностям ИИ, а также высказали свои прогнозы относительно того, как все это будет развиваться. Попутно они поделились своими представлениями об истинной роли программиста — как сегодня, так и завтра — и сформулировали основанное на собственном опыте мнение о том, что изменится, а что останется прежним.
ИИ — это образование
Первый вывод заключается в том, что ИИ упрощает работу и может быть очень познавательным. Разработчик полного стека Дэниел Уолтрип написал, что ИИ помогает восстанавливать здоровье (включая выгорание), и «для меня это возможность сгладить процесс и „снизить интенсивность“ выполнения конкретной задачи, особенно если это что-то, где я не знаю, как это сделать... Я могу легко исправить любые ошибки, и мне не нужно тратить 20 минут на гугление, чтение документации и т. д., чтобы решить проблему».
Еще один реальный отзыв поступил от разработчика встраиваемых систем и инженера по цифровым системам Йосипа Мишковича: «Я начал разработку на новом языке и практически не могу работать без помощи большой языковой модели (LLM) — слишком высок уровень трения. Даже когда автозаполнение оказывается совершенно неправильным, оно все равно работает; гораздо проще исправить красиво отформатированный код, чем писать с нуля. В моем случае улучшения огромны — как разница между бездельем и реальной продуктивностью».
Один из комментаторов рассказал, что с помощью чатбота с ИИ он создал целое приложение на новом фреймворке — и нашел это более познавательным, чем чтение вводной книги. Другой разработчик сравнил LLM с неким подобием документации, дополненной ИИ: «Задавать вопросы по содержанию документации в противовес неэффективному RTFM — это одна из возможностей, для которой я считаю LLM потенциально особенно полезными».
Другой комментатор, похоже, согласен с этим. Он далек от мысли, что LLM может заменить человека-программиста, поскольку ПО, которое ИИ недавно написал, «все еще нуждается в квалифицированном программисте для его редактирования, тестирования и развертывания. С другой стороны, я немного опасаюсь, что ChatGPT уничтожит мой дополнительный доход от продажи курсов по программированию...».
А один программист, столкнувшись с унаследованной кодовой базой
ИИ и «метод утенка»
Некоторые программисты используют инструменты ИИ для отладки — и даже для отладки «методом утенка», когда проговаривание функции кода (и его ошибок) иногда позволяет понять суть проблемы. «Я обнаружил, что отладка „методом утенка“ является исключительно эффективным вариантом использования ChatGPT, — написал один из разработчиков. — Часто ИИ удивляет меня тем, что сразу находит решение, но я всегда стараюсь двигаться вперед, проясняя свои собственные мысли».
Но насколько хорошо ИИ справляется с отладкой собственного кода? Один из комментаторов пожаловался, что «иногда ИИ дает совершенно неправильные ответы. Это просто не тот код, который я бы зафиксировал или которому бы позволил пройти проверку». Другой сомневается в способности ИИ исправлять свои ошибки. «Он может приблизительно определить синтаксис вещей на своем учебном корпусе, но где логика? Свет горит, но дома никого нет».
Однако еще один комментатор верит в потенциал ИИ: «У меня уже есть опыт работы с моделью GPT3.5-Turbo, которая шаг за шагом вычленяет и диагностирует ошибки. Она на 100% умеет находить и исправлять ошибки в коде. Буквально, вы даете ей код и ошибку, и он может провести вас через поиск решения... Недавно я загрузил очень большой файл в GPT4, и она выдала мне несколько серьезных ошибок, которые я не заметил после нескольких самостоятельных проверок».
Так заменит ли ИИ программистов — или просто предложит им автоматизированную помощь, чтобы сделать их работу быстрее и продуктивнее? По крайней мере один из комментаторов, похоже, убежден, что в будущем они будут сосуществовать. «Совместные усилия — это почти наверняка то, к чему все идет, и 100% человек или 100% ИИ будут значительно уступать сочетанию того и другого».
Другой согласился с этим мнением, заявив, что предсказывать, что ИИ займет ваше рабочее место, «все равно что говорить, что электронная таблица заменит бухгалтера. Это всего лишь инструмент».
Насколько реально заменить программиста? А менеджера проекта?
Один из комментаторов даже пошутил, что LLM имеют много общего с большинством разработчиков, которые «лишены самостоятельности, пишут шаблонный код без творческого подхода, нуждаются в том, чтобы их держали за руку на каждом шагу, и не будут делать ничего, что им явно не приказано».
Один из разработчиков/архитекторов ПО убедительно объяснил, почему ИИ не может помочь ему справиться с реальными обязанностями программиста. «Чтобы ИИ начал реально экономить мое время, нужно, чтобы он опросил всех заказчиков/партнеров, участвующих в проекте, определил объем необходимых функций, свел все это к набору разумных предметных моделей, понятных всем, определил, где/когда нужно передавать сообщения, выявил, какие вещи могут выполняться по частям, а не требовать массовых операций, принял решение о выборе надежной технологии, исходя из характера требований...»
Это вызвало оживленную дискуссию о том, что значит быть программистом в реальных условиях работы. Один из комментаторов заявил, что нам нужен ИИ, который сможет «присутствовать на бесконечных, бессмысленных, еженедельных Zoom-совещаниях, где менеджер, не имеющий ни малейшего представления о выполняемой задаче, о том, зачем она выполняется, и не имеющий ни малейшего представления о том, как ее выполнить, тем не менее с удовольствием просматривает открытые тикеты и обсуждает их... Когда ИИ сможет просто быть моим двойником на совещании от моего имени, тогда я начну беспокоиться о том, что ИИ заберет мою работу».
И далее разговор перешел к вопросу о том, сможет ли ИИ заменить менеджеров, причем по крайней мере один из комментаторов высказался за это: «Впервые менеджер будет понимать, что говорят его непосредственные подчиненные».