Давайте поговорим об юзабилити: распаковывание пользовательского опыта программирования A-A-A-Advisted
5 августа 2025 г.Таблица ссылок
Аннотация и 1 введение
2. Предыдущие концептуализации интеллектуальной помощи для программистов
3. Краткий обзор больших языковых моделей для генерации кода
4. Коммерческие инструменты программирования, которые используют большие языковые модели
5. Надежность, безопасность и последствия безопасности моделей ИИ, генерирующих код,
6. Изузаение юзабилити и дизайна программирования A-ассистентного
7. Опыт отчетов и 7.1. Писать эффективные подсказки сложно
7.2 Активность программирования сдвигается в сторону проверки и незнакомой отладки
7.3. Эти инструменты полезны для шаблона и повторного использования кода
8. Неадекватность существующих метафор для программирования A-A-Advisted
8.1. Помощь ИИ в качестве поиска
8.2. Помощь ИИ в качестве компиляции
8.3. Помощь ИИ в качестве парного программирования
8.4. Отчетливый способ программирования
9. Проблемы с применением программирования конечного пользователя
9.1. Выпуск 1: Спецификация намерений, разложение проблемы и вычислительное мышление
9.2. Выпуск 2: Правильность кода, качество и (над) уверенность
9.3. Выпуск 3: Понимание и обслуживание кода
9.4. Выпуск 4: Последствия автоматизации в программировании конечных пользователей
9.5. Выпуск 5: Код без кода и дилемма прямого ответа
10. Заключение
A. Источники отчета о испытании
Ссылки
6. Изузаение юзабилити и дизайна программирования A-ассистентного
Vaithilingam et al. (2022) провели сравнительное исследование внутри субъектов (n = 24) Github Copilot, сравнивая его пользовательский опыт с опытом традиционного автозаполнения (в частности, плагина Intellisense, а не то же самое, что функция Intellicode, упомянутая ранее). Участники не смогли выполнять задачи чаще с помощью спилота, чем с Intellisense, и не было никакого существенного влияния на время выполнения задач. Возможно, что неудивительно, что авторы считают, что оценка правильного сгенерированного кода является сложной и удрушающей средой эффективности, особенно когда генерируемый код имеет фундаментальный недостаток или неэффективность, что приводит к тому, что программиста в конечном итоге безуспешно «погоня за дикой гусей» или отладки. Тем не менее, подавляющее большинство (19 из 24) участников сообщили о сильном предпочтении копилота в опросе после задания. В то время как участники были менее уверены в коде, сгенерированном Copilot, они почти повсеместно (23 из 24) воспринимали его более полезным, поскольку он имел потенциал для создания полезных отправных точек и сохранения программиста усилия по поиску в Интернете для документированных решений, которые могут стать основой для повторного использования.
Ziegler et al. (2022) провел опрос (n = 2 047) воспринимаемой производительности пользователей мопель в США. Они сопоставили их с телеметрическими измерениями использования надстройки копила, которые включали в себя такие показатели, как часто, как часто было показано автоматическое завершение, как часто оно было принято, как часто оно сохранялось неизменным в документе в течение определенного периода времени, как часто он сохраняется с незначительными вариациями (например, измеряемым по расстоянию левенштеина) и так. Они считают, что уровень принятия (соотношение принятых предложений к показанным предложениям) является самым сильным предиктором воспринимаемой производительности пользователей из -за филота. Увлекательно, что они обнаруживают, что схема показателей принятия для всех пользователей в совокупности следует ежедневному и еженедельному «циркадному» ритму, так что пользователи с большей вероятностью принимают завершение копирования из рабочих часов и по выходным. Однако для любого данного пользователя частота принятия зависит от обычного рабочего времени этого пользователя; Предложения за пределами нормального рабочего времени менее склонны к принятию. Требуется будущая работа, чтобы увидеть, повторяются ли этот вывод, и если да, чтобы установить, как и почему уровень принятия настолько значительно влияет на рабочее время.
Xu, Vasilescu и Neubig (2022) провели исследование внутри субъектов (n = 31), сравнивая опыт программирования с плагином генерации кода и без него. Их экспериментальный плагин принимает форму текстового поля, в котором пользователь входит в подсказку естественного языка, система отвечает списком фрагментов кода, и при щелчке желаемый фрагмент вставляется в курсор. Этот рабочий процесс отличается от Copilot's, где «подсказка» является текстом в исходном файле и может содержать сочетание комментариев и кода естественного языка. Плагин поддерживал как генерацию кода (с использованием нейронной сети на основе дерева), так и поиска фрагмента кода (поиск переполнения стека форума программирования). Результаты как поколения, так и поиска показаны в одном и том же списке, но визуально разграничены. Авторы не обнаружили существенного влияния плагина на время выполнения задачи или правильность программы. Они обнаружили, что на простые запросы с большей вероятностью будут отвечать правильно с помощью поколения, и более сложные запросы, требующие нескольких шагов, с большей вероятностью будут отвечать правильно, хотя и поиск, и что можно было предсказать, какой подход будет успешным, основываясь на содержании слова в запросах. Кроме того, они обнаружили, что большинство (60%) запросов естественного языка, которые участники писали в своем эксперименте, не были достаточно хорошо указаны для человека, чтобы написать код, реализующий эти намерения. Извлеченные фрагменты были отредактированы чаще, чем сгенерированные фрагменты, в основном для переименования идентификаторов и выбора различных параметров. В опросе после эксперимента участники сообщили, что в основном чувствовали себя нейтральными или несколько положительными (30 из 31). Эти участники чувствовали, что плагин был полезен для поиска фрагментов, о которых они знали, но не могут вспомнить, и менее разрушительный, чем использование браузера, но взаимодействие работало лучше, когда разработчик имел ранее существовавшие знания о целевых API и структурах, и потребовалось эксперименты, чтобы понять «правильный путь», чтобы сформулировать вопросы. Не было четкого признака предпочтения между поиском и поколением.
Jiang et al. (2022) разработал инструмент на основе LLM для преобразования операторов естественного языка в код. Как и в XU, VasiLescu, & Neubig (2022), подсказки вводятся во всплывающее диалог, применяемое в курсоре из редактора кода, а не в виде комментариев. В исследовании (n = 14) участникам было дано неделю, чтобы выполнить две задачи по строительству веб-сайтов с помощью инструмента, при записи экрана, а впоследствии были опрошены. Как и в других исследованиях, участники увидели утилиту в инструменте для облегчения быстрого поиска API и для написания кода шаблона. Они обнаружили, что запросы начинающих программистов были в основном естественным языком, в то время как эксперты с большей вероятностью смешивают код в свои запросы. В то время как некоторые запросы были абстрактными и выражали цели высокого уровня, у большинства были низкая гранулярность, «примерно эквивалентно линии кода». Чтобы справиться с неудачами моделей, участники использовали различные стратегии для перерождения своего запроса, таких как сокращение объема запроса или замена слов альтернативами, но никакая конкретная стратегия не наблюдалась более эффективной, чем любая другая. Участники боролись с формированием ментальной модели того, что модель может понять, и «синтаксис» языка, который он потребовался, - это как раз нечеткая проблема сопоставления абстракции, которую мы описали ранее, которую авторы называют «странной долиной». Авторы предлагают возможные решения, такие как автоматическое переоборудование подсказок, предлагающие более простые задачи, предлагающие разбивки задач, а также лучшие встроенные и учебные пособия.

Barke et al. (2022) изучали, как программисты (n = 20) используют Copilot Github для выполнения коротких задач программирования в Python, Rust, Haskell и Java. Благодаря анализу записей экрана авторы идентифицировали два основных режима взаимодействия с Copilot: ускорение, где у программиста есть хорошо сформированные намерения, а копиловые ускоряют код в «Маленьких логических единицах», а также разведки, где используются предложения для копирования, чтобы помочь процессу планирования, «Помогите им начать, предложить потенциально полезную структуру и вызовы API, или объяснить альтернативные решения». При ускорении длинные предложения кода, которые требуют времени для чтения и оценки, могут сломать поток программиста. Участники разработали эвристику для быстрого сканирования, таких как поиск наличия определенных ключевых слов. В исследовании участники с большей вероятностью побудили использовать чисто естественные комментарии, а не сочетание комментариев и кода. Более того, эти быстрые комментарии часто «очищались» после принятия предложения, которое подразумевает форму «языка обучения», отделенной от «языка объяснения».
Мади (2022) сравнил читаемость кода, сгенерированного Copilot, с кодом, написанного человеческими программистами в пользовательском исследовании (n = 21). Они обнаружили, что код, сгенерированная моделью, сопоставим по сложности и читабельности с кодом, авторизованным человеком.
Помощник разработчика Bing (Y. Wei et al., 2015; Zhang et al., 2016) (также называемый поиском кода Bing), был экспериментальным расширением для Visual Studio, первоначально выпущенной в 2015 году. Он включил в IDE, идентификатор поиска для фрагментов кодов с форумов, таких как переполнение стека. У него была возможность переписать полученный код, чтобы использовать идентификаторы из текущего файла программиста. Пользовательское исследование (n = 14), сравнивающее время задачи при выполнении 45 задач короткого программирования с расширением и обычным поиском в Интернете, найденный в среднем 28% времени, было сохранено с расширением. Больше данных телеметрии, собранных в течение трех недель (представляющих около 20 000 пользователей и около 3000 запросов в день), показали, что несколько программистов часто использовали эту функцию. Некоторые использовали его неоднократно для связанных проблем в быстрой последовательности, показывая его использование в многоэтапных задачах. Другие выпускали один и тот же запрос несколько раз в отдельные дни, предполагая, что скорость автоматического завершения была полезна, даже если программист знал решение.
Авторы:
(1) Advait Sarkar, Microsoft Research, Кембриджский университет (advait@microsoft.com);
(2) Эндрю Д. Гордон, Microsoft Research, Эдинбургский университет (adg@microsoft.com);
(3) Карина Негрину, Microsoft Research (cnegreanu@microsoft.com);
(4) Christian Poelitz, Microsoft Research (cpoelitz@microsoft.com);
(5) Sruti Srinivasa Ragavan, Microsoft Research (a-srutis@microsoft.com);
(6) Бен Зорн, Microsoft Research (ben.zorn@microsoft.com).
Эта статья есть
Оригинал