3.4 활동 메트릭과 그 한계
개요 및 동기
SPACE(주제 3.1)에서 A에 해당하는 활동은 시스템 텔레메트리로부터 관측 가능한 엔지니어링 작업의 물량을 센다: 커밋, 열린 풀 리퀘스트, 변경된 코드 줄, 남겨진 코드 리뷰 코멘트. 이것은 측정하기 가장 쉬운 SPACE 차원인데, 이 사건들 각각이 엔지니어링 팀이 매일 사용하는 도구에 의해 이미 자동으로 기록되기 때문이며, 그 측정의 용이성이야말로 이 차원을 과도하게 가중치를 두기 가장 위험한 것으로 만든다. 활동은 조심스럽게 사용될 때 실재하고 정당한 신호다. 독립형 생산성 대리 지표로 사용될 때, 그것은 소프트웨어 공학 측정의 전체 역사에서 단일한 가장 게임당하고 가장 오도하는 메트릭 패밀리다.
핵심 문제는 활동이 가치가 아니라 움직임을 측정한다는 것이다. 커밋 수는 어려운 문제를 우아하게 해결한 커밋과 더 생산적으로 보이기 위해 하나의 의미 있는 변경을 다섯 개로 쪼갠 커밋(이 메트릭 패밀리에 직접 적용된 주제 1.2의 대체 게임)을 구별하지 않는다. 변경된 코드 줄은 불필요한 코드를 삭제하는 훨씬 더 가치 있는 기술보다 장황함을 보상한다. 열 줄의 우아하고 잘 테스트된 코드를 쓰기 전에 하루 종일 깊고 방해받지 않는 사고를 하는 엔지니어는, 비록 전자가 훨씬 더 많은 실제 가치를 만들어 내는 경우가 매우 흔할지라도, 20분마다 얕고 리뷰되지 않은 변경을 커밋하는 사람보다 이 메트릭에서 덜 “활동적”으로 보인다.
대규모 팀에게 개인 평가를 위해 활동 메트릭을 사용하려는 유혹은 끊임없고 잘 문서화되어 있는데, 다른 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.
- DeMarco, Tom, and Timothy Lister. Peopleware: Productive Projects and Teams. Dorset House, 1987.
- Newport, Cal. Deep Work: Rules for Focused Success in a Distracted World. Grand Central Publishing, 2016.
- Muller, Jerry Z. The Tyranny of Metrics. Princeton University Press, 2018.