WhoIsLoafing은 기여도를 하나의 숫자로 보여주지 않아요. 커밋 수 기준과 라인 수 기준, 두 가지를 나란히 보여줘요. "그래서 누가 제일 많이 했다는 건가요?"라는 질문을 받을 때가 있는데, 숫자를 하나로 합치지 않은 데에는 이유가 있어요.
커밋 수가 말해 주는 것
커밋 수는 얼마나 자주 작업을 올렸는지를 보여줘요. 프로젝트에 꾸준히 손을 댔는지 가늠하기 좋은 숫자예요.
하지만 커밋의 크기는 사람마다 달라요.
- 어떤 사람은 버튼 색을 바꾸고 한 번, 오타를 고치고 한 번 올려요.
- 어떤 사람은 사흘 동안 만든 기능을 한 번에 올려요.
두 사람의 커밋 수를 그대로 비교하면 앞사람이 훨씬 많이 한 것처럼 보여요. 커밋 수는 작업하는 습관에 크게 좌우돼요.
라인 수가 말해 주는 것
라인 수는 추가한 줄과 삭제한 줄을 더한 값이에요. 코드가 얼마나 많이 바뀌었는지를 보여줘요.
이 숫자도 함정이 있어요.
- 자동으로 만들어진 파일이 섞이면 크게 부풀어요. 패키지를 하나 설치했을 뿐인데 잠금 파일이 수천 줄 바뀌기도 해요.
- 파일을 옮기거나 형식을 정리하면 내용은 그대로인데 줄 수만 크게 잡혀요.
- 좋은 코드는 오히려 짧아요. 백 줄짜리 코드를 스무 줄로 줄인 사람은 훌륭한 일을 했지만 숫자는 작게 나와요.
- 화면을 그리는 코드는 줄 수가 많고, 까다로운 버그 하나를 잡는 코드는 한 줄일 때도 있어요.
라인 수는 작업의 종류에 크게 좌우돼요.
그래서 두 가지를 같이 봐요
두 숫자를 함께 놓으면 한쪽만 볼 때 보이지 않던 것이 보여요.
| 커밋 수 기준 | 라인 수 기준 | 이런 경우일 수 있어요 |
|---|---|---|
| 높아요 | 높아요 | 프로젝트 전반을 꾸준히 이끈 사람이에요 |
| 높아요 | 낮아요 | 작게 자주 올리거나, 수정과 마무리 작업을 주로 맡았어요 |
| 낮아요 | 높아요 | 큰 기능을 한 번에 올렸거나, 초기 뼈대를 잡았어요 |
| 낮아요 | 낮아요 | 늦게 합류했거나, 코드 밖의 일을 맡았을 수 있어요 |
WhoIsLoafing이 참여자를 소개하는 순서는 두 기여도의 평균이 큰 순서예요. 어느 한쪽 습관을 가진 사람만 유리해지지 않게 하려는 장치예요.
숫자를 더 정확하게 만드는 방법
자동으로 만들어진 파일 빼기
기여도 분석을 시작하면 잠금 파일과 빌드 결과물을 뺄지 먼저 물어봐요.
- 전부 포함하기는 빠르지만, 자동으로 만들어진 파일의 줄 수가 그대로 들어가요.
- 빼고 계산하기는 최근 커밋 300개를 하나씩 읽으면서 잠금 파일, 빌드 결과물, 자동 생성 파일, 이미지 같은 파일을 라인 수에서 빼요. 시간이 조금 더 걸리지만 사람이 직접 쓴 코드에 가까운 숫자가 나와요.
라인 수 기준 기여도가 한 사람에게 지나치게 쏠려 있다면 빼고 계산하기로 다시 돌려 보세요. 결과가 꽤 달라질 수 있어요.
병합 커밋과 봇은 처음부터 빼요
브랜치를 합칠 때 자동으로 생기는 병합 커밋과, 의존성을 올려 주는 봇 계정의 커밋은 집계에서 빼요. 사람이 한 작업이 아니기 때문이에요.
같은 사람은 하나로 합쳐요
집 컴퓨터와 학교 컴퓨터에서 다른 이메일로 커밋하는 경우가 흔해요. GitHub 계정이 같으면 한 사람으로 합치고, 계정에 연결되지 않은 커밋도 이메일과 이름으로 주인을 찾아서 합쳐요.
숫자에 잡히지 않는 기여
아무리 정확하게 계산해도 기록에 남지 않는 일은 숫자가 될 수 없어요.
- 무엇을 만들지 정하고 화면을 그리는 일
- 다른 사람의 코드를 읽고 의견을 남기는 일
- 막힌 팀원 옆에서 함께 문제를 푸는 일
- 일정을 챙기고 발표를 준비하는 일
- 배포 환경을 대시보드에서 직접 설정하는 일
그래서 WhoIsLoafing은 숫자만 던져 주지 않고, 참여자마다 맡은 기능과 코드 스타일을 함께 정리해요. "기여도 30%"보다 "로그인과 결제 화면을 맡았고, 예외 상황을 꼼꼼히 챙기는 편"이라는 설명이 그 사람을 훨씬 잘 말해 주기 때문이에요.
한 줄로 정리하면
커밋 수는 얼마나 자주를, 라인 수는 얼마나 많이를 말해 줘요. 그리고 무엇을, 어떻게 했는지는 기능 목록과 코드 스타일이 말해 줘요. 기여도는 이 세 가지를 함께 볼 때 비로소 읽을 수 있어요.
숫자가 예상과 다르게 나왔다면 틀렸다고 넘기기 전에 왜 그렇게 나왔는지 한번 들여다보세요. 대개는 팀이 일하는 방식에 대한 이야기가 숨어 있어요.