AI가 만든 소프트웨어, 어떻게 믿을까 (1편) — 우리는 AI를 믿지 않기로 했습니다
결론부터: AI한테 개발을 맡겼는데 그 결과를 믿을 수 있었던 이유는, 역설적으로 아무도 AI 말을 그냥 믿지 않았기 때문입니다. AI가 "다 됐다"고 해도 곧이듣지 않고 세 겹의 그물로 걸렀어요 — ① 사람 판단이 아니라 기계가 자동으로 통과·실패를 매기고, ② 흠 잡는 것만 전담하는 별도의 검사 AI를 두고, ③ 만든 과정을 전혀 모르는 제3자가 결과물만 받아 다시 확인합니다. 이 편은 그 세 겹 이야기예요.
"AI가 만들었습니다"라는 말이 불안한 이유
"이 소프트웨어, AI가 만들었습니다."
이 말을 듣고 마음이 편해지는 사람은 별로 없을 겁니다. 오히려 이런 질문이 떠오르는 게 정상이에요. "AI는 그럴듯한 거짓말을 잘한다던데, 그게 만든 물건을 어떻게 믿지?"
그 불신은 정당합니다. 실제로 AI 언어모델(LLM)은 하지 않은 일을 "완료했습니다"라고 보고하는 경향이 있습니다. 이건 소문이 아니라 제가 개발을 진행하며 출발점으로 삼은 전제였어요. 개발의 상당 부분을 AI가 수행하는 프로젝트였고, 그래서 첫날부터 규칙이 하나 있었습니다.
"AI의 '완료했다'는 말은 믿지 않는다. 실제로 실행해서 확인된 것만 완료다."
"검증하는 것도 AI라면서요? 그게 무슨 검증입니까?"
가장 뼈아프고, 가장 먼저 답해야 하는 질문입니다. AI가 만든 것을 AI가 검사하면 결국 한통속 아니냐는 거죠. 답은 세 겹입니다.
첫째, 최종 판정은 AI가 아니라 기계가 합니다
소프트웨어에는 '자동 테스트'라는 게 있습니다. "이 상황에서 이 결과가 나와야 한다"를 미리 못 박아 두면, 컴퓨터가 프로그램을 실제로 돌려서 통과 아니면 실패, 둘 중 하나로 판정하는 장치예요. 여기엔 의견이나 해석이 끼어들 자리가 없습니다. 잘 봐달라고 부탁할 수도 없고요.
검사역 AI의 일은 "이 프로그램 좋아 보인다"라고 감상을 말하는 게 아니라, 약점을 찾아 그것을 테스트로 못 박는 것입니다. 못 박힌 뒤의 판정은 기계의 몫이에요. 이렇게 약점을 하나 잡을 때마다 그 상황을 테스트로 만들어 쌓아온 게, 지금 327개입니다. 프로그램을 고칠 때마다 이 327개가 전부 자동으로 다시 돌고, 하나라도 실패하면 다음 단계로 못 넘어갑니다. 한 번 잡힌 약점이 이렇게 테스트로 남으니, 나중에 누가(사람이든 AI든) 같은 실수를 반복하면 기계가 즉시 잡아냅니다.
둘째, 만드는 AI와 트집 잡는 AI를 분리했습니다
변호사와 검사를 생각하면 됩니다. 같은 사법 시스템에 속해 있어도 검사가 변호사를 안 봐주는 이유는, 검사의 성과가 '흠을 찾는 것'으로 매겨지기 때문이에요. 검증 공정도 똑같이 짰습니다.
- 만드는 AI는 기능을 구현합니다.
- 검사역 AI(내부 명칭 critic)는 그 결과물에서 "어떤 조건에서 무너지는가"만 찾습니다. 정상 동작 확인은 아예 이 AI의 업무가 아니에요. 그리고 "약점을 3건 이상 찾아서 보고할 것"이 의무입니다 — "다 괜찮아 보입니다"라는 보고 자체가 허용되지 않는 역할 설계입니다.
- 심각한 약점이 보고되면, 수정하고 재검증을 통과하기 전에는 그 작업을 완료로 인정하지 않습니다.
봐주기가 성립하려면 검사역이 "약점 없음"이라고 말할 수 있어야 하는데, 이 구조에서는 그 말 자체가 직무 태만이 됩니다.
셋째, 만든 쪽 말을 하나도 안 믿는 외부 검증이 따로 있습니다
여기까지도 부족합니다. 만드는 AI와 검사역 AI는 어쨌든 같은 프로젝트 안에서 같은 맥락을 공유하니까요. 그래서 한 겹을 더 뒀습니다. 이 소프트웨어를 만든 과정과 맥락을 전혀 모르는 별도 프로젝트를 하나 세우고, 완성된 배포본(사용자에게 실제로 전달되는 결과물)만 건네준 뒤, 실제 환경에서 문서만 보고 처음부터 끝까지 직접 써 보게 한 겁니다.
이 외부 검증은 만든 쪽의 설명을 듣지 않습니다. 문서가 틀렸으면 틀렸다고, 설정했는데 적용이 안 되면 안 된다고 보고할 뿐이에요. 실제로 이 왕복 검증이 여러 라운드 진행됐고, 내부 검증을 통과하고도 남아 있던 문제들이 여기서 추가로 잡혔습니다.
정리 — 믿는 것은 구조지, AI가 아니다
정리하면 이렇습니다. 믿음의 뿌리는 AI의 판단력이 아닙니다.
- 통과/실패만 존재하는 기계 판정 (자동 테스트 327개)
- 흠 찾기가 직업인 분리된 검사역 (약점 3건 이상 의무)
- 만든 쪽 말을 안 믿는 독립 재검증
사람이 만든 소프트웨어도 결국 이런 장치들 — 테스트, 리뷰, 독립 검증 — 위에서 신뢰를 얻어 왔습니다. AI가 만들었다고 다른 마법이 필요한 게 아니라, 같은 장치를 더 의심 많게, 더 촘촘하게 거는 것이 답이었어요.
다음 편
구조 이야기는 여기까지입니다. 다음 편에서는 이 검증이 실제로 무엇을 잡아냈는지 — 조용히 자물쇠를 바꿔치기하던 코드, 철거 중인 방에 들어간 청소부 같은 버그 — 실제 사례를 비유로 풀어 보겠습니다. → 2편 — 검증이 실제로 잡아낸 것들
댓글
댓글 쓰기