Part 1. AI 코딩의 현실 (30분)

핵심 메시지

“AI가 코딩을 다 해준다?” — 진짜와 거짓


1. AI 코딩 도구 현황

Claude Code

  • Anthropic의 터미널 기반 AI 코딩 에이전트
  • 코드베이스 전체를 컨텍스트로 이해하고, 직접 파일을 읽고/쓰고/실행
  • CLAUDE.md를 통한 프로젝트별 지침 설정 가능
  • 멀티 에이전트(서브에이전트) 지원 — 복잡한 작업을 병렬로 분산

Antigravity (반중력?)

  • Google이 2025.11에 Gemini 3와 함께 출시한 AI 코딩 플랫폼
  • Agent-First 구조 — AI 에이전트가 계획·코딩·터미널·브라우저 테스트까지 자율 수행
  • VS Code 기반 에디터 + 멀티 에이전트 동시 실행(Agent Manager)
  • 구글 계정만 있으면 무료 사용 가능, 한국어 프롬프트 완벽 지원

비교 포인트

항목Claude CodeAntigravity
제작사AnthropicGoogle
대상개발자 중심개발자 중심 (비개발자도 접근 가능)
인터페이스터미널/IDEVS Code 기반 에디터
커스터마이징높음 (CLAUDE.md, MCP)높음 (멀티 에이전트, 브라우저 확장)
강점깊은 코드 이해 & 수정Agent-First 자율 실행 & 브라우저 테스트

2. AI가 잘하는 것 vs 못하는 것

✅ AI가 잘하는 것

  • 보일러플레이트 코드 생성 — CRUD, API 엔드포인트, 설정 파일
  • 패턴 기반 작업 — 테스트 코드 작성, 리팩토링, 포맷 변환
  • 문서화 — 코드 주석, README, API 문서
  • 디버깅 보조 — 에러 메시지 해석, 스택 트레이스 분석
  • 학습 가속 — 새로운 프레임워크/라이브러리 빠르게 파악

❌ AI가 못하는 것 (솔직한 경계선)

  • 비즈니스 로직 설계 — “무엇을 만들어야 하는가”의 판단
  • 아키텍처 결정 — 시스템 전체의 트레이드오프 이해
  • 도메인 특화 지식 — 금융 규제, 건설 BIM, 의료 프로토콜 등
  • 창의적 문제 해결 — 전례 없는 문제에 대한 새로운 접근
  • 코드베이스의 “왜” — 레거시 코드의 역사적 맥락

3. 데모: 프롬프트 차이에 따른 결과 비교

Bad Prompt 🔴

로그인 기능 만들어줘

→ 결과: 기본적인 form만 생성, 보안 없음, 에러 처리 없음

Good Prompt 🟢

Next.js 14 App Router 기반으로 로그인 기능을 구현해줘.
- NextAuth.js v5 사용
- 이메일/비밀번호 + Google OAuth 지원
- 로그인 실패 시 구체적 에러 메시지 표시
- rate limiting 적용 (5회 실패 시 30초 대기)
- 접근성(a11y) 고려한 form 마크업

→ 결과: 프로덕션 수준의 완성도 높은 코드

핵심 교훈

같은 AI, 같은 모델이라도 프롬프트의 구체성이 결과 품질을 결정한다.


4. One-Shot 주의집중 & 전문 도메인 접근법

One-Shot 주의집중이란?

첫 프롬프트 한 방으로 AI의 “모드”를 완전히 전환시키는 기법. AI는 대화의 시작 부분에 가장 큰 가중치를 두므로, 첫 프롬프트가 전체 대화의 품질을 결정한다.

구조: 역할 고정 + 도메인 주입

당신은 15년 경력의 건설 BIM 엔지니어이자 소프트웨어 아키텍트입니다.
IFC 표준, HmEG, Geometry API, 그리고 건설 현장의 실무 프로세스를 깊이 이해하고 있습니다.

다음 규칙을 반드시 따르세요:
1. 모든 답변에 IFC 엔티티명을 정확히 명시할 것
2. 코드 예시는 HmEG API (C#) 기반으로 작성할 것
3. 건설 현장에서 실제 사용 가능한 수준으로 답변할 것

전문 도메인 접근 전략

  1. 도메인 용어 사전 주입 — 첫 프롬프트에 핵심 용어와 약어를 정의
  2. 제약 조건 명시 — 업계 규정, 표준, 컴플라이언스 요구사항
  3. 예시 기반 고정 — “이런 식으로 답변해줘”라는 예시 하나가 100줄의 설명보다 효과적
  4. 페르소나 + 청중 설정 — “당신은 전문가, 나는 주니어 개발자” 식의 관계 설정

실전 팁

One-shot으로 도메인을 고정한 뒤, 후속 질문에서는 도메인 용어를 그대로 사용하면 AI가 맥락을 유지한다. “BIM 모델의 IfcWall 엔티티에서…” 처럼 전문 용어를 섞어 쓰자.


5. 집요하게 물어보기 → Agent에게 시키기

인간의 집요함 vs Agent의 자동화

수동 방식: 집요하게 물어보기

1차: "이 코드의 버그 찾아줘"
2차: "그 수정이 다른 함수에 영향 주는지 확인해줘"
3차: "영향받는 함수도 같이 수정해줘"
4차: "테스트 코드도 작성해줘"
5차: "엣지 케이스도 추가해줘"

→ 5번의 대화가 필요. 매번 컨텍스트를 이어가야 함.

자동 방식: Agent에게 시키기

이 코드베이스에서 버그를 찾고, 수정하고,
영향받는 모든 함수를 확인해서 같이 수정하고,
테스트 코드를 작성하고, 엣지 케이스까지 커버해줘.
수정 전후 diff를 보여줘.

→ Agent가 알아서 단계별로 실행. 중간에 서브에이전트까지 활용.

핵심 전환점

단계방식특징
Level 1한 번 물어보기단편적 답변
Level 2집요하게 후속 질문깊이 있지만 수동
Level 3Agent에게 위임자동화 + 검증 루프

마인드셋 전환

“내가 5번 물어볼 것을 한 번의 명령으로 Agent가 5단계를 스스로 실행하게 만들 수 있는가?” 이것이 프롬프트 사용자 → AI 오케스트레이터로의 전환이다.


6. 능력과잉의 AI — 창의력과 잠재능력을 끌어올리는 프롬프트

AI는 “능력과잉” 상태다

현재의 LLM은 대부분의 사용자가 능력의 10~20%만 활용하고 있다. 모델은 이미 충분히 강력한데, 우리의 프롬프트가 그 잠재력을 제한하고 있을 뿐.

잠재력을 끌어올리는 프롬프트 패턴

패턴 1: 사고 확장 요청

이 문제에 대해 5가지 완전히 다른 접근법을 제시해줘.
각 접근법의 트레이드오프를 분석하고,
내가 생각하지 못했을 법한 창의적 해법을 반드시 1개 이상 포함해줘.

패턴 2: 역할 극대화

당신은 세계 최고 수준의 시스템 아키텍트입니다.
"평범한 답변"은 하지 마세요.
이 설계에서 아무도 지적하지 않을 숨겨진 결함을 찾아내고,
그것을 해결하는 엘레강트한 방법을 제안하세요.

패턴 3: 제약 해제 + 재구성

기존의 관례를 무시하고 처음부터 다시 설계한다면?
현재 기술 스택에 제한받지 말고,
이 문제를 해결하는 이상적인 아키텍처를 그려줘.
그 다음, 현실적 제약을 하나씩 적용해서 타협안을 만들어줘.

패턴 4: 메타 프롬프트

내가 이 질문을 더 잘하려면 어떻게 물어봐야 해?
내가 놓치고 있는 관점이 있으면 알려줘.
그리고 그 개선된 질문에 대해 답변해줘.

핵심

AI의 능력을 제한하는 건 AI가 아니라 우리의 질문이다. “더 잘 물어보는 것”이 곧 “더 좋은 결과를 얻는 것”이다.


7. 마인드셋 전환: “AI는 못하지 않다. 프롬프트가 잘못됐다”

Before → After

BeforeAfter
”AI가 이상한 코드를 줬어""내 프롬프트가 모호했구나"
"AI는 복잡한 건 못해""작업을 잘 쪼개지 못했구나"
"AI 답변이 틀렸어""검증 단계를 빠뜨렸구나"
"AI가 맥락을 모르네""컨텍스트를 충분히 안 줬구나”

실전 체크리스트

  • 역할과 목표를 명확히 지정했는가?
  • 구체적인 제약 조건을 줬는가?
  • 원하는 출력 형식을 예시로 보여줬는가?
  • 작업을 적절한 크기로 분할했는가?
  • 결과를 검증하는 단계가 있는가?

8. AI를 팀원처럼 부려먹는 법

핵심 마인드셋: 나는 PM, AI는 실행자

AI를 “검색 도구”가 아니라 팀에 새로 합류한 주니어 개발자로 대하라. 좋은 매니저가 주니어에게 하듯이 — 맥락을 주고, 기대치를 설정하고, 결과를 리뷰한다.

Step 1. 온보딩 — AI에게 프로젝트를 가르쳐라

신입에게 첫날 아무 설명 없이 “코드 짜”라고 하면? 당연히 망한다.

우리 프로젝트 구조:
- Next.js 14 App Router
- Supabase (Auth + DB)
- Tailwind CSS + shadcn/ui
- 모노레포: apps/web, packages/shared

컨벤션:
- 컴포넌트는 PascalCase, 유틸 함수는 camelCase
- API 라우트는 /api/v1/ 하위에 RESTful 구조
- 에러는 반드시 커스텀 AppError 클래스 사용

→ Claude Code에서는 CLAUDE.md, Antigravity에서는 프로젝트 설정이 이 역할을 한다.

Step 2. 업무 지시 — “뭘 해라”가 아니라 “왜, 어떻게”를 말해라

나쁜 지시좋은 지시
”로그인 만들어""기존 Supabase Auth를 활용해서 Google OAuth 로그인을 추가해줘. 현재 이메일 로그인은 유지하고, 신규 사용자는 자동으로 profiles 테이블에 row가 생성되어야 해."
"버그 고쳐""장바구니에서 수량 0으로 변경 시 아이템이 삭제되지 않는 버그야. CartContext의 updateQuantity 함수를 확인해줘. 0일 때 removeItem을 호출하도록 수정하고 테스트도 추가해."
"리팩토링 해""이 파일이 400줄이 넘어. UI 렌더링, 비즈니스 로직, API 호출을 각각 분리하고, 커스텀 훅으로 추출해줘. 기존 동작은 변경하면 안 돼.”

Step 3. 코드 리뷰 — AI의 결과물을 무조건 신뢰하지 마라

AI가 만든 코드를 그대로 머지하는 건 코드 리뷰 없이 커밋하는 것과 같다.

리뷰 체크리스트:

  • 의도한 동작을 하는가? (직접 실행 또는 테스트)
  • 기존 코드 스타일/컨벤션과 일치하는가?
  • 엣지 케이스를 처리하는가? (빈 값, 에러, 동시성)
  • 불필요한 코드가 추가되지 않았는가? (over-engineering 주의)
  • 보안 이슈는 없는가? (하드코딩된 시크릿, SQL 인젝션 등)

함정

AI는 자신감 있게 틀린다. 코드가 깔끔해 보일수록 더 꼼꼼히 리뷰해야 한다.

Step 4. 피드백 루프 — 고쳐달라고 하라, 구체적으로

이 코드에서 3가지 문제가 있어:
1. useEffect의 의존성 배열이 빠져 있어 → 무한 루프 위험
2. 에러 핸들링이 console.log뿐이야 → 사용자에게 토스트 알림 추가
3. 타입이 any로 되어 있어 → Product 인터페이스를 정의해서 적용해줘

수정 후 전체 코드를 다시 보여줘.

→ “이상해” ❌ → 구체적인 문제점 + 기대하는 해결 방향

Step 5. 위임 확대 — 신뢰가 쌓이면 더 큰 일을 맡겨라

Level 1: "이 함수 하나 작성해줘"
Level 2: "이 기능 전체를 구현해줘"
Level 3: "이 모듈을 설계하고 구현해줘, 테스트까지"
Level 4: "이 프로젝트의 아키텍처를 분석하고 개선안을 실행해줘"

처음부터 Level 4를 던지지 마라. 작은 작업에서 AI의 성향을 파악하고, 점점 범위를 넓혀라.

결론

AI를 잘 쓰는 사람은 “프롬프트를 잘 쓰는 사람”이 아니라 **“일을 잘 시키는 사람”**이다. 좋은 매니저가 좋은 팀을 만들듯, 좋은 오케스트레이터가 AI의 진짜 가치를 끌어낸다.


핵심 요약

1. 도구를 알아야 한다     → Claude Code, Antigravity 등 현황 파악
2. 경계를 알아야 한다     → AI가 잘하는 것 / 못하는 것 구분
3. 첫 프롬프트가 전부다   → One-shot 주의집중으로 도메인 고정
4. 집요함을 자동화하라    → 수동 후속질문 → Agent 위임
5. 한계를 밀어붙여라      → 능력과잉의 AI에서 창의력 끌어내기
6. 탓하지 말고 고쳐라     → AI 탓 ❌ → 프롬프트 개선 ⭕
7. 팀원처럼 부려먹어라    → 온보딩 → 지시 → 리뷰 → 피드백 → 위임 확대

관련 노트