К основному содержимому
#Productivity

[2/3] What's DAT? Three Case Studies of Measuring Software Development Productivity at Meta With Diff Authoring Time (Рубрика Productivity)

#Productivity #Engineering #Software #Bigtech #Management #Leadership #Processes

Продолжая рассказ про этот whitepaper от Meta, чья деятельность запрещена на территории РФ, перейдем к валидации подходом с использованием DAT (Diff Authoring Time). Для этого авторы прповели дополнительные исследования

1. Исследование пользовательского опыта

  • Создали ground truth датасет через запись реальной работы разработчиков
  • Использовали случайную выборку для минимизации предвзятости
  • Получили среднюю точность DAT более 90% по сравнению с реальными данными

2. Крупномасштабный опрос

  • Сравнили DAT с оценками разработчиков (968 уникальных диффов)
  • Встроили опросы в инструмент Phabricator, который используется для код ревью. Опрос стартует сразу после завершения диффа 3. Дескриптивная статистика
  • DAT покрывает 87% всех подходящих диффов
  • DAT оказалось стабильной метрикой (использовался 99-го перцентиль winsorized mean для отчетности)
  • Авторы отвалидировали DAT, проведя сравнение с метрикой Time Spent by Diff, которая определяется как "averages coding time in a given period by the number of diffs published in that period" 4. Визуализация временных рядов
  • Сделали детальную визуализацию того, как сырая телеметрия преобразуется в DAT (изображение будет в финальном посте)
  • Сделали кросс-валидацию с авторами изменений (с самими разработчиками)

Дальше авторы рассказывают про 3 конкретных эксперимента, которые они проводили

1. Типизированное мокирование в Hack Суть эксперимента в том, чтобы внедрить типизацию в инструменты мокирования внутри Hack (внутренняя версия доработанного PHP). Для эксперимента авторы мигрировали часть моков на типы, а часть оставили как есть и дальше сравнили DAT при создании diffs в разных частях кодовой базы. Эксперимент показал как языковые возможности с конкретными показателями продуктивности

  • 14% улучшение DAT: Первое количественное доказательство влияния типизации на продуктивность в промышленной среде
  • Статистическая значимость: p < 0.001 для всех размеров диффов

2. Авто-мемоизация в React компайлере Авторы дорабатывали фреймворк React для авто-мемоизации и дальше провели эксперимент, где сравнили DAT при создании diffs с ручной и автоматической мемоизацией.

  • Они использовали смешанную модель эффектов для учета конфаундеров через регрессионную модель
  • Для нерандомизированных данных они использовали Wasserstein distance для измерений истинной разницы между граппуми
  • 33% улучшение DAT: Значительное повышение эффективности при использовании автоматической мемоизации

3. Анализ эффективности от переиспользования кода Это исследование мне показалось самым интересным, так как авторы оценивали эффект применения кросс-платформенных технологий (у ребя это был React). Правда, для анализа пришлось использовать контрфактический анализ для оценки гипотетического времени разработки без переиспользования кода. На выходе получилось, что

  • Кроссплатформа дает больше, чем 50% улучшение относительно разработки без переиспользования
  • А это тысячи часов ежегодной экономии DAT через фреймворки переиспользования кода

В итоге, этот подход к использованию метрики DAT привел к следующим эффектам

  • Переход Infrastructure команд к культуре, ориентированной на a/b эксперименты
  • Принятие решений на основе данных - DAT используется для планирования и приоритизации разработки
  • DAT и эксперименты выравняли подходов между продуктовыми и инфраструктурными командами

Если говорить про дальнейшие планы авторов исследования, то они планируют расширение

  • Горизонтально - добавление кроме diffs и других артефактов разработки (documents and tasks). Это позволит создать общий фреймворка измерения времени активностей для экспериментов
  • Вертикально - поддержка большего количества инструментов (разных IDEs и других инструментов). Это позволит меньше ориентироваться на эвристики и больше на точные измерения.

#Engineering #Software #Bigtech #Productivity #Management #Leadership #Processes