AI가 준 코드가 작동하지 않을 때 수정 요청하는 법

1. 왜 AI 코드가 바로 안 돌아갈까
AI가 제공한 코드는 "일반적인 환경"을 기준으로 생성되는 경우가 많습니다. 그런데 실제 프로젝트는 파일 구조, 라이브러리 버전, 데이터 형식, 빌드 환경이 다르기 때문에 그대로 붙여넣으면 동작하지 않을 수 있습니다. 이건 이상한 일이 아니라 자연스러운 현상입니다.
중요한 건 "코드가 틀렸다"고 단정하기보다, 현재 환경과 맞지 않는 지점을 빠르게 찾아 다시 요청하는 것입니다. 요청 품질이 올라가면 답변 정확도도 크게 올라갑니다. 즉, AI 활용의 핵심은 한 번에 정답을 받는 것이 아니라 증상과 맥락을 정확히 전달해 수정을 반복하는 과정입니다.
2. 수정 요청 전에 준비할 정보
아래 정보를 함께 주면 AI가 문제를 훨씬 정확히 재현하고 고칠 수 있습니다.
| 준비 정보 | 왜 필요한가 | 예시 |
|---|---|---|
| 에러 원문 | 문제 지점을 정확히 특정 | Cannot read properties of null... |
| 관련 코드 범위 | 문맥 없는 단편 수정 방지 | 문제 함수 기준 앞뒤 20~40줄 |
| 실행 환경 | 버전/도구 차이로 인한 오답 감소 | React 버전, 브라우저, 빌드 도구 |
| 재현 절차 | 어떤 행동에서 깨지는지 파악 | 버튼 클릭 → 저장 → 새로고침 시 오류 |
| 원하는 결과 | 수정 방향을 정확히 정렬 | 체크박스 클릭 시 완료 상태 즉시 반영 |
3. 효과적인 재요청 문장 템플릿
1) "안 돼요" 대신 증상 중심으로 작성
예: "버튼 클릭 시 콘솔에 `X is not defined`가 나고, 목록이 렌더되지 않습니다."처럼 구체적으로 말하면 좋습니다. 이 한 줄만으로도 AI가 점검할 범위를 좁힐 수 있습니다. 증상이 모호하면 답변도 모호해질 가능성이 큽니다.
2) 코드와 환경을 함께 제공
예: "Vite + Vanilla JS 환경이며, 아래는 main.js 전체입니다."처럼 환경을 함께 전달하세요. 같은 코드라도 환경에 따라 import 방식이나 파일 경로가 달라질 수 있습니다. 따라서 환경 정보가 빠지면 정답률이 떨어집니다.
3) 수정 범위를 명시
예: "HTML은 유지하고 JS만 수정해 주세요" 또는 "기능은 그대로 두고 에러만 해결해 주세요"처럼 제한 조건을 주면 불필요한 리팩터링을 줄일 수 있습니다. 특히 실무에서는 영향 범위를 좁히는 요청이 매우 중요합니다.
4) 검증 기준을 같이 요청
수정 코드만 받지 말고 "어떻게 확인하면 되는지"도 함께 요청하세요. 예: "수정 후 체크할 테스트 절차 3단계도 알려줘"라고 쓰면, 실행 확인까지 한 번에 정리됩니다. 이렇게 하면 동일 문제를 반복할 확률이 크게 줄어듭니다.
4. 디버깅 속도를 높이는 협업 습관
첫째, 에러 메시지는 요약하지 말고 원문 그대로 전달하세요. 둘째, 문제 코드만 잘라내기 어렵다면 최소 재현 코드(Minimal Repro)를 만들어 전달하세요. 셋째, 이전 시도 결과(무엇을 바꿨고 어떤 변화가 있었는지)를 함께 남기면 중복 제안을 줄일 수 있습니다.
AI와의 협업은 질문 품질이 성능을 좌우합니다. 요청을 구조화하면 같은 모델에서도 결과가 완전히 달라집니다. 핵심은 증상, 코드, 환경, 재현 절차, 기대 결과를 한 세트로 보내는 것입니다.
5. 자주 묻는 질문
Q1. 코드 전체를 다 보내야 하나요?
A. 항상 전체가 필요하진 않지만, 문제 함수 앞뒤 문맥은 꼭 필요합니다. 최소한 재현 가능한 범위는 포함하는 것이 좋습니다.
Q2. 에러가 없는데 동작이 이상하면 어떻게 요청하나요?
A. 실제 동작과 기대 동작의 차이를 단계별로 적어주세요. 예: "저장 버튼 클릭 후 목록에 추가되어야 하는데 추가되지 않음"처럼 작성하면 됩니다.
Q3. 한 번에 해결이 안 되면 어떻게 해야 하나요?
A. 이전 답변에서 적용한 변경점과 결과를 이어서 전달하세요. 누적 맥락이 쌓일수록 다음 수정 정확도가 높아집니다.