[연재] 감사 인원을 따로 뺐더니 진짜 결함 9건을 기각했습니다 — 검사조는 안 만드는 이유
"여기 뭔가 있다"는 지시서로는 못 잡습니다
규모가 큰 일을 나눌 때 항상 하던 방식이 있었습니다. 만드는 인원과 검사하는 인원을 나누는 거예요. 대략 여섯 대 둘 정도로요. 그날도 그렇게 했습니다. 여섯은 만들게 하고, 둘은 그걸 검사만 하게 시켰어요. 검사조에게 준 지시서는 짧았습니다. "어떤 파일 11번째 줄쯤에 뭔가 있는 것 같다." 딱 그 정도였어요.
결과가 나왔는데, 검사조가 진짜 결함 9건을 기각했습니다. 있는 걸 없다고 판정한 거예요. 9건이라는 숫자를 처음 봤을 때는 검사조를 잘못 골랐나 싶었습니다. 다시 보니 이유가 단순했습니다. 검사조는 "뭔가 있다"는 말만 받았지, 그게 왜 문제인지, 어떤 경계를 넘으면 문제가 되는지는 못 받았습니다. 그러니 코드를 들여다봐도 뭘 기준으로 봐야 할지 몰랐던 거예요. 있는 걸 보고도 "이 정도는 괜찮은 것 같다"고 넘긴 셈입니다.
지시서에 설명을 붙여서 다시 시켜봤습니다. 기각이 9건에서 2건으로 줄었어요. 인원도 안 바꿨고 코드도 안 바꿨습니다. 문장 하나를 더 붙였을 뿐인데요.
처음엔 이걸 검사조의 실력 문제로 여겼습니다. "왜 이걸 못 잡았지" 하고요. 그런데 지시서만 고쳐도 결과가 뒤집히는 걸 보고 나니, 문제가 실력이 아니라 제가 뭘 던져줬는지에 있다는 게 분명해졌습니다. "여기 뭔가 있다"는 한 줄은 검사조 입장에서 보면 바늘 없는 실 뭉치를 주고 바늘을 찾으라는 것과 비슷했어요. 경계가 어디서 넘어가는지, 왜 문제가 되는지를 안 알려주면 아무리 꼼꼼히 봐도 놓치는 게 당연했습니다.
이 경험이 계속 마음에 걸려서, 아예 인원 배분 자체를 재보기로 했습니다. 검사조를 따로 빼는 게 맞는 방식인지요. 지시서만 문제였다면 지시서만 고치면 될 텐데, 혹시 애초에 사람을 나누는 방식 자체가 잘못돼 있는 건 아닐까 싶었습니다.
인원 8을 고정하고 배분만 바꿔봤습니다
만드는 조와 검사하는 조의 비율을 다섯 가지로 나눠, 각각 세 번씩 돌렸습니다. 인원 8명(에이전트 기준 120명 규모), 일부러 심어 둔 결함 16개를 놓고요.
| 배분 | 찾은 결함 | 값(들인 비용 대비) | 결함 1개당 비용 |
|---|---|---|---|
| 8:0 (검사조 없음) | 12.3 | 1.00배 | 53k |
| 8명 다 만들고, 모으는 사람이 직접 검사 | 13.7 | 2.11배 | 101k |
| 7:1 | 13.0 | 1.93배 | 97k |
| 6:2 | 12.3 | 2.02배 | 107k |
| 4:4 | 13.0 | 2.45배 | 123k |
다섯 조건을 각각 세 번씩 돌렸으니 한 번 재고 끝낸 숫자가 아닙니다. 우연히 잘 나온 회차 하나를 붙잡고 결론을 낸 게 아니라는 뜻이에요. 그리고 봤을 때 제일 먼저 든 생각은 "6:2가 제일 익숙한데, 제일 애매한 자리에 있었구나"였습니다.
여기서 눈에 걸리는 줄이 6:2입니다. 흔히 쓰던 비율이었는데, 검사조를 아예 안 둔 8:0과 찾은 결함이 똑같습니다. 그런데 비용은 두 배였어요. 검사 인원을 빼는 게 손해였던 셈입니다.
6:2는 저도 오래 써온 배분이었습니다. "여섯이 만들고 둘이 검사하면 적당하겠지" 하는 감으로 정한 비율이었어요. 근거를 대라면 딱히 댈 게 없었습니다. 그냥 다들 그렇게 하니까, 라는 이유가 제일 가까웠어요. 그런데 막상 숫자로 재보니 그 감이 틀렸습니다. 검사조를 둘 뺀 만큼 만드는 손이 줄고, 그 손해를 검사조가 메꾸지 못했던 거예요.
비율은 거의 안 중요했습니다
표를 다시 보면 1:7이든 4:4든 결과가 크게 다르지 않습니다. 그런데 딱 한 줄, 8명이 다 만들고 그걸 모으는 사람이 직접 검사한 줄만 눈에 띄게 높았습니다.
갈리는 지점은 비율이 아니라 누가 전체를 보느냐였습니다. 따로 뺀 검사조는 자기 몫만 봅니다. 예를 들어 검사조 둘 중 한 명이 화면 앞부분만, 다른 한 명이 뒷부분만 받으면, 앞뒤가 이어지는 자리는 누구의 몫도 아니게 됩니다. 반면 모든 걸 모으는 자리에 있는 사람은 조각과 조각 사이에 낀 것까지 보게 됩니다. 한 명이 만든 것과 다른 한 명이 만든 것이 이어지는 자리, 거기서 결함이 자주 나왔거든요.
생각해보면 당연한 그림이었습니다. 검사조에게 "이 부분만 봐라"고 나눠주는 순간, 이미 그 나눈 경계 자체가 사각지대가 됩니다. 반면 모으는 자리는 애초에 조각을 나눠 갖지 않습니다. 전체를 한 번에 훑으니까, 나누는 순간 생기는 그 경계가 아예 생기지 않는 거예요.
더 흥미로운 건 만드는 인원을 8명에서 4명으로 줄여도 찾은 결함이 거의 안 떨어졌다는 겁니다(12.3 → 12.7). 한 사람 몫이 두 배로 늘어도 어차피 파일을 통째로 읽으니까요. 인원을 줄여서 보는 손해보다, 모으는 사람이 제대로 보는 이득이 더 컸습니다.
이 대목에서 제가 그동안 인원 수에 너무 매달려 있었다는 걸 깨달았습니다. "몇 명을 붙여야 하나"를 늘 먼저 고민했는데, 정작 결과를 갈랐던 건 인원 수가 아니라 누구에게 전체를 보여주는가였어요. 인원을 절반으로 줄여도 결과가 거의 그대로였다는 건, 그만큼 제가 인원 늘리기에 쓰던 비용이 헛돌고 있었다는 뜻이기도 합니다.
되돌릴 수 있는 일이면 답은 단순합니다. 그냥 8:0으로 하는 게 낫습니다. 비용은 절반인데 찾는 결함 차이는 1개뿐이니까요.
이 결과를 처음 봤을 때는 좀 의아했습니다. 검사하는 사람을 아예 안 두는 게 낫다니, 감사라는 개념 자체를 없애자는 얘기처럼 들렸거든요. 그런데 다시 보면 그게 아니었습니다. 감사가 없어지는 게 아니라, 감사가 검사조라는 별도 자리에서 모으는 자리로 옮겨간 것이었어요. 인원을 둘로 쪼개서 한쪽에게 "너는 검사만 해"라고 시키는 방식이 없어졌을 뿐, 모으는 자리에 있는 사람이 실물을 열어보는 행위 자체는 오히려 가장 잘 통한 줄에 그대로 남아 있었습니다.
그래서 검사조를 따로 안 둡니다
이제 규모가 있는 일을 나눌 때는 이렇게 합니다.
전원을 만드는 데 투입합니다. 인원을 빼서 따로 검사조를 만들지 않습니다. 대신 여러 결과를 모으는 자리에 있는 사람이 실물을 직접 열어 확인합니다.
작은 일은 아예 안 나눕니다. 도구를 스무 번 이내로 쓰거나 항목이 한 자리 수면, 나눠서 지시서 쓰고 검산하는 값이 나눈 이득보다 큽니다. 그럴 땐 "이건 제가 직접 하는 게 쌉니다"라고 하고 혼자 합니다.
이 규칙을 세우고 나서 실제로 바뀐 건 지시하는 순간의 습관이었습니다. 예전엔 일이 좀 커 보이면 반사적으로 "몇 명한테 나눠서 시킬까"부터 생각했습니다. 이제는 그 전에 "이걸 나누면 검사조를 또 따로 빼게 되나"를 먼저 봅니다. 나누는 게 맞는 규모라도, 인원을 쪼개는 방식 자체는 "전원 실행, 모으는 자리에서 검사"로 고정해 뒀습니다. 누가 "감사 인원을 더 붙이는 게 낫지 않냐"고 물어도, 이제는 숫자를 들고 아니라고 답할 수 있게 됐습니다.
감사 지시서에는 대조할 양쪽을 문장으로 씁니다
앞의 9건 기각 사건에서 배운 게 이겁니다. "확인해라"가 아니라 비교할 두 쪽을 문장으로 줍니다. "이 화면 주소와 이 목록을 글자 단위로 대조해라", "이 수치와 저 수치가 일치하는지 봐라"처럼요. "여기 뭔가 있다"는 지시서 한 줄이 진짜 결함 9건을 놓친 원인이었으니까요.
그리고 실물을 보게 합니다. 보고서 문장 말고 화면·파일·원문을 직접 열게 합니다. "다 확인했습니다"라는 말은 증거가 아닙니다. 로그가 남았는지, 응답이 실제로 바뀌었는지, 수정 날짜가 찍혔는지처럼 상태가 바뀐 흔적만 증거로 칩니다.
미묘해 보인다고 기각하지 말라는 말도 꼭 붙입니다. 경계값이 살짝 바뀐 자리(이상이 초과로 바뀌는 식)가 결함이 사는 자리인데, 이 말을 안 붙이면 무해해 보인다고 넘어가기 쉽거든요. 실제로 이 문장을 지시서에 못 박기 전에는, 똑같은 결함이 다섯 번이나 "이 정도는 괜찮다"며 기각당했습니다. 그리고 개수·중복·누락처럼 세는 일은 사람이나 모델이 아니라 스크립트에 맡깁니다. 정확하고 공짜니까요.
다만 이건 남이 만든 것을 검사할 때 얘기입니다
한 가지 단서를 꼭 붙여야 합니다. 이 실험은 전부 남이 만든 것을 모으는 사람이 검사한 경우였습니다. 내가 방금 막 만든 것에는 이 효과가 안 납니다. 의도를 알고 보니까요.
이 단서가 왜 중요하냐면, "모으는 자리가 검사하면 다 해결된다"로 이 편을 읽으면 위험하기 때문입니다. 모으는 사람이 남이 만든 조각들을 이어 붙일 때는 정말 잘 통합니다. 그런데 모으는 사람이 자기가 방금 만든 것까지 자기가 검사하려 들면 얘기가 달라집니다. 실제로 제가 직접 만든 것에서는 이 방식이 안 통한 적이 있었어요. 이유도, 그날 실제로 무슨 일이 있었는지도 다음 편에서 이어가겠습니다.
이번에 사람이 붙잡은 자리
- 9건 기각을 보고 지시서 탓인지 인원 탓인지를 가른 것. 문장 하나 더 붙이자 기각이 2건으로 줄었는데, 지시서와 인원 중 어느 쪽을 먼저 의심해야 하는지 정한 게 저였습니다.
- 6:2라는 관행을 실측으로 깨고, 8:0 아니면 "전원 실행+모으는 사람이 검사"로 바꾼 것. 비용 절반에 결과가 같은 배분을 계속 쓸 이유가 없었습니다.
- 경계값이 미묘해 보인다고 기각하지 말라는 문장을 지시서에 못 박은 것. 안 박아 뒀을 때 같은 결함이 다섯 번 죽었습니다.
돌아보면 이번 편의 핵심은 "검사를 없애자"가 아니라 "검사를 누구 자리에 둘 것인가"였습니다. 인원을 쪼개서 따로 세우는 방식이 오히려 아무도 전체를 안 보게 만들었고, 전체를 보는 자리에 검사를 얹었더니 그게 제일 잘 통했습니다. 자리를 잘못 두면 인원을 더 써도 결과는 그대로였고, 자리를 맞게 두면 인원을 줄여도 결과가 유지됐습니다.