Technology · · 3 min read
Meta использует данные об изменениях кода, чтобы оценить влияние ИИ на разработку
В беседе с исследователем Meta Морицем Беллером рассматриваются методы компании для оценки продуктивности разработчиков, влияние ИИ и ограничения автоматизированного тестирования.
Meta использует измерения, полученные по отдельным изменениям кода, чтобы понять, как инструменты разработки и искусственный интеллект влияют на работу разработчиков, сообщает newsletter.getdx.com. По словам исследователя Морица Беллера, время, которое сотрудники компании тратят на подготовку одного изменения, за год сократилось более чем на 40%, хотя инженеры создают больше изменений, причём более крупных.
Этот показатель, известный как время подготовки диффа, отражает активные усилия, необходимые для создания, тестирования и проверки одного изменения кода. Анализ изменений по отдельности даёт Meta более сфокусированное представление, чем расчёт продуктивности на основе всего, чем разработчик занимается в течение дня.
Meta не использует этот показатель для ранжирования или оценки отдельных инженеров. Вместо этого компания изучает закономерности в командах, подразделениях и организации в целом. Цель — обнаруживать ухудшения показателей, выявлять полезные улучшения и решать, где оправданы дальнейшие инвестиции в инструменты разработки.
Более детальный взгляд на продуктивность
Компания рассматривает время подготовки диффа как один из нескольких сигналов. Наряду с ним учитываются объём выполненной работы, размер изменений и их качество, поскольку ни один показатель не способен надёжно описать продуктивность разработки. Например, более короткое время выполнения изменения не обязательно приносит пользу, если получившийся код низкого качества или требует существенной доработки.
Такой подход также позволяет Meta проверять, дают ли изменения во фреймворках и инструментах разработчика практический эффект. В отчёте в качестве примера приводится автоматическая мемоизация в компиляторе React. По сравнению с ручным добавлением кэширования автоматический подход компилятора примерно на 30% сократил время, необходимое для подготовки изменения. Беллер считает результаты такого масштаба свидетельством того, что фундаментальные улучшения среды разработки могут быть важнее небольших доработок интерфейсов.
Сокращение времени подготовки нельзя полностью объяснить более быстрым набором текста или генерацией кода. Беллер полагает, что разработчики могут использовать сэкономленное время на сбор контекста и выполнение задач, связанных с реализацией. На написание промптов, судя по всему, приходится лишь небольшая доля этой дополнительной активности.
По мере того как генерация кода становится менее затратной, более сложной проблемой может оказаться определение того, что именно должен делать код. Ценность замысла разработчика возрастает, когда автоматизированная система способна быстро создать реализацию, но может неправильно понять неполный запрос.
Чего не учитывают показатели продуктивности
Традиционная телеметрия лучше фиксирует изменения кода, чем работу, которая им предшествует. Создание схем на доске, мозговые штурмы и обсуждения архитектуры могут иметь решающее значение для результата, не оставляя при этом очевидной связи с последующим диффом. Стенограммы встреч и другие материалы, создаваемые ИИ, со временем могут упростить изучение части этой подготовительной работы.
Это не делает архитектуру менее важной. Отказ от проектной документации может лишь переложить нагрузку на проверяющих, которым затем приходится выводить предполагаемую структуру из готовой реализации. Поэтому более быстрое производство может скрывать дополнительную работу в других частях процесса разработки.
В более раннем исследовании Беллера Mind the Gap сравнивались автоматически записываемая активность и собственные оценки разработчиками своей продуктивности. Время, проведённое за написанием кода, было значимым предиктором, однако на то, насколько продуктивными себя ощущали люди, также влияли отдых, отвлекающие факторы и дежурства. В новой версии исследования нужно было бы изучить, как разработчики работают с агентами, насколько они им доверяют и не создаёт ли одновременная координация нескольких автоматизированных задач чрезмерной когнитивной нагрузки.
Больший объём выполненной работы также не гарантирует лучшего опыта. В обсуждении отмечается, что продуктивность может расти, тогда как концентрация, умственные усилия и общая удовлетворённость остаются на прежнем уровне или снижаются. Межличностные отношения, общее понимание и неформальный обмен знаниями важны для работы инженеров, но по-прежнему с трудом отражаются в большинстве показателей.
Сокращение ненужных встреч может повысить объём выполненной работы, однако чрезмерное уменьшение числа совместных обсуждений способно лишить команды идей и контекста. Важны и небольшие социальные взаимодействия: исследование, обсуждавшееся в эпизоде, показало, что неформальные разговоры до и после встреч сильнее предсказывали заявленную людьми продуктивность, чем качество интернет-соединения.
Проблема тестирования ИИ-агентов
ИИ-агенты делают создание модульных и сквозных тестов дешёвым, потенциально помогая устранить давнюю проблему разработчиков, которые раньше писали мало автоматизированных тестов. Но набор успешно проходящих тестов может создавать обманчивое ощущение надёжности, если реализация и тесты основаны на одном и том же ошибочном толковании неоднозначного запроса.
Агент может создать код и тесты, внутренне согласующиеся друг с другом, но всё же не соответствующие реальной цели разработчика. Этот риск делает ещё более важным определение правильности до начала реализации. В ходе беседы высказывается предположение, что по мере того, как агенты берут на себя больше работы по написанию кода, разработка на основе спецификаций может стать дополнением к разработке через тестирование.
Скорость автоматизированной реализации также повышает риск того, что команды неосознанно будут параллельно создавать одно и то же. При совершенствовании измерений нужно будет учитывать не только объём завершённого кода, но и согласованность действий, коммуникацию и дублирование работы. Данные Meta на уровне отдельных диффов позволяют увидеть некоторые последствия появления новых инструментов, однако более широкое обсуждение ясно показывает: продуктивность разработки остаётся не только технической, но и человеческой и организационной проблемой.