설계를 강제하는 사슬
아무도 안 따지는 요구에서 시작해. 두 판이 같은 강의여야 한다. 같은 구조, 같은 예제, 같은 코드, 같은 링크, 같은 주장. 그 요구 하나가 바닥까지 사슬을 끌고 가고, 고리마다 강제야.
대응한다는 건 둘을 독립적으로 못 쓴다는 뜻이야. 독립된 저자 둘은 서로 다른 강의 둘을 낳으니까. 독립이 아니라는 건 하나가 먼저 쓰이고 다른 하나가 그걸 따라간다는 뜻이고. 따라간다는 건 두 번째 저자가 쓰는 동안 첫 판을 쥐고 있다는 뜻이지. 쥐고 있다는 건 두 번째 판이 그것의 모양을 받는다는 뜻이고. 그러니까 오염은 절차의 실수가 아니라 요구의 결과야.
그러면 질문이 통째로 바뀌어. 오염을 어떻게 피하냐고 물을 자격이 없어져. 어디서 걷어내느냐만 물을 수 있고, 그건 오염을 만든 맥락이 못 걷어내. 치워야 할 게 정확히 그 맥락이니까.
한 패스가 둘 다 못 하는 이유
집필과 세척은 한 작업의 두 절반이 아냐. 요구가 양립 불가능한 작업 둘이야. 집필 세션은 원본을 쥐어야 해. 그게 그 세션의 일이고, 안 주면 다른 강의가 나와. 수리 세션은 그걸 쥐면 안 돼. 그게 그 세션의 일이고, 쥐면 지금 고치려는 그 결함이 나와.
한 세션한테 둘 다 하라는 건 명령으로 잊으라는 소리고, 주의력이 요청받고 안 해주는 유일한 게 그거야. 이 작업장 이력의 모든 실패한 시도가 점점 더 정중하게 표현된 그 요청의 변주였어.
측정하고 기각한 대안
뻔한 탈출구는 클린룸이야. 두 번째 저자가 같은 개요에서 출발해 다른 판을 백지에서 쓰고, 첫 판은 절대 안 보는 것. 진지하게 검토했고 기각했어. 독립된 저자 둘 사이에서 구조랑 코드랑 링크를 맞추는 게 어려운 게 아니라, 서로 다른 제품 둘이 나올 만큼 실현 불가능하거든. 이후의 모든 수정을 두 사람이 두 번 적용해야 하고, 둘이 맞는지 증명할 기제는 없어.
그 아이디어에서 살아남는 건 더 좁고 여전히 쓸모 있어. 다른 저자가 두 번째 판을 원본을 화면에 두고 번역으로 쓸 수는 있어. 대응은 유지되고 오염은 다른 정신으로 옮겨가지. 그것도 값어치가 있어. 콜드 패스의 필요를 없애진 못해. 두 번째 저자도 여전히 원본을 쥐고 있으니까.