~/VibeHandbook
$39

챕터 07 · 05

가설, 로깅, 그리고 이진 탐색

AI가 원인을 제시하면 그냥 받아들이지 마라. 값싸게 시험하라. 가장 값싼 시험은 보통 로그 한 줄이다.

AI에게 임시 로깅을 추가하라고 요청하라:

"무언가 바꾸기 전에, 14번 줄 바로 앞에서 user의 값을 보여주는 console.log(또는 print)를 추가해줘. 그게 실제로 undefined인지 볼 수 있게."

실행하고, 출력을 다시 붙여넣어라. 이제 당신은 이론이 아니라 증거를 가졌다. user가 undefined일 수도 있다 — 가설을 확인하는 것이다. 멀쩡하고 진짜 범인이 한 단계 위에 있을 수도 있다. 어느 쪽이든 당신은 앞으로 나아갔다. 조사하는 동안에는 로그를 넉넉히 찍어라. 변수의 값, 그리고 그게 어느 변수이고 로그가 어디 있는지 알려주는 라벨까지. undefined를 찍는 맨 console.log(user)console.log("user at validate.js:14 =", user)보다 훨씬 덜 유용하다. 그리고 버그가 고쳐지면 임시 로그를 다시 빼내는 걸 잊지 마라 — 남겨진 디버그 잡음은 그 자체로 작은 어질러짐이다.

버그가 긴 과정 어딘가에 숨어 있고 어디인지 알 수 없을 때는 이진 탐색을 써라. 의심 구간을 절반으로 잘라라: 중간 지점에 로그를 추가하라. 거기서 값이 올바르게 보였는가? 그렇다면 버그는 그 에 있다 — 그 절반을 탐색하라. 이미 잘못 보였는가? 버그는 그 에 있다 — 그 절반을 탐색하라. 각 단계가 탐색 공간을 반으로 줄이므로, 천 줄짜리 경로라도 약 열 번의 확인으로 좁혀진다. AI에게 명시적으로 말하라: "이걸 이등분하게 도와줘 — 로그를 찍어야 할 중간 지점이 어디야?" 같은 기법은 코드뿐 아니라 이력에도 통한다. 어떤 기능이 지난주에는 동작했는데 오늘 깨졌다면, 커밋을 이등분해서 버그를 들여온 정확한 변경을 찾아라.

오프라인으로 보고 싶으세요?

PDF + EPUB + 다운로드형 프롬프트 라이브러리 + 버전 업데이트를 받으세요.

$ PDF 받기 — $39