Зачем AI-инструменты замедляют опытных разработчиков: Анализ и рекомендации
12 июля 2025 г.Вступление
В мире программирования искусственный интеллект (ИИ) часто позиционируется как спаситель, способный ускорить разработку и повысить продуктивность. Однако, недавно опубликованное исследование показало, что использование ИИ в кодировании делает опытных разработчиков на 19% медленнее. Это открытие вызвало волну обсуждений и сомнений. Давайте разберем, что же на самом деле происходит и какие уроки можно извлечь из этого исследования.
Пересказ Reddit поста
Вчера было опубликовано исследование, показывающее, что использование ИИ в кодировании замедляет опытных разработчиков на 19%. Разработчики, участвовавшие в исследовании, оценивали, что ИИ сделал их на 20% быстрее, что создает огромный разрыв между восприятием и реальностью. Исследование проводилось с участием опытных разработчиков с опытом более 10 лет, которые работали над знакомыми проектами и решали реальные задачи.
Это не первое исследование, указывающее на то, что ИИ может не иметь такого позитивного эффекта, о котором часто говорят. Ранее, в 2024 году, аналогичные результаты были представлены в отчете DORA.
Суть проблемы, хакерский подход, основные тенденции
Основная проблема заключается в том, что разработчики часто недооценивают время, затрачиваемое на взаимодействие с ИИ. Они думают, что просто задав вопрос ИИ и получив ответ, они сэкономят время. Однако, на практике это не всегда так. Время, потраченное на формулировку запросов и проверку результатов, часто перекрывает выгоду от быстрого написания кода.
Детальный разбор проблемы с разных сторон
Перспектива разработчика: Разработчики, особенно опытные, часто полагаются на свои навыки и интуицию. Включение ИИ в процесс может нарушить привычный поток работы и потребовать дополнительного времени на адаптацию. Кроме того, ИИ часто генерирует код, который требует проверки и доработки, что добавляет дополнительные шаги в процесс.
Перспектива проекта: Включение ИИ в процесс разработки может привести к снижению качества кода. Автоматически сгенерированный код может содержать ошибки или не соответствовать стилю проекта, что требует дополнительного времени на рефакторинг и тестирование.
Перспектива управления: Руководство часто ожидает, что ИИ повысит производительность команды. Однако, если разработчики становятся медленнее, это может привести к недовольству и снижению мотивации. Важно учитывать, что вложения в ИИ должны приносить реальную выгоду, а не просто казаться таковыми.
Практические примеры и кейсы
Рассмотрим несколько реальных кейсов, где использование ИИ в кодировании привело к замедлению процесса:
- Разработчик, работающий над проектом с использованием ИИ, потратил 30 минут на формулировку запроса и проверку сгенерированного кода, тогда как вручную он мог бы написать необходимый код за 20 минут.
- Команда, использующая ИИ для генерации автоматизированных тестов, обнаружила, что 30% сгенерированных тестов содержали ошибки, что потребовало дополнительного времени на их исправление.
Экспертные мнения из комментариев
Eymrich: "Я работал в Microsoft. Побуждение использовать ИИ было абсурдным. Мне приходилось использовать ИИ для суммирования документов, созданных дизайнерами с помощью ИИ, которые были чрезвычайно длинными и не по теме. Кодирование с использованием ИИ также казалось пустой тратой времени. По моему мнению, ИИ полезен только как поисковый движок, который всегда требует проверки."
Iggyhopper: "Средний человек даже не может отличить, что ИИ (читай: LLMs) не является сознательным. Поэтому это объясняет, почему средний разработчик, вероятно, потерял время, используя ИИ на работе. Использование ИИ для решения специфических задач, таких как шаблонный код, функции get/set, конвертеры функций, написание автоматизированных тестов, — это отлично. Но все требует ручного контроля, что, вероятно, и является источником потерь времени."
crone66: "Мой опыт показывает, что ИИ может создать 80% кода за несколько минут, но это занимает вечность, чтобы удалить дублирующийся код, исправить плохой или несуществующий дизайн системы, устранить ошибки. После этого я могу сосредоточиться на последних 20%, чтобы завершить функцию. Без ИИ я определенно быстрее в большинстве случаев."
Zahand: "Я скептически отношусь к ИИ как инструменту для разработки. Я использовал его и вижу его потенциальную ценность, но это похоже на "упрощение" процесса обучения и развития."
OdinGuru: "Одним из самых интересных аспектов этого исследования является то, что они снимали экраны всего процесса и проводили подробный анализ того, как тратилось время при использовании ИИ по сравнению с отсутствием ИИ. Я заметил, что время, фактически проводимое за написание кода с ИИ, действительно уменьшилось на значительную величину. Но это более чем компенсировалось временем, потраченным на "дополнительные" задачи, такие как написание запросов или проверка вывода ИИ."
Возможные решения и рекомендации
Чтобы минимизировать негативные последствия использования ИИ в кодировании, разработчикам и командам стоит следовать следующим рекомендациям:
- Обучайтесь использовать ИИ: Проводите тренинги и семинары, чтобы разработчики могли эффективно использовать ИИ-инструменты и минимизировать время на адаптацию.
- Оценивайте качество кода: Внедряйте автоматические проверки качества кода, чтобы минимизировать количество ошибок и дублирующегося кода.
- Используйте ИИ для рутинных задач: Направляйте ИИ на выполнение простых и повторяющихся задач, таких как написание тривиальных функций или генерация шаблонного кода.
- Мониторинг и анализ: Внедряйте системы мониторинга и анализа, чтобы отслеживать, как ИИ влияет на производительность и качество кода.
Заключение с прогнозом развития
ИИ в кодировании — это не панацея, и его внедрение требует тщательного подхода. Важно понимать, что ИИ может помочь в некоторых задачах, но не всегда оправдывает ожидания по увеличению производительности. В будущем можно ожидать, что разработчики будут использовать ИИ более избирательно, сосредотачиваясь на его сильных сторонах и минимизируя недостатки.
# Пример использования ИИ для генерации простого кода с последующей проверкой
def generate_code_with_ai(prompt: str) -> str:
"""
Функция, имитирующая генерацию кода с помощью ИИ на основе введенного prompt.
Args:
prompt: Описание задачи или функциональности, которую нужно реализовать.
Returns:
str: Сгенерированный код.
"""
# Имитация генерации кода ИИ
generated_code = f"""
# Имитируемый код на основе prompt: {prompt}
def example_function():
print("Этот код сгенерирован ИИ на основе вашего запроса.")
"""
return generated_code
def code_review(code: str) -> str:
"""
Функция, имитирующая проверку кода.
Args:
code: Код, который нужно проверить.
Returns:
str: Проверенный код с комментариями.
"""
# Имитация проверки кода
reviewed_code = code + "\n# Проверка завершена. Убедитесь, что код соответствует требованиям."
return reviewed_code
# Пример использования
prompt = "Создать функцию, которая выводит сообщение 'Привет, мир!'"
generated_code = generate_code_with_ai(prompt)
reviewed_code = code_review(generated_code)
print("Сгенерированный код:")
print(generated_code)
print("\nПроверенный код:")
print(reviewed_code)
Этот пример демонстрирует, как можно использовать ИИ для генерации простого кода и последующей проверки. Важно понимать, что даже сгенерированный код требует проверки и доработки, что добавляет дополнительные шаги в процесс разработки.
Оригинал