AI Native Engineer
Addy Osmaniμ "The AI-Native Software Engineer" μμ½ μ 리
κ°μ
AI λ€μ΄ν°λΈ μννΈμ¨μ΄ μμ§λμ΄λ AIλ₯Ό μΌμμ μΈ μν¬νλ‘μ°μ κΉμ΄ ν΅ν©νμ¬, AIλ₯Ό μμ μ λ₯λ ₯μ μ¦νμν€λ ννΈλλ‘ νμ©νλ μμ§λμ΄λ₯Ό λ§νλ€.
ν΅μ¬ λ§μΈλμ
λ³ν
AIλ₯Ό μνμ΄ μλ μ¦νκΈ°λ‘
- "AIκ° λλ₯Ό λ체ν κΉ?"κ° μλλΌ "AIκ° μ΄ μμ
μ λ λΉ λ₯΄κ³ , λ μ’κ², λ λ€λ₯΄κ² ν μ μμκΉ?"λΌκ³ μ§λ¬Έ
- AIλ μμ°μ±κ³Ό μ°½μμ±μ λ°°μ¨ μ¦κ° λꡬ (2λ°°, 5λ°°, μ¬μ§μ΄ 10λ°°)
- κ²½ν λ§μ κ°λ°μμΌμλ‘ μ μ ν 컨ν
μ€νΈ μμ§λμ΄λ§μ ν΅ν΄ λμ μμ€μ κ²°κ³Όλ₯Ό μ»μ μ μμ
νλ ₯μλ‘μμ AI (λ체μκ° μλ)
- AIλ₯Ό 24/7 κ°μ©ν, μ§μμ΄ νλΆν μ£Όλμ΄ νμ΄ νλ‘κ·Έλλ¨Έλ‘ λμ°
- "μ λ’°νλ κ²μ¦νλΌ(Trust, but Verify)" μμΉ νμ
- AI μμ± μ½λμ νμ§, κ°λ
μ±, 보μ, μ νμ±μ λν μ΅μ’
μ±
μμ μμ§λμ΄μκ² μμ
- AI μμ± μ¬λ‘(slop)μ μ€μ λ‘ μ‘΄μ¬νλ©°, μ νμ§ μμ
μ λ³λͺ
μ΄ λ μ μμ
λͺ¨λ μμ§λμ΄λ μ΄μ λ§€λμ
- μμ§λμ΄μ μν μ΄ κ·Όλ³Έμ μΌλ‘ λ³ν μ€
- λͺ¨λ μμ
μ μ§μ μ€νν기보λ€λ μμ
μ μ€μΌμ€νΈλ μ΄μ
- AI μμ΄μ νΈμκ² μμ
μ μ μνκ³ "ν λΉ"
- μ½λλ² μ΄μ€λ₯Ό AIκ° μμ
νκΈ° μ½κ² ꡬ쑰ν (GEMINI.md κ°μ λ£° νμΌ, μ’μ README, μ ꡬ쑰νλ μ½λ)
μμνκΈ° - AIλ₯Ό μΌμ μν¬νλ‘μ°μ ν΅ν©
Step 1: AI μ°μ μΌλ‘ μμ
- μμ
μ λ¨Όμ AI λͺ¨λΈμκ² μ£Όκ³ μ±λ₯μ νμΈ
- λλ©μΈ νμ΅μ΄ νμνκ°? β Gemini Deep Researchλ‘ μμ
- λμμΈ λ
Όμμ΄ λμμ΄ μ΄μ΄μ§λκ°? β AIλ‘ 3κ°μ νλ‘ν νμ
μ λΉ λ₯΄κ² ꡬμΆ
- λ§μΈλμ
μ νμ΄ ν΅μ¬: μ§κΈ λΉμ₯ AI μ°μ μ΄ λμ΄μΌ ν¨
Step 2: μ μ ν AI λꡬ μ€μ
- μ΅μ ν κ°μ μ½λ© μ΄μμ€ν΄νΈλ₯Ό νκ²½μ μ€μΉ
- μ΄λ³΄μ κΆμ₯: VS Codeμ GitHub Copilot (μ½λ μλμμ± λ° μμ±)
- μ μ© AI κ°ν μλν°: Cursor
- VS Code νλ¬κ·ΈμΈ: Cline (AI μμ΄μ νΈ)
- μλν° μΈλΆ: ChatGPT, Gemini, Claude (μ§λ¬Έ-λ΅λ³ μ€νμΌ)
Step 3: ν둬ννΈ κΈ°λ³Έ λ°°μ°κΈ°
ν둬ννΈ μμ§λμ΄λ§μ΄ ν΅μ¬ μ€ν¬. AIμκ² λͺ
νν μ§μμ λ§₯λ½ μ κ³΅μ΄ μ€μ.
λμ ν둬ννΈ μμ:
"λ΄ React μ»΄ν¬λνΈ ν
μ€νΈ μμ±ν΄μ€"
μ’μ ν둬ννΈ μμ:
"μ΄λ©μΌ νλ, λΉλ°λ²νΈ νλ, μ μΆ λ²νΌμ΄ μλ LoginForm React μ»΄ν¬λνΈκ° μμ΅λλ€.
μ±κ³΅ μ μ±κ³΅ λ©μμ§λ₯Ό, μ€ν¨ μ μλ¬ λ©μμ§λ₯Ό onSubmit μ½λ°±μ ν΅ν΄ νμν©λλ€.
λ€μμ μννλ Jest ν
μ€νΈ νμΌμ μμ±ν΄μ£ΌμΈμ:
(1) νΌ λ λλ§
(2) μ ν¨ν/μ ν¨νμ§ μμ μ
λ ₯ μ±μ°κΈ°
(3) νΌ μ μΆ
(4) onSubmitμ΄ μ¬λ°λ₯Έ λ°μ΄ν°λ‘ νΈμΆλλμ§ νμΈ
(5) μ±κ³΅ λ° μλ¬ μνκ° μ μ ν λ λλ§λλμ§ νμΈ"
AI λꡬ λ° νλ«νΌ
IDE λ΄ AI μ½λ© μ΄μμ€ν΄νΈ
GitHub Copilot
- μλμμ± λꡬμμ μ§μ ν μ½λ© μμ΄μ νΈλ‘ μ§ν
- μ΄μλ νμ€ν¬ ν λΉ μ μμ¨μ μΌλ‘ μ½λλ² μ΄μ€ λΆμ, νκ²½ ꡬμ±, λ€μ€ νμΌ νΈμ§ μ μ, λͺ
λ Ή/ν
μ€νΈ μ€ν
- Model Context Protocol (MCP)μ νμ©νμ¬ μΈλΆ λꡬ λ° μν¬μ€νμ΄μ€ 컨ν
μ€νΈ ν΅ν©
- μ ~μ€κ° 볡μ‘λ μμ
μ μ΅μ ν, 보μ/κΉμ μν€ν
μ²μλ μ¬μ ν μΈκ° κ°λ
νμ
Cursor - AI λ€μ΄ν°λΈ μ½λ μλν°
- VS Codeλ₯Ό κΈ°λ°μΌλ‘ AIκ° κΉμ΄ ν΅ν©λ μ μ© μλν°
- AI μΈμ λ€λΉκ²μ΄μ
, μ€λ§νΈ 리ν©ν λ§
- ν
μ€νΈ μμ±, μ½λ μ€λͺ
, "Agent" λͺ¨λ (λ ν° μμ
μν)
- λͺ¨λ
Έλ ν¬λ μν°νλΌμ΄μ¦ κ·λͺ¨ νλ‘μ νΈμ κ°λ ₯
.cursorrules νμΌμ ν΅ν νλ‘μ νΈλ³ κ·μΉ 컀μ€ν°λ§μ΄μ§
Windsurf - λμ©λ 컨ν
μ€νΈ AI μμ΄μ νΈ
- μν°νλΌμ΄μ¦ μꡬμ¬ν κ°μ‘° (κ°λ ₯ν λ°μ΄ν° νλΌμ΄λ²μ, μ
ν νΈμ€ν
μ΅μ
)
- HIPAA, FedRAMP κ°μ μ»΄νλΌμ΄μΈμ€ μΈμ¦
- μλ§ μ€μ μ½λλ² μ΄μ€μμ λκ·λͺ¨ 리ν©ν λ§μ μ μ©
AI κΈ°λ° νλ‘ν νμ΄ν λ° MVP λΉλ
Bolt (bolt.new)
- μμ°μ΄ μ€λͺ
μΌλ‘ λ°°ν¬ κ°λ₯ν νμ€ν MVPλ₯Ό λͺ λΆ λ§μ μμ±
- React νλ‘ νΈμλ (Tailwind CSS) + Node.js/Prisma λ°±μλ
- μ½ 15μ΄λ§μ νλ‘μ νΈ μμ±
- "GitHubλ‘ λ΄λ³΄λ΄κΈ°" κΈ°λ₯ μ 곡
- λΉ λ₯Έ λ°λ³΅μ νμ, κΉλν μ½λ μΆλ ₯
v0 (v0.dev by Vercel)
- Next.js μ± μμ±μ νΉν
- ShadCN UI μ€νμΌλ‘ μλ μ€νμΌλ§ (컀μ€ν
λμμΈμ΄ νμνλ©΄ μ¬μμ
νμ)
- Vercel μνκ³μ μ΅μ ν, μ¦μ λ°°ν¬ κ°λ₯
- Next.js λ° Vercel νΈμ€ν
κ³νμ΄ μλ€λ©΄ μμ°μ€λ¬μ΄ μ ν
Lovable (lovable.dev)
- μ΄λ³΄μλ λΉμμ§λμ΄ λμ
- ν둬ννΈ-ν¬-UI λͺ©μ
(μΌλΆ μ½λ ν¬ν¨)
- μ¬μ© νΈμμ±μ΄ κ°μ μ΄λ, μ½λ μμ€ μ»€μ€ν°λ§μ΄μ§μ μ νμ
- λμμ΄λλ PMμ΄ μμ΄λμ΄λ₯Ό μκ°ννλ λ° μ μ©
μννΈμ¨μ΄ κ°λ° μλͺ
μ£ΌκΈ°(SDLC) μ λ°μ κ±ΈμΉ AI νμ©
1. μꡬμ¬ν λ° μμ΄λμ΄ λμΆ
- λΈλ μΈμ€ν λ° ννΈλ: "κ°μΈ μ¬λ¬΄ μΆμ κΈ° μ±μ νμν κΈ°λ₯μ?"
- μ¬μ©μ μ€ν 리 μμ±: "λΌμ΄λ μμ΄λ§ μλΉμ€ MVPλ₯Ό μν 5κ° μ¬μ©μ μ€ν 리"
- μꡬμ¬ν λͺ
νν: μ λ§€ν μꡬμ¬νμ λν΄ λ¬Όμ΄λ³Ό μ§λ¬Έ μ μ
- κ²½μμ¬ λΆμ: "νμ€ν¬ κ΄λ¦¬ μΉμ±μ μΌλ°μ μΈ κΈ°λ₯κ³Ό ν¨μ μ?"
- PRD(μ ν μꡬμ¬ν λ¬Έμ) μ΄μ μμ±
2. μμ€ν
λμμΈ λ° μν€ν
μ²
- μν€ν
μ² μ κ·Όλ² λΈλ μΈμ€ν λ°
- μ€κ³ ν¨ν΄ μ μ
- μμ€ν
λ€μ΄μ΄κ·Έλ¨ μμ± μ§μ
3. ꡬν (μ½λ©)
- μ€μκ° μ½λ μ μ λ° μλμμ±
- 보μΌλ¬νλ μ΄νΈ μ½λ μμ±
- 리ν©ν λ§ μ μ
- λ€μ€ νμΌ νΈμ§
4. ν
μ€ν
λ° νμ§ λ³΄μ¦
- λ¨μ ν
μ€νΈ μλ μμ±
- ν
μ€νΈ μΌμ΄μ€ μ μ
- μ£μ§ μΌμ΄μ€ μλ³
- ν
μ€νΈ 컀λ²λ¦¬μ§ κ°μ
5. λλ²κΉ
λ° μ μ§λ³΄μ
- μλ¬ λ©μμ§ λΆμ
- λ²κ·Έ μμΈ μλ³
- λλ²κΉ
λ‘κ·Έ μΆκ°
- λ κ±°μ μ½λ μ΄ν΄
6. λ°°ν¬ λ° μ΄μ
- λ°°ν¬ μ€ν¬λ¦½νΈ μμ±
- CI/CD νμ΄νλΌμΈ μ€μ
- λͺ¨λν°λ§ λ° λ‘κΉ
μ€μ
- λ¬Έμν μλν
AI μ¦κ° μμ§λμ΄λ§μ μν λͺ¨λ² μ¬λ‘
1. λͺ
ννκ³ λ§₯λ½μ μΈ ν둬ννΈ μμ±
- μΆ©λΆν λ§₯λ½ μ 곡 (μ½λ μ€λν«, ν¨μ λͺ©μ λ±)
- μΆλ ₯ νμ λͺ
μ (JSON, λ¨κ³λ³ μ€λͺ
λ±)
- 볡μ‘ν μμ
μ λ¨κ³λ³λ‘ λΆλ¦¬
- μ±κ³΅μ μΈ ν둬ννΈ λΌμ΄λΈλ¬λ¦¬ μ μ§
μμ:
"μ΄ μ½λ [μ€λν« ν¬ν¨]λ₯Ό μ΄λ»κ² μ΅μ νν μ μμκΉμ? νΉν μ λ ¬ λΆλΆμ μλλ₯Ό κ°μ νκ³ μΆμ΅λλ€."
2. AI μΆλ ₯μ νμ 리뷰νκ³ κ²μ¦
- AI μμ± μ½λλ₯Ό λ§Ήλͺ©μ μΌλ‘ μμ©νμ§ λ§ κ²
- μ½λ 리뷰 νλ‘μΈμ€ μ μ§
- 보μ, μ±λ₯, κ°λ
μ± κ²μ¦
- ν
μ€νΈ μ€νμΌλ‘ μ νμ± νμΈ
3. λ²μ κ΄λ¦¬: AIλ₯Ό μ¦νκΈ°λ‘, μ 체 νλ‘μ νΈ μλμ‘°μ’
μΌλ‘λ μ¬μ© κΈμ§
- μμ λ°λ³΅μ λ¨κ³λ‘ AI νμ©
- μ 체 νλ‘μ νΈλ₯Ό AIμκ² λ§‘κΈ°μ§ λ§ κ²
- 볡μ‘ν μμ
μ μΈκ°μ΄ μ£Όλ
4. μ§μμ μΈ νμ΅ λ° μ΅μ μ 보 μ μ§
- AI λꡬ λ° κΈ°μ κ³μ μ
λ°μ΄νΈ
- μλ‘μ΄ λͺ¨λΈκ³Ό κΈ°λ₯ νμ
- ν둬ννΈ μμ§λμ΄λ§ μ€ν¬ μ§μ κ°λ°
5. νμ
λ° ν κ΄ν μ립
- ν μ°¨μμ AI μ¬μ© κ°μ΄λλΌμΈ μ€μ
- ν둬ννΈ λ° λ² μ€νΈ νλν°μ€ 곡μ
- AI λꡬ μ¬μ©μ λν μΌκ΄λ μ κ·Ό
6. AIλ₯Ό μ±
μκ° μκ³ μ€λ¦¬μ μΌλ‘ μ¬μ©
- λ°μ΄ν° νλΌμ΄λ²μ κ³ λ €
- νΈν₯ λ° κ³΅μ μ± λ¬Έμ μΈμ
- λΌμ΄μ μ€ λ° μ μκΆ μ€μ
- AIμ νκ³ μ΄ν΄
7. 리λ λ° λ§€λμ λ₯Ό μν μ‘°μΈ: AI μ°μ μμ§λμ΄λ§ λ¬Έν μ‘μ±
- AI λꡬ ν¬μ λ° κ΅μ‘ μ 곡
- μ€ν λ° νμ μ₯λ €
- AI μ¬μ© μ±κ³Ό μΈ‘μ λ° κ³΅μ
κ²°λ‘ : λ―Έλ μμ©νκΈ°
μ£Όμ μμ½
- AIλ μ€ν¬μ λ°°μ¨ μ¦κ° λꡬμ΄μ§, λ§λ² λΈλλ°μ€λ μνμ΄ μλ
- μ§μμ μΌλ‘ μ§λ¬Έ: "AIκ° μ΄κ²μ μ΄λ»κ² λμΈ μ μμκΉ?"
- μλ‘μ΄ μ€ν¬: ν둬ννΈ μμ§λμ΄λ§, μμ΄μ νΈ μ€μΌμ€νΈλ μ΄μ
- μλλ₯Ό μ΄μν μ€ν¬μ μ€μμ± μ¦κ°: μν€ν
μ² μ€κ³, λΉνμ μ¬κ³ , μ€λ¦¬μ νλ¨
λꡬ μνκ³
- λ§λ₯ AI λꡬλ μμ
- κ°μΈ λ§μΆ€ ν΄ν· κ΅¬μ± νμ (IDE μ΄μμ€ν΄νΈ, νλ‘ν νμ΄ν μμ±κΈ° λ±)
- μλ‘μ΄ λꡬ λ±μ₯μ λ°λΌ ν΄ν· μ§μ μ
λ°μ΄νΈ
νμ
μ ννΈλμ
- SDLC λͺ¨λ λ¨κ³μμ AI νμ© (μ½λ©λΏ μλλΌ ν
μ€νΈ, λλ²κΉ
, λ¬Έμν, λμμΈ λΈλ μΈμ€ν λ°)
- μΈκ°μ κ³ μ ν μ¬λ₯μ κ°μ₯ μ€μν κ³³μ μ§μ€
κ²½νμ κ°μΉ
- μ£Όλμ΄ μμ§λμ΄λ AIλ‘ μ€κΈ μμ€ μ½λ μμ± κ°λ₯
- μλμ΄ λ§μΈλμ
μ΄ μ§μ ν κ°μΉ: 볡μ‘ν λ¬Έμ λ₯Ό κ²¬κ³ νκ² ν΄κ²°νκ³ μμ€ν
μ μ°μνκ² ν΅ν©
λ―Έλ μ λ§
- AIλ λμ± κ°λ ₯ν΄μ§κ³ λμ± ν΅ν©λ κ²
- λ―Έλ IDEλ AIκ° μ§μμ μΌλ‘ μ€νλλ©° λ°±κ·ΈλΌμ΄λμμ μμ
μ νμΈνκ±°λ μ½λλ₯Ό μ΅μ ν
- λλ©μΈλ³ μ λ¬Έ AI λ±μ₯ μμ (νλ‘ νΈμλ UX μ λ¬Έκ° vs λ°μ΄ν°λ² μ΄μ€ νλ μ λ¬Έκ°)
- κΆκ·Ήμ μΌλ‘ "AI λ€μ΄ν°λΈ"λ κ·Έλ₯ "μννΈμ¨μ΄ μμ§λμ΄"κ° λ κ²
λ λμ μν₯
- κ°λ° κ°μνλ‘ λ μΌμ¬μ°¬ νλ‘μ νΈμ μ°½μμ μΈ‘λ©΄μ μ§μ€ κ°λ₯
- λΉ λ₯Έ νλ‘ν νμ΄νκ³Ό μ€νμ μλ
- μ§μ
μ₯λ²½ νλ½μΌλ‘ λ λ§μ μ¬λλ€μ΄ μννΈμ¨μ΄ κ΅¬μΆ κ°λ₯
- μμ§λμ΄λ§μ΄ μμλ ₯κ³Ό λμμΈμ λ μ§μ€, λ°λ³΅μ μμ
μ AI μ΄μμ€ν΄νΈκ° μ²λ¦¬
μ€μ² λ°©λ²
- νμ¬ μμΉμμ μμ: νλμ μ λꡬ μλ λλ λ€μ μμ
μ ν λΆλΆμ AI μ μ©
- νΈμν μμμ μ μ§μ μΌλ‘ νμ₯
- μ±κ³΅ μΆννκ³ μ€ν¨μμ λ°°μ°κΈ°
- μ΄κ²μ μΌνμ± μ νμ΄ μλλΌ μ¬μ
ref