## πŸ“Œ Brief Summary μ• μžμΌ 개발(Agile Development)은 λΆˆν™•μ‹€ν•œ μš”κ΅¬μ‚¬ν•­κ³Ό κΈ‰λ³€ν•˜λŠ” ν™˜κ²½ μ†μ—μ„œ 반볡적이고 점진적인 ν”„λ‘œμ„ΈμŠ€λ₯Ό 톡해 κ°€μΉ˜λ₯Ό μ°½μΆœν•˜λŠ” μ†Œν”„νŠΈμ›¨μ–΄ 개발 방법둠이닀. λΆˆν•„μš”ν•œ 사전 섀계λ₯Ό μ§€μ–‘ν•˜λŠ” YAGNI 원칙과 κΈ°λŠ₯ μ€‘μ‹¬μ˜ μ½”λ“œ ꡬ쑰화λ₯Ό 톡해 개발 속도와 μœ μ—°μ„±μ„ κ·ΉλŒ€ν™”ν•˜λŠ” 것을 ν•΅μ‹¬μœΌλ‘œ ν•œλ‹€. ## πŸ“– Core Content 1. **YAGNI μ›μΉ™μ˜ μ² μ €ν•œ μ€€μˆ˜ (You Aren't Gonna Need It)** - μ• μžμΌ ν™˜κ²½μ—μ„œλŠ” 미래의 λΆˆν™•μ‹€ν•œ μ‚¬μš© 사둀λ₯Ό μœ„ν•΄ 미리 λ³΅μž‘ν•œ κΈ°λŠ₯을 κ΅¬μΆ•ν•˜λŠ” μ˜€λ²„μ—”μ§€λ‹ˆμ–΄λ§μ„ μ§€μ–‘ν•΄μ•Ό ν•œλ‹€. - ν˜„μž¬μ˜ μš”κ΅¬μ‚¬ν•­μ— μ§‘μ€‘ν•¨μœΌλ‘œμ¨ λΆˆν•„μš”ν•œ λ³΅μž‘μ„±μ„ μ œκ±°ν•˜κ³  μž‘μ—… λ‚­λΉ„λ₯Ό μ΅œμ†Œν™”ν•œλ‹€. 2. **κΈ°λŠ₯ 기반 ꡬ쑰(Feature-Based Structure) 섀계** - 파일 μœ ν˜•(Type)이 μ•„λ‹Œ λΉ„μ¦ˆλ‹ˆμŠ€ κΈ°λŠ₯(Feature) λ˜λŠ” λͺ¨λ“ˆμ„ μ€‘μ‹¬μœΌλ‘œ 폴더 ꡬ쑰λ₯Ό μ„€κ³„ν•˜λŠ” 것이 μ• μžμΌ 방법둠과 높은 정합성을 κ°–λŠ”λ‹€. - 각 κΈ°λŠ₯이 λ…λ¦½μ μœΌλ‘œ 생성, κ΅¬ν˜„, 배포될 수 μžˆλ„λ‘ 보μž₯ν•˜μ—¬ νŒ€ κ°„μ˜ 병렬 ν˜‘μ—… νš¨μœ¨μ„±μ„ 높인닀. 3. **반볡적 ν’ˆμ§ˆ 확보** - 단일 μ±…μž„ 원칙(SRP)κ³Ό 같은 SOLID 원칙을 기반으둜 μ»΄ν¬λ„ŒνŠΈλ₯Ό μ„€κ³„ν•˜μ—¬, λΉ λ₯Έ μŠ€ν”„λ¦°νŠΈ μ£ΌκΈ° μ†μ—μ„œλ„ μ½”λ“œμ˜ μœ μ§€λ³΄μˆ˜μ„±κ³Ό ν™•μž₯성을 μœ μ§€ν•œλ‹€. ## βš–οΈ Trade-offs & Caveats - **기술 λΆ€μ±„μ˜ μœ„ν—˜**: YAGNIλ₯Ό μ§€λ‚˜μΉ˜κ²Œ μ—„κ²©ν•˜κ²Œ μ μš©ν•  경우, 미래의 ν™•μž₯성을 κ³ λ €ν•˜μ§€ μ•Šμ€ μ„€κ³„λ‘œ 인해 μΆ”ν›„ λŒ€κ·œλͺ¨ λ¦¬νŒ©ν† λ§ λΉ„μš©μ΄ λ°œμƒν•  수 μžˆλŠ” νŠΈλ ˆμ΄λ“œμ˜€ν”„κ°€ μ‘΄μž¬ν•œλ‹€. - **초기 섀계 μ˜€λ²„ν—€λ“œ**: μ†Œκ·œλͺ¨ ν”„λ‘œμ νŠΈμ—μ„œ κΈ°λŠ₯ 기반 ꡬ쑰λ₯Ό 채택할 경우, λ‹¨μˆœν•œ 파일 μœ ν˜• 기반 ꡬ쑰보닀 폴더 κΉŠμ΄κ°€ κΉŠμ–΄μ§€κ³  초기 ꡬ성 λΉ„μš©μ΄ 증가할 수 μžˆλ‹€. ## πŸ”— Knowledge Connections ### Related Concepts (Auto-Linked) * [[Principles]] * [[Research]] * [[SOLID_Principles]] ### Related Concepts - **YAGNI**: μ• μžμΌ 개발의 핡심적인 νš¨μœ¨μ„± 좔ꡬ 원칙 (관계: ν•˜μœ„ μ‹€μ²œ μ§€μΉ¨) - **Feature-Based Structure**: μ• μžμΌ νŒ€μ˜ 독립적 ν˜‘μ—…μ„ λ•λŠ” μ•„ν‚€ν…μ²˜ (관계: ꡬ쑰적 κ΅¬ν˜„μ²΄) - **KISS Principle**: λ³΅μž‘μ„±μ„ μ΅œμ†Œν™”ν•˜μ—¬ 변경에 μ‹ μ†νžˆ λŒ€μ‘ν•˜λŠ” μ² ν•™ (관계: κ°€μΉ˜ 곡유) ### Deeper Research Questions 1. κΈ°λŠ₯ 기반 폴더 ꡬ쑰가 마이크둜 ν”„λ‘ νŠΈμ—”λ“œ μ•„ν‚€ν…μ²˜λ‘œμ˜ μ „ν™˜ μ‹œ μ–΄λ–€ 이점을 μ œκ³΅ν•˜λŠ”κ°€? 2. YAGNI 원칙과 μž₯기적인 μ½”λ“œ ν’ˆμ§ˆ(Clean Code) μ‚¬μ΄μ˜ κ· ν˜•μ„ λ§žμΆ”λŠ” ꡬ체적인 κ²°μ • ν”„λ ˆμž„μ›Œν¬λŠ” 무엇인가? 3. μ• μžμΌ 반볡 μ£ΌκΈ° λ‚΄μ—μ„œ λ‹¨μœ„ ν…ŒμŠ€νŠΈμ™€ 톡합 ν…ŒμŠ€νŠΈμ˜ 비쀑을 μ–΄λ–»κ²Œ μ‘°μ ˆν•΄μ•Ό ν•˜λŠ”κ°€? 4. μŠ€ν”„λ¦°νŠΈ 쀑 λ°œμƒν•˜λŠ” 기술 뢀채λ₯Ό λ°±λ‘œκ·Έμ— 효과적으둜 λ°˜μ˜ν•˜κ³  ν•΄μ†Œν•˜λŠ” ν”„λ‘œμ„ΈμŠ€λŠ”? 5. κΈ°λŠ₯ 독립성이 κ°•ν™”λœ κ΅¬μ‘°μ—μ„œ 곡톡 λͺ¨λ“ˆ(Shared)의 λΉ„λŒ€ν™”λ₯Ό 막기 μœ„ν•œ μ „λž΅μ€ 무엇인가? ### Practical Application Contexts - **μŠ€ν”„λ¦°νŠΈ 섀계**: μƒˆλ‘œμš΄ κΈ°λŠ₯을 μΆ”κ°€ν•  λ•Œ 미래의 ν™•μž₯μ„±λ³΄λ‹€λŠ” ν˜„μž¬ μŠ€ν”„λ¦°νŠΈ λͺ©ν‘œ 달성에 μ§‘μ€‘ν•˜μ—¬ μ½”λ“œλ₯Ό λ‹¨μˆœν•˜κ²Œ μœ μ§€. - **νŒ€ ν˜‘μ—… ꡬ쑰**: κΈ°λŠ₯λ³„λ‘œ 폴더λ₯Ό λ‚˜λˆ„μ–΄ 개발자 κ°„μ˜ μ½”λ“œ μΆ©λŒμ„ μ΅œμ†Œν™”ν•˜κ³  독립적인 κΈ°λŠ₯ 배포 ν™˜κ²½ ꡬ좕. ### Adjacent Topics - **SOLID Principles** - **Lean Software Development** - **Extreme Programming (XP)**