사람이 쓴 글
'되게 해줘'로 시킨 코드가 늘 다시 고쳐지는 이유
코딩 요청에서 완료 조건·에지 케이스·깨지면 안 되는 것을 적는 법.
무엇이 어려운가
이렇게 씁니다
CSV 파일 읽어서 월별 합계 내는 스크립트 짜줘
동작하는 코드는 나옵니다. 문제는 '동작한다'의 기준이 서로 다르다는 것입니다.
완료 조건이 없으면 AI는 가장 좁은 해석으로 완료를 선언합니다. 헤더가 없는 파일, 쉼표가 든 값, 빈 줄, 숫자가 아닌 칸 — 실제 데이터가 갖고 있는 것들이 전부 '동작한다' 밖에 있습니다. 그리고 기존 코드에 붙이는 작업이라면 깨지면 안 되는 것을 말하지 않은 채 시키는 순간, 고치라는 것과 함께 멀쩡하던 것이 바뀝니다.
요청에 무엇을 더해야 하는가
1. 완료 조건을 번호로, 관찰 가능하게
이렇게 바꿉니다
완료 조건: 1) 헤더 유무를 자동 감지한다 2) 금액 칸이 숫자가 아니면 그 줄 번호를 stderr로 알리고 계속 간다 3) 결과는 월 오름차순 CSV로 stdout에 낸다. 파이썬 3.11, 표준 라이브러리만.
조건마다 '됐는지 눈으로 확인할 수 있는가'를 기준으로 씁니다.
2. 실패했을 때의 동작을 정한다
성공 경로만 적으면 실패 경로는 AI의 임의가 됩니다. 오류 메시지는 무엇을 담는지, 종료 코드는 몇인지, 이어 가는지 멈추는지를 정해 줍니다. 이것이 에지 케이스 목록보다 먼저입니다 — 케이스는 빠뜨려도 동작 원칙이 있으면 일관되게 처리됩니다.
3. 언어·런타임·의존성을 확정한다
버전을 정하지 않으면 내 환경에서 안 도는 문법이 옵니다. 의존성 추가 허용 여부도 적습니다. 그리고 재지 않은 성능 수치를 주장하지 말라는 한 줄을 넣어 두면 '10배 빨라졌습니다' 같은 근거 없는 문장이 걸러집니다.
직접 쓸 때의 체크리스트
- 1완료 조건이 번호 달린 관찰 가능한 문장인가
- 2실패 시 동작(메시지·종료 코드·복구)을 정했는가
- 3언어·런타임 버전·의존성 정책을 적었는가
- 4기존 동작 중 깨지면 안 되는 것을 나열했는가
- 5검증 방법(실행해 볼 명령·입력 예시)을 요구했는가
읽었으면 직접 해 보는 편이 빠릅니다.
지금 만들어 보기