퇴근 후 나만의 AI 팀
PART 09디버깅자동 검증

테스트 — 실패의 전당

AI 팀의 좋은 점은 실패를 숨기지 않는다는 것이다. 커밋 메시지가 곧 반성문이다.

2026-08-057분 분량

이 프로젝트의 작업 기록에는 실패가 그대로 남아 있다. AI 팀의 좋은 점은 실패를 숨기지 않는다는 것이다. 커밋 메시지(작업 저장 기록)가 곧 반성문이다. 사람 팀에서는 실패가 회고 자리에서 적당히 요약되지만, 여기서는 몇 시를 헤맸는지가 기록에 그대로 남는다. 몇 개만 전시하면:

  • 하루를 통째로 태운 버그. 계정 삭제 기능이 이상하게 동작했는데, 원인은 코드 한 줄에서 참조 하나가 빠져서 함수가 "로그인하기 전의 옛날 상태"를 기억한 채 얼어붙어 있던 것. 사람 개발자도 흔히 빠지는 함정인데, AI도 빠졌고, 결국 원인을 찾은 뒤 "이 유형은 눈으로 검산한다"는 규칙이 하네스에 추가됐다. 같은 함정에 두 번 빠지지 않는 팀이 좋은 팀이다.
  • 가장 악랄했던 함정. 이미지 클라우드 저장이 "권한 없음" 한 줄만 남기고 실패했다. 진짜 원인은 전혀 다른 곳 — 구글 클라우드의 두 서비스가 서로를 참조하려면 보이지 않는 곳에서 별도의 권한(IAM 역할)을 부여해야 하는데, 배포 도구가 그걸 자동으로 해주지 않았던 것. 에러 메시지 어디에도 힌트가 없었다. AI 팀원이 이걸 파고들어 원인을 찾아낸 밤, 나는 진심으로 "수고했다"고 말했다. 화면에 대고.
  • 소소하지만 치명적인 것들. 다국어 파일의 구조 하나가 잘못돼 Android 빌드가 깨졌고, iOS 빌드는 두 번 연속 실패했는데 해법은 애플 개발자 사이트의 체크박스 하나였다.

막힌 곳은 대부분 코드 바깥이었다

이 목록을 다시 보면 공통점이 있다. 코드를 쓰는 일에서 막힌 건 거의 없고, 대부분 코드 바깥의 설정과 권한에서 막혔다. AI는 기능을 만드는 데는 빠르지만, 클라우드 콘솔 어딘가에 숨어 있는 체크박스는 볼 수 없다. 결국 그 벽 앞에서는 사람이 로그를 읽고, 짐작하고, 하나씩 눌러봐야 했다. 앞으로 이런 작업이 얼마나 자동화될지는 모르겠지만, 적어도 이번 열흘 동안 나를 가장 오래 붙잡아둔 건 코딩이 아니라 설정이었다.

방어선

커밋 전마다 자동 검증이 돈다.

  • 타입 검사 : 기본
  • 설정 정합성 : 6건
  • 요금제 규칙 : 80건
  • 문장 규칙 : 91건

사람이 하면 지겨워서 건너뛸 검사를 기계는 매번 한다. 그 위에 시뮬레이터에서의 시나리오 테스트("첫 실행 상태를 재현하려면 데이터를 지우고 다시 켠다" 같은 절차까지 문서화), 마지막 관문은 실제 폰을 든 인간 QA — 역시 나다.

자동 검증을 쌓으면서 배운 게 하나 있다. 검사는 버그를 잡으려고 만드는 게 아니라 내가 안심하고 손대려고 만드는 것이다. 열흘 내내 나는 내가 이해하지 못하는 코드를 고치라고 시켰다. 그게 가능했던 건 뭔가 크게 어긋나면 커밋 단계에서 걸린다는 걸 알았기 때문이다. 검사기가 없었다면 나는 훨씬 겁이 많은 결정을 내렸을 것이다.

하네스 문서에는 이런 규칙도 있다. AI 팀원에게 준 지침인데, 곱씹을수록 좋은 문장이다.

사용자가 "되는데?"라고 하면 기기에서 본 게 사실이다. 내 추론이 틀린 쪽을 먼저 의심한다.

20년간 만난 모든 개발 조직의 회의실에 걸어두고 싶었던 문장을, AI 팀 사규로 먼저 걸게 될 줄은 몰랐다. 덧붙이자면 이 규칙은 나에게도 적용됐다. 내가 "이거 안 되는데?"라고 했을 때 실제로는 내가 옛 버전 앱을 보고 있었던 적이 두어 번 있다. 기기에서 본 게 사실이라는 말은, 어느 기기를 보고 있는지부터 확인하라는 뜻이기도 했다.