~/VibeHandbook
무료 PDF

챕터 08 · 05

재작성이 아니라 diff로 반복하라

코드가 일단 존재하면, 전체를 다시 요청하려는 충동을 참아라. "더 낫게 만들어줘" 같은 모호한 후속 요청은 작동하는 코드를 버리고 이미 고친 버그를 다시 들여온다. 원하는 구체적인 변경을 가리켜라.

틀렸어, 전체를 다시 작성해줘.
함수는 작동하는데, 두 가지 문제가 있어:
1. `throw new Error` 가 있는 줄의 에러는 throw 하는 대신
   Result 타입을 반환해야 해 — 위의 validateUser 함수의
   패턴에 맞춰줘.
2. 루프가 매 반복마다 `items.length` 를 다시 읽어; 밖으로 끌어내.

그 두 변경에 대한 diff 만 보여줘.

건강한 사이클은 촘촘한 루프다: 모델에 프롬프트하고, 출력을 읽고, 작고 표적화된 diff로 다듬어라 — 절대 전체 재작성이 아니라 — 맞을 때까지:

   ┌─────────┐     ┌─────────┐     ┌─────────┐
   │ 프롬프트│ ──▶ │ 모델    │ ──▶ │ 출력    │
   └─────────┘     └─────────┘     └────┬────┘
        ▲                               │
        │                               ▼
        │                          ┌─────────┐
        │         좋아?            │ 검토    │
        │   예 ◀───────────────────┤ diff    │
        │                          └────┬────┘
        │                               │ 아니오
        │      다듬기 (작은 diff)       │
        └───────────────────────────────┘
                                    드리프트? ▶ 마지막 양호로 리셋

(전체 재작성이 아니라) diff를 요청하면 변경이 검토 가능하게 유지되고 이미 작동하는 부분이 보존된다. AI의 출력을 동료의 풀 리퀘스트처럼 다뤄라: 특정 줄에 코멘트하고, 표적화된 편집을 요청하라. 변경이 엇나가고 답변마다 코드가 원하던 것에서 점점 더 멀어진다면, 계속 땜질하지 마라 — 신뢰했던 마지막 버전으로 되돌리고 더 날카로운 설명으로 거기서부터 다시 프롬프트하라. 깨진 토대 위에서 앞으로만 반복하면 엉망진창이 가중될 뿐이다.

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

책 전체를 PDF나 EPUB으로 무료로 내려받으세요.