7월 초, 며칠에 걸쳐 이상한 일들이 겹쳐 일어났습니다. 공통점이 있었습니다 — 아무것도 오류를 내지 않았습니다.
소리 없는 영상
영상이 잘 만들어졌습니다. 로그도 깨끗했습니다. "배경음악 합성 완료"까지 찍혀 있었습니다. 그런데 재생하면 음악이 없었습니다.
코드는 성공했습니다. 음악을 붙이는 명령이 정상 종료했고, 반환값도 정상이었습니다. 다만 붙은 소리가 무음이었습니다. 성공했다는 말과 실제로 된 일이 달랐습니다.
한 번도 실동작하지 않은 기능
음성으로 지시하는 기능을 만들어 두었습니다. 코드가 있고, 화면이 있고, 문서에도 적혀 있었습니다. 어느 날 실제로 써 보려 했더니 한 번도 실제로 돌아본 적이 없는 상태였습니다. 만들어 놓고 확인하지 않았고, 확인하지 않았다는 사실조차 몰랐습니다.
폴더 이름을 바꾸자 문체가 사라졌습니다
정리를 하다가 폴더 하나의 이름을 바꿨습니다. 그 뒤로 나오는 설교문이 어딘가 남의 글 같았습니다.
원인은 그 폴더였습니다. 제 설교 원고들이 거기 있었고, 문체를 참고하는 코드가 옛 이름으로 그 폴더를 찾고 있었습니다. 못 찾으면 오류를 내지 않고 참고 없이 그냥 썼습니다. 3화에서 애써 만든 그 장치가, 폴더 이름 하나로 조용히 꺼져 있었습니다.
"합격"이라고 제가 잘못 말한 일
새 런타임으로 옮기는 작업을 하면서 몇 명씩 단계적으로 옮기고 "이상 없음"을 확인했습니다. 그런데 확인의 근거가 로그 요약이었습니다. 요약은 "정상"이라고 말하는데, 실제 출력물을 열어 보니 그렇지 않은 것이 섞여 있었습니다. 제가 스스로 "합격"이라고 판정했고, 그 판정을 나중에 제가 정정했습니다.
진짜 원인 — 성공을 자기가 보고했습니다
넷 다 같은 모양입니다. 어떤 단계가 스스로 "됐다"고 말하고, 아무도 그 말을 대조하지 않았습니다.
오류는 시끄럽습니다. 그래서 잡힙니다. 무서운 것은 성공을 사칭하는 실패입니다. 로그가 깨끗해서 아무도 열어 보지 않고, 몇 주가 지나서야 결과물에서 드러납니다.
고친 것 — 상태를 표면화하기
- 무음은 소리 크기를 측정해서 잡습니다. "붙였다"가 아니라 "실제로 소리가 있다"를 봅니다.
- 참고 자료를 못 찾으면 조용히 넘어가지 않고 경보를 냅니다. 없는 채로 계속 도는 것이 가장 위험합니다.
- "합격" 판정은 원자료로만 합니다. 로그 요약을 근거로 통과시키지 않습니다.
- 끝까지 못 간 작업을 매일 훑어 끝 기록이 없는 것을 보고합니다.
남은 원칙
성공했다는 말을 믿지 않고, 결과를 대조합니다.
이건 신뢰의 문제가 아니라 구조의 문제입니다. 자기 일이 잘됐는지는 자기가 판정할 수 없습니다. 사람도 그렇지 않습니까 — 제 설교가 좋았는지는 제가 아니라 듣는 분이 압니다.
그래서 지금 우리 시스템에는 자기 산출물을 자기가 승인하지 못하게 하는 자리가 여러 곳 있습니다. 만드는 쪽과 검사하는 쪽을 갈라 두는 것입니다. 느려집니다. 대신 조용히 새지 않습니다.
다음 화에서는 혼자 쓰려고 만든 도구를 다른 목회자도 쓸 수 있게 바꾸기로 한 이야기를 하겠습니다.
Comments
Post a Comment