topic★★★★★난이도 · 약 20분
좋은 프롬프트의 조건 — 나쁜 지시 vs 좋은 지시
구체성, 맥락, 제약 조건 — Bad vs Good 예시로 배우는 프롬프트 작성 원칙.
#프롬프트#구체성#맥락#Bad-Good#비교
왜 배우는가
"로그인 만들어줘"와 "Google OAuth로 로그인 페이지를 만들어줘. 기존 src/app/login에 추가하고 Supabase Auth를 사용해"는 완전히 다른 결과를 낳는다. 지시의 질 = 결과의 질이다.
좋은 프롬프트에는 세 가지 요소가 있다: 구체성(무엇을 원하는지 명확히), 맥락(현재 상황과 배경), 제약 조건(하지 말아야 할 것, 형식 요구). 이 세 가지가 빠지면 AI는 추측으로 빈칸을 채운다.
| 나쁜 프롬프트 | 좋은 프롬프트 | |
|---|---|---|
| 기능 요청 | "버튼 만들어줘" | "src/components/Button.tsx에 primary/secondary 2가지 variant를 가진 버튼 컴포넌트를 만들어줘. Tailwind CSS 사용, 클릭 시 로딩 스피너 표시" |
| 버그 수정 | "안 돼. 고쳐줘" | "로그인 버튼 클릭 시 콘솔에 'TypeError: Cannot read properties of undefined' 에러 발생. src/app/login/page.tsx 34번째 줄. user 객체가 null인 경우를 처리 안 한 것 같다" |
| 코드 리뷰 | "이거 괜찮아?" | "이 useEffect에서 의존성 배열이 비어있는데, state가 변할 때 재실행되어야 하는 건 아닌지 확인해줘" |
| 학습 | "React 알려줘" | "React의 useState와 useEffect의 차이를 예제 코드와 함께 설명해줘. 나는 JavaScript는 아는데 React는 처음이야" |
나쁜 프롬프트의 공통점: 맥락이 없고, 뭘 원하는지 모호하며, AI가 추측해야 할 부분이 많다. 좋은 프롬프트의 공통점: 현재 상황을 설명하고, 원하는 결과를 구체적으로 명시하며, 기술 스택이나 제약 조건을 알려준다.
bash
# Claude Code에서의 실전 프롬프트 예시
# 나쁜 예
claude "에러 고쳐줘"
# 좋은 예
claude "npm run build 시 다음 에러 발생:
Type error: Property 'name' does not exist on type 'User | null'.
src/components/Profile.tsx 22번째 줄에서 user.name을 접근하는데,
user가 null일 수 있다. optional chaining(?.)으로 수정하거나
null 체크 가드를 추가해줘."에러 메시지, 파일 위치, 원인 추측, 원하는 해결 방향까지 제공하면 AI가 정확하게 수정할 확률이 극적으로 높아진다.
프롬프트 작성의 황금률: "내가 이 프로젝트를 처음 보는 동료 개발자에게 설명한다"고 생각하라. 그 동료가 바로 작업에 착수할 수 있을 만큼 충분한 정보를 담으면 된다.