3.4 Метрики активности и их ограничения
Обзор и мотивация
Активность, A в SPACE (тема 3.1), считает объём инженерной работы, наблюдаемый из системной телеметрии: коммиты, открытые пулл-реквесты, изменённые строки кода, оставленные комментарии ревью кода. Это самое простое для измерения измерение SPACE, потому что каждое из этих событий уже логируется автоматически инструментами, которые инженерные команды используют ежедневно, и именно эта лёгкость измерения делает это измерение самым опасным для чрезмерного веса. Активность это реальный законный сигнал при осторожном использовании. Используемая как самостоятельный представитель продуктивности, это единственное самое подделываемое, самое вводящее в заблуждение семейство метрик во всей истории измерения программной инженерии.
Основная проблема в том, что активность измеряет движение, а не ценность. Подсчёт коммитов не различает коммит, элегантно решивший сложную проблему, и коммит, разделивший одно значимое изменение на пять, чтобы выглядеть более продуктивным (манипулирование подменой из темы 1.2, применённое напрямую к этому семейству метрик). Изменённые строки кода вознаграждают многословность важнее гораздо более ценного навыка удаления ненужного кода. Инженер, проводящий целый день в глубоких непрерывных размышлениях перед написанием десяти элегантных хорошо протестированных строк, выглядит менее «активным» по этим метрикам, чем тот, кто коммитит поверхностные неотрецензированные изменения каждые двадцать минут, даже несмотря на то что первый очень часто производит гораздо больше реальной ценности.
Для крупных команд искушение использовать метрики активности для индивидуальной оценки постоянно и хорошо задокументировано, потому что активность легко приписать конкретному человеку и легко вычислить автоматически, в отличие от более сложных более честных сигналов в других измерениях SPACE. Эта тема существует конкретно для того, чтобы назвать это искушение и дать командам язык и доказательства, чтобы ему сопротивляться, потому что как только организация начинает индивидуально ранжировать инженеров по числу коммитов или строкам кода, ущерб сотрудничеству, качеству кода и морали хорошо задокументирован и труднообратим.
Ключевые принципы
- Активность измеряет движение, а не ценность. Это законный контекстный сигнал, никогда не самостоятельный представитель продуктивности.
- Это единственное самое исторически неправильно используемое семейство метрик в измерении программной инженерии. Относитесь к этой истории как к предупреждению, а не совпадению.
- Индивидуальное ранжирование по активности почти всегда вредно. Оно вредит сотрудничеству, вознаграждает видимую занятость и приглашает манипулирование почти немедленно.
- Данные активности наиболее полезны в агрегате, как контекст для других измерений, а не как независимый сигнал о каком-либо одном человеке или команде.
- Глубокая ценная работа часто выглядит тихой на дашборде активности. Это семейство метрик структурно предвзято именно против того вида мышления, который производит лучшие инженерные результаты.
Рекомендации
Никогда не ранжируйте и не оценивайте отдельных людей по сырым подсчётам активности
Это единственное самое трудное самое важное правило в этой теме. Число коммитов, строки кода и число пулл-реквестов никогда не должны появляться в индивидуальном обзоре эффективности, сравнительном рейтинге или любом контексте, где компенсация, положение или репутация инженера зависят от числа. Это напрямую следует из принципа стимульной экспозиции темы 1.2: в момент, когда активность становится стимулируемой индивидуальной метрикой, манипулирование следует почти немедленно, и результирующее поведение, раздувание коммитов, тривиальное разделение изменений, избегание глубокой неброской работы, производящей мало видимых событий, активно вредит организации.
Используйте данные активности в агрегате, как контекст, а не как приговор
Данные активности становятся подлинно полезными, когда агрегированы на командном уровне и читаются наряду с другими измерениями SPACE: резкое падение командной активности коммитов, совпадающее с ростом удовлетворённости, может указывать на то, что у команды наконец появилось пространство для вздоха, чтобы глубоко подумать и погасить технический долг, позитивный паттерн, а не негативный. Прочитанное изолированно, то же падение выглядит тревожным. Контекст из других измерений это то, что делает данные активности интерпретируемыми, а не вводящими в заблуждение.
Предпочитайте сигналы активности, близкие к качеству, сырому объёму
Там, где данные активности вообще полезны, предпочитайте сигналы, скорректированные на качество, сырым подсчётам: размер пулл-реквеста относительно глубины ревью (тема 2.9), или отношение нового кода к удалённому коду, которое может раскрыть, накапливает ли команда сложность или активно упрощает. Эти скорректированные сигналы всё ещё данные измерения активности, но сопротивляются самому грубому манипулированию, которое приглашают сырые подсчёты.
Следите конкретно за паттерном манипулирования подменой в данных активности
Самый распространённый способ манипулирования метриками активности это точно паттерн подмены из темы 1.2: разделение подлинно значимой работы на много мелких тривиальных событий для раздувания подсчёта. Если частота коммитов или пулл-реквестов растёт, пока лежащая в основе сложность или размер изменений резко падает, исследуйте, прежде чем приписывать заслугу реальному улучшению продуктивности, используя ту же диагностическую дисциплину, которую тема 2.10 рекомендует для частоты развёртывания.
Явно называйте и не поощряйте театр активности
Театр активности это работа, выполняемая, сознательно или нет, в первую очередь потому, что она видима и исчислима, а не потому, что она ценна: частые мелкие коммиты, заметная поздненочная активность или видимая занятость в общих каналах. Явное называние этого паттерна вашей команде и прозрачность в том, что руководство не использует сырую активность для оценки вклада, устраняет большую часть стимула для его возникновения вообще.
Компромиссы: плюсы и минусы
| Подход | Плюсы | Минусы |
|---|---|---|
| Индивидуальное ранжирование по активности | Просто, легко вычислить, ощущается напрямую действенным | Подделывается почти немедленно; вредит сотрудничеству и морали; измеряет не то |
| Отсутствие измерения активности вообще | Полностью избегает риска неправильного использования | Теряет подлинно полезный контекстный сигнал для обнаружения командных паттернов |
| Командная агрегированная активность, читаемая в контексте | Предоставляет полезный контекст без индивидуального риска | Требует дисциплины для интерпретации наряду с другими измерениями, а не изолированно |
| Сигналы активности, скорректированные на качество | Сопротивляется самому грубому манипулированию сырыми подсчётами | Сложнее вычислить и объяснить, чем простой подсчёт |
Центральное напряжение: полезность против риска неправильного использования. Данные активности, внимательно прочитанные в агрегате и контексте, подлинно полезны для обнаружения паттернов вроде неустойчивого темпа или команды, тихо находящей пространство для устранения технического долга. Те же данные, используемые как индивидуальная оценочная карточка, почти равномерно вредны. Разрешайте это напряжение не полным избеганием данных активности, а построением жёсткого организационного правила против индивидуального использования, при этом разрешая и даже поощряя продуманное контекстуализированное использование на командном уровне.
Вопросы для обсуждения в команде
Оценивался ли кто-либо в нашей организации когда-либо, формально или неформально, с использованием сырого подсчёта активности вроде коммитов или строк кода? Спросите это напрямую и будьте готовы к неудобному, но необходимому ответу; это неправильное использование часто происходит тихо, через случайный комментарий менеджера, никогда не становясь официальной политикой.
Как бы выглядел театр активности в нашей команде конкретно, и видели ли мы его признаки? Называние конкретной правдоподобной формы, которую этот паттерн мог бы принять в вашей собственной команде, делает его гораздо легче распознать, если он начнёт происходить.
Когда наши командные данные активности двигаются, интерпретируем ли мы их наряду с другими измерениями SPACE, или изолированно? Падение активности, прочитанное изолированно, выглядит тревожным; то же падение, прочитанное наряду с улучшением удовлетворённости или результативности, может выглядеть как подлинно позитивный паттерн. Проверьте вашу фактическую практику обзора на это различие.
Видели ли мы когда-либо рост частоты коммитов или пулл-реквестов, сопровождаемый сжимающимся средним размером изменения, предполагающий тривиальное разделение, а не подлинный выигрыш продуктивности? Возьмите реальные данные и проверьте на этот конкретный паттерн манипулирования подменой.
Как мы сейчас говорим о том, «кто вносит наибольший вклад» в нашей команде, и неявно ли этот разговор опирается на данные активности даже без формальной метрики? Неформальная неизмеренная предвзятость к видимой занятости может формировать восприятие и вознаграждение даже без явной основанной на активности политики; честно вскройте это.
Как выглядит подлинно ценная, но тихая работа, глубокое мышление, тщательный дизайн, наставничество, в нашей команде, и как мы убеждаемся, что она признана, несмотря на генерацию малого количества видимых данных активности? Этот вопрос позитивное дополнение к предыдущим: называние того, как выглядит хорошая тихая работа, помогает защитить её от того, чтобы быть упущенной в пользу более громкой более исчислимой работы.
Отраслевой взгляд
Стартап. С маленькой тесно сотрудничающей командой данные активности обычно видны без необходимости в дашборде вообще, и риск индивидуального ранжирования, против которого предупреждает эта тема, менее вероятен просто потому, что все уже знают, над чем работают все остальные. Риск скорее в том, что основатель бессознательно благоволит видимо «занятому» поведению при принятии ранних решений о найме или доле.
Малый бизнес. Данные активности из ваших существующих инструментов нормально бегло просматривать для общего ощущения пропускной способности команды, но сопротивляйтесь использованию их для прямого сравнения отдельных участников; реальная ценность маленькой команды часто концентрируется у нескольких людей, делающих тихую высокорычажную работу, которую взгляд на число коммитов систематически недооценил бы.
Корпорация. Именно здесь искушение индивидуального ранжирования сильнее всего и наиболее разрушительно, потому что данные активности самый лёгкий сигнал для получения в процессе обзора эффективности, охватывающем тысячи инженеров, и давление найти какой-то исчислимый вход реально. Постройте явную сообщённую принудительно применяемую политику против индивидуального ранжирования по активности и периодически проверяйте практики обзора эффективности, чтобы подтвердить, что политика фактически соблюдается на практике, а не только заявлена.
Государство. Метрики активности могут быть соблазнительны для цитирования в публичном отчёте как доказательство продуктивности («десять тысяч коммитов в этом году»), но такой заголовок близок к бессмысленности и может пригласить именно неправильную проверку, как только знающий рецензент укажет, что сырая активность ничего не говорит о результатах. Вместо этого сообщайте данные результата и результативности (тема 3.3) и избегайте подсчётов активности в любой внешней коммуникации.
Примеры
Корпорация. Руководство инженерной службы компании-разработчика программного обеспечения, без формальной политики, начало неформально ссылаться на индивидуальные данные частоты коммитов в обсуждениях повышения. Внутренний обзор, вызванный не связанным проектом анализа текучести кадров, обнаружил, что инженеры, работающие над самыми сложными самыми ценными системами компании, требующими долгих периодов тщательной проектной работы до написания какого-либо кода, систематически имели более низкие подсчёты коммитов, чем инженеры на более простых более инкрементально разрабатываемых системах, и в результате тонко находились в невыгодном положении в разговорах о повышении. Руководство издало явную сообщённую политику, запрещающую ссылки на подсчёт активности в обсуждениях эффективности и повышения, и сдвинуло доказательства повышения к многосигнальному подходу результативности из темы 3.3.
Государство. Агентство цифровых услуг, под давлением продемонстрировать продуктивность законодательному надзорному комитету, первоначально предложило сообщить общее число коммитов и строк написанного кода по своей инженерной программе как доказательство доставленной ценности. Внутренний технический советник возразил, правильно отметив, что это формулирование приглашает именно неправильную проверку, поскольку технически грамотный член комитета мог легко указать, что сырой объём кода ничего не говорит о том, работал ли код или имел ли значение. Пересмотренный отчёт агентства вместо этого использовал метрики результата (тема 5.3): сокращение ошибок, о которых сообщают граждане, и увеличение успешного завершения самообслуживания, что держалось гораздо лучше под вопросами комитета, чем держались бы числа активности.
Бизнес-кейс: мотивация, ROI и TCO
Отдача от правильного обращения с метриками активности, использования их контекстуально, а не как индивидуальных оценочных карточек: избегнутый ущерб: организации, индивидуально ранжирующие инженеров по активности, надёжно видят манипулятивное поведение, сниженное сотрудничество (инженеры защищают собственный видимый выпуск, а не помогают товарищу по команде) и систематическую предвзятость против глубокой высокорычажной работы, часто производящей наибольшую ценность, генерируя наименьшую видимую активность. Обращение вспять этого ущерба, однажды укоренившегося в культуре обзора эффективности, подлинно сложно и медленно.
Полная стоимость избегания этой ловушки в основном организационная дисциплина: явная последовательно принудительно применяемая политика против индивидуального ранжирования по активности и приверженность инвестировать вместо этого в более сложное более честное измерение результативности, описанное в теме 3.3. Эта дисциплина стоит меньше, чем неправильно направленные решения о повышении, подорванное сотрудничество и манипулятивное поведение, которые индивидуальные метрики активности надёжно производят со временем.
Антипаттерны и ловушки
- Индивидуальное ранжирование по числу коммитов или строкам кода: единственное самое разрушительное самое исторически распространённое неправильное использование во всей этой книге.
- Театр активности: работа, выполняемая в первую очередь ради видимости, а не ценности, полностью предсказуемый ответ на основанную на активности оценку.
- Интерпретация командного падения активности изолированно, без проверки других измерений SPACE: может перепутать подлинно позитивный паттерн с тревожным.
- Цитирование сырых подсчётов активности во внешней или обращённой к руководству коммуникации: приглашает именно неправильную проверку и мало говорит о фактической ценности.
- Систематическая недооценка глубокой тщательной работы, генерирующей мало видимых событий: структурная предвзятость, встроенная во всё это семейство метрик.
- Неформальная неполитизированная предвзятость активности, просачивающаяся в разговоры о повышении или обзоре: вредна даже без официальной метрики за ней.
Модель зрелости
- Уровень 1, Инициация: Метрики активности используются, формально или неформально, для оценки или ранжирования отдельных людей, без осознания риска.
- Уровень 2, Развитие: Существует некоторое осознание риска, но никакая явная политика не предотвращает неформальное влияние данных активности на обзоры или обсуждения повышения.
- Уровень 3, Стандартизация: Явная сообщённая общеорганизационная политика запрещает индивидуальное ранжирование по активности, а данные активности используются только в агрегированном командном контексте.
- Уровень 4, Управление: Практики обзора эффективности и повышения периодически проверяются, чтобы подтвердить, что политика соблюдается на практике, а скорректированные на качество сигналы активности заменяют сырые подсчёты там, где данные активности вообще используются.
- Уровень 5, Оркестрация: Организация демонстративно сдвинула культуру оценки прочь от метрик активности к многосигнальному подходу результативности темы 3.3, с видимым улучшением сотрудничества и сниженным манипулятивным поведением как доказательством того, что сдвиг сработал.
Идеи для обсуждения
- Чувствовал ли здесь кто-либо когда-либо, что его оценивают, даже неформально, по тому, насколько «занятой» выглядела его активность?
- Как бы выглядел театр активности конкретно в нашей команде?
- Есть ли у нас явная письменная политика против индивидуального ранжирования по активности, и действительно ли она соблюдается?
- Какая тихая высокоценная работа в нашей команде сейчас генерирует наименее видимые данные активности?
- Как бы мы перепроектировали наши доказательства обзора эффективности, чтобы полностью убрать подсчёты активности?
Основные выводы
- Активность измеряет движение, а не ценность; это единственное самое исторически неправильно используемое семейство метрик в программной инженерии.
- Никогда не ранжируйте и не оценивайте отдельных людей по сырым подсчётам активности; это самое трудное и самое важное правило в этой теме.
- Используйте данные активности в агрегате, как контекст для других измерений SPACE, никогда как самостоятельный приговор.
- Следите за театром активности и паттерном манипулирования подменой (тема 1.2) конкретно внутри этого семейства метрик.
- Глубокая высокоценная работа часто генерирует наименее видимые данные активности; защитите её от систематической недооценки.
Источники и дальнейшее чтение
- Forsgren, Nicole, Margaret-Anne Storey, Chandra Maddila, Thomas Zimmermann, Brian Houck, and Jenna Butler, “The SPACE of Developer Productivity,” ACM Queue (2021).
- Peopleware: Productive Projects and Teams, Том Демарко и Тимоти Листер.
- Deep Work: Rules for Focused Success in a Distracted World, Кэл Ньюпорт.
- The Tyranny of Metrics, Джерри З. Мюллер.