이 레포는 내가 개발을 하면서 꾸준히 스스로에게 던지면 좋은 질문들을 정리해놓은 문서입니다. 기능 하나를 만들 때마다 아래 순환 프로세스를 따라 한 바퀴 돌며 질문하고, 막히는 지점에서 상세 문서로 내려갑니다.
상세 질문은 두 문서로 분리되어 있으며, 각각 LLM·에이전트에 컨텍스트로 넣어 쓰기 좋게 분리해둔 버전입니다. (코드 리뷰 에이전트에는 단계별 문서를, 설계 검토에는 섹션별 문서를 넣는 식)
| 문서 | 내용 | 용도 |
|---|---|---|
| dev-questions-18-sections.md | 18개 주제 섹션별 전체 질문 | 특정 주제(동시성·보안·테스트 등)를 깊게 점검할 때 |
| dev-questions-by-stage.md | 구현 8단계 순서별 질문 + 나가기 조건 | 작업 흐름을 따라가며 단계별로 점검할 때 |
기능이 동작하는가?
↓
데이터가 안전한가?
↓
권한이 맞는가?
↓
장애에 버티는가?
↓
변경이 가능한가?
↓
운영이 가능한가?
↓
비용이 합리적인가?
↓
(요구사항이 바뀌면 처음으로) ↺
- 무엇을 만들어야 하고, 누가 사용하는가? 범위 밖은 합의했는가?
- 항상 참이어야 하는 불변식을 한 문장으로 말할 수 있는가?
- 사용자는 처리 중·성공·실패에 각각 무엇을 보게 되는가?
→ 상세: 18-sections §1·14·17 · by-stage ①·④
- 이상한 값(빈 값·경계값·잘못된 enum)이 들어오면? 백엔드가 최종 방어선이다.
- 어디까지 한 트랜잭션인가? 중간 실패 시 어디까지 롤백되는가?
- 동시에 두 요청이 들어오면? 연타·재시도는? — unique 제약이 첫 줄 방어다.
- 이 데이터의 주인은 누구이고, 삭제는 물리인가 논리인가?
→ 상세: 18-sections §2·4·5·15 · by-stage ②·④
- 인증(누구인가) · 인가(해도 되는가) · 소유권(정말 그 사람 것인가)을 모두 확인하는가?
- 남의 리소스 id를 넣으면 어떻게 되는가?
- 토큰·비밀번호·secret·개인정보가 안전하게 다뤄지는가?
→ 상세: 18-sections §3·11 · by-stage ③·④·⑥
- 외부 의존이 느리거나 죽어 있으면? — timeout / retry / circuit breaker / fallback
- 재시도가 중복 실행을 만들지 않는가 (idempotency)?
- 실패를 사용자에게 어떻게 알리고, 민감정보가 새지 않는가?
- 데이터가 10배여도 버티는가? N+1·인덱스·페이징은?
→ 상세: 18-sections §6·8·9 · by-stage ⑤·⑥
- 조건이 하나 추가되면 어디를 고치는가? 한 곳인가, 다섯 곳인가?
- 정책과 구현이 분리되어 있는가? 내부 엔티티가 API에 그대로 노출되지 않는가?
- 바꿔도 안 깨진다는 자신감이 있는가? — 실패·권한·경계값 테스트가 있는가?
- 다른 개발자가 문서 없이도 이어받을 수 있는가?
→ 상세: 18-sections §7·12·13·18 · by-stage ⑦
- 장애가 나면 어떻게 알게 되는가 — 알림? 사용자 신고가 첫 신호는 아닌가?
- userId·requestId·traceId로 추적 가능한가?
- 롤백 가능한가? 설정으로 끌 수 있는가? 보정 쿼리·재처리 도구가 있는가?
→ 상세: 18-sections §10 · by-stage ⑧
- 이 복잡도를 감당할 가치가 있는가? 더 싸고 단순한 대안은 없는가?
- 서버·DB·외부 호출·운영·학습·변경 비용까지 포함해서 생각했는가?
→ 상세: 18-sections §16 · by-stage ①·⑧
| 시점 | 무조건 던질 3개 |
|---|---|
| 설계 전 | 불변식 한 문장? · 실패 경계? · 더 단순한 대안? |
| 구현 중 | 동시에 두 번 들어오면? · 권한 없는 사람이 오면? · 중간에 실패하면 데이터는? |
| 머지 전 | 데이터 10배여도 버티나? · 로그에 secret 없나? · 바꿔도 안 깨진다는 자신감 있나? |
| 배포 후 | 터지면 어떻게 아나? · 롤백 가능한가? · 추적 가능한가? |