입력, 출력, 엣지 케이스를 명시하라
작업은 그 경계가 정의되기 전까지 정의된 것이 아니다. 시니어 엔지니어는 "무엇이 들어가고, 무엇이 나오고, 일이 잘못되면 무슨 일이 일어나는가"의 관점에서 생각한다. 그것을 프롬프트에 녹여라.
날짜 문자열을 파싱하는 함수를 작성해줘.
parseDate(input: string): Date | null 함수를 작성해줘.
입력: ISO 8601 문자열 ("2026-06-14", "2026-06-14T10:30:00Z").
출력: Date 객체, 문자열이 무효하면 null.
처리할 엣지 케이스:
- 빈 문자열 또는 공백 -> null
- 형식은 유효하나 불가능한 날짜 (2026-02-30) -> null
- 뒤에 쓰레기 값이 붙은 경우 ("2026-06-14xyz") -> null
throw 하지 마. 모든 무효 입력에 대해 null 을 반환해.
엣지 케이스를 명명하면, AI는 그것들을 처리한다. 명명하지 않으면, AI는 정상 경로를 작성하고 당신은 프로덕션에서 그 구멍을 발견한다. 같은 규율이 순수 함수 너머에도 적용된다: 엔드포인트라면, 성공 응답 과 함께 에러 응답도 명시하라(중복 이메일에는 어떤 상태 코드? 잘못된 본문에는?). UI 컴포넌트라면, 채워진 상태뿐 아니라 빈 상태와 로딩 상태도 명시하라. 대부분의 소프트웨어에서 흥미로운 동작은 그 가장자리에 산다. 그러니 거기에 당신의 프롬프트가 단어를 써야 한다.
엣지 케이스가 무엇인지 확신이 없다면, AI에게 먼저 물어라: "날짜 파서가 처리해야 할 엣지 케이스는 무엇인가?" — 그런 다음 그 답을 제약으로 되먹여라. 이것은 모델을 코드 생성기에서 체크리스트 생성기로 바꾼다. 그리고 체크리스트를 검토하는 것이 당신이 잊은 케이스를 디버깅하는 것보다 빠르다.