철학
이 문서는 더 잘 만드는 방법을 주지 않는다. 문제를 다른 방식으로 읽는 법을 다룬다.
문제를 보는 방식
시스템에서 문제가 발생하면 먼저 이렇게 생각한다.
누가 잘못했는가.
- 설계가 부족했는가
- 구현이 거칠었는가
- 리뷰가 놓쳤는가
이건 자연스러운 반응이다. 그리고 어느 정도는 맞다.
하지만 반복되는 문제 앞에서는 맞지 않는다.
같은 원인을 고쳤는데 같은 문제가 다시 나타난다. 이번엔 조금 다른 모양으로. 그래서 다시 고친다. 그리고 또 나타난다.
이 사이클이 멈추지 않는다면, 원인을 잘못 보고 있다는 뜻이다.
반복되는 문제
반복되는 문제에는 구조가 있다.
처음 발생한 지점과 두 번째 발생한 지점이 다르다. 고친 방식이 맞았는데도 다른 곳에서 같은 현상이 나타난다. 어느 순간부터는 고칠수록 오히려 더 많은 균열이 생기는 것처럼 느껴진다.
이건 개인의 실력 문제가 아니다. 시스템 안에 어떤 구조가 있고, 그 구조가 문제를 계속 만들어내고 있다는 신호다.
관점의 이동
그래서 질문을 바꾼다.
누가 틀렸는가가 아니라,
왜 이 문제가 다시 발생할 수 있었는가
이 질문은 방향이 다르다. 사람을 보는 게 아니라 시스템을 본다. 한 번의 실수를 보는 게 아니라 반복을 가능하게 한 구조를 본다.
규칙은 충분하지 않다
많은 시스템은 규칙으로 문제를 막으려 한다.
코딩 컨벤션, 리뷰 프로세스, 가이드라인, 프롬프트. 이것들은 분명히 효과가 있다. 규칙이 없는 것보다는 훨씬 낫다.
하지만 근본적인 한계가 있다.
규칙은 선택이다.
지킬 수도 있고, 무시할 수도 있고, 돌아갈 수도 있다. 의도적으로든, 실수로든, 더 빠른 방법이 눈에 띄어서든. 규칙을 아무리 정교하게 만들어도, 결국은 우회된다.
그리고 우회가 한 번 일어나면, 그 경로는 다음 번에도 사용된다.
경로는 다르다
여기서 중요한 구분이 있다.
규칙은 “해야 한다"고 말한다. 경로는 “할 수 있다"는 사실 자체다.
경로는 반복된다. 허용되어 있고, 더 짧고, 더 쉬운 경로라면 사람도 AI도 그쪽으로 기운다. 막고 싶다면 허용 자체를 바꿔야 한다.
이게 이 문서 전체를 관통하는 전제다.
반복되는 문제는 규칙의 부재가 아니라, 우회 가능한 경로가 존재한다는 신호다.
문제의 원인은 코드 한 줄이 아니라, 허용된 구조다.
완전 차단을 약속하는 것은 아니다
모든 우회를 100% 제거하는 것은 현실적으로 어렵다.
하네스의 목표는 다른 데 있다.
- 가장 자주 발생하는 우회를 구조에서 제거한다
- 남은 우회는 더 비싸고 더 눈에 띄게 만든다
- 합법 경로를 우회보다 짧고 쉬운 경로로 만든다
핵심은 완벽성의 약속이 아니라, 우회 비용과 복구 비용의 구조를 뒤집는 데 있다.
AI가 드러낸 것
AI 코딩 도구는 이 문제를 더 빠르고 선명하게 드러낸다.
AI는 규칙을 “이해"하는 존재가 아니다. 가능한 경로를 따라 결과를 만드는 존재다.
그래서 이런 일이 생긴다.
- 같은 요청인데 결과가 달라진다
- 컨텍스트가 바뀌면 이전에 잡아둔 구조가 깨진다
- 규칙을 분명히 줬는데도 우회된 구현이 나온다
이건 AI의 결함이 아니다.
시스템 안에 이미 열려 있던 경로를 AI가 사람보다 더 빠르게, 더 일관되게 사용하는 것이다. 그래서 더 빨리 드러나고, 더 넓게 퍼진다.
AI를 쓰기 시작했을 때 갑자기 문제가 늘어난 것처럼 느껴진다면, 실제로는 원래 있던 문제가 가속된 것이다.
전환의 이유
그래서 접근을 바꾼다.
더 나은 규칙을 만드는 데 집중하지 않는다. 경로를 제한하는 데 집중한다.
잘못된 결과를 줄이는 것이 아니라, 잘못된 경로를 처음부터 없앤다.
이게 이 문서의 출발점이다.