--- id: wiki-2026-0508-yagni-you-aren-t-gonna-need-it title: "YAGNI (You Aren't Gonna Need It)" category: 10_Wiki/Topics status: needs_review canonical_id: self aliases: [] duplicate_of: none source_trust_level: A confidence_score: 0.92 tags: [uncategorized] raw_sources: [] last_reinforced: 2026-05-08 github_commit: pending inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08) tech_stack: language: unspecified framework: unspecified --- # [[YAGNI (You Aren't Gonna Need It)]] ## πŸ“Œ ν•œ 쀄 톡찰 (The Karpathy Summary) YAGNI(You Aren't Gonna Need It)λŠ” μ†Œν”„νŠΈμ›¨μ–΄ 개발 μ‹œ μ˜€λ²„μ—”μ§€λ‹ˆμ–΄λ§(Overengineering)을 ν”Όν•˜κ³  ν˜„μž¬ ν•„μš”ν•œ κΈ°λŠ₯만 λ‹¨μˆœν•˜κ²Œ κ΅¬ν˜„ν•˜λ„λ‘ ꢌμž₯ν•˜λŠ” 원칙이닀 [1, 2]. λ―Έλž˜μ— ν•„μš”ν•  것이라고 μΆ”μΈ‘ν•˜μ—¬ λΆˆν•„μš”ν•œ μœ μ—°μ„±μ΄λ‚˜ 특수 상황 처리λ₯Ό μœ„ν•œ μ½”λ“œλ₯Ό 미리 μΆ”κ°€ν•˜λŠ” 것을 μ—„κ²©νžˆ μ§€μ–‘ν•œλ‹€ [3, 4]. λŒ€λΆ€λΆ„μ˜ 경우 미리 μ˜ˆμΈ‘ν•˜μ—¬ μž‘μ„±ν•œ λ³΅μž‘ν•œ μ„€κ³„λŠ” κ²°κ΅­ μ‚¬μš©λ˜μ§€ μ•Šκ³  μœ μ§€λ³΄μˆ˜μ— λ°©ν•΄λ§Œ λ˜λ―€λ‘œ, κ°€μž₯ λ‹¨μˆœν•˜κ²Œ λ™μž‘ν•  수 μžˆλŠ” 것을 ꡬ좕해야 ν•œλ‹€ [3, 5]. ## πŸ“– κ΅¬μ‘°ν™”λœ 지식 (Synthesized Content) * **μ˜€λ²„μ—”μ§€λ‹ˆμ–΄λ§ λ°©μ§€ 및 λ‹¨μˆœμ„± 좔ꡬ**: YAGNI μ›μΉ™μ˜ 핡심은 λΆˆν•„μš”ν•œ 금칠(gold-plating)을 ν”Όν•˜κ³  μ‹œμŠ€ν…œμ„ λ‹¨μˆœν•˜κ²Œ μœ μ§€ν•˜λŠ” 것이닀 [2, 5]. κ°œλ°œμžλŠ” λ‹Ήμž₯ ν•„μš”ν•˜μ§€ μ•Šμ€ λ³΅μž‘μ„±μ„ μ–΅μ œν•˜κ³  μ½”λ“œλ₯Ό 보닀 λ‹¨μˆœν•˜κ³  μœ μ§€λ³΄μˆ˜ν•˜κΈ° μ‰½κ²Œ λ§Œλ“€μ–΄μ•Ό ν•œλ‹€ [1]. * **μΆ”μΈ‘μ„± μΌλ°˜ν™”(Speculative Generality)의 경계**: κ°œλ°œμžκ°€ "μ–Έμ  κ°€λŠ” 이런 κΈ°λŠ₯이 ν•„μš”ν•  것"이라고 μΆ”μΈ‘ν•˜μ—¬ 각쒅 ν›…(hooks)κ³Ό 특수 μΌ€μ΄μŠ€λ₯Ό μ²˜λ¦¬ν•˜λŠ” λ‘œμ§μ„ 미리 λ§Œλ“€μ–΄ 두면, 결과적으둜 μ½”λ“œλ₯Ό μ΄ν•΄ν•˜κ³  μœ μ§€λ³΄μˆ˜ν•˜κΈ° 더 μ–΄λ €μ›Œμ§„λ‹€ [4]. μ‹€μ œλ‘œ μ‚¬μš©λ˜μ§€ μ•ŠλŠ” κΈ°λŠ₯듀은 단지 λ°©ν•΄λ§Œ 될 λΏμ΄λ―€λ‘œ λ¦¬νŒ©ν† λ§μ„ 톡해 μ œκ±°ν•΄μ•Ό ν•œλ‹€ [4]. * **μœ μ—°μ„±κ³Ό λ³΅μž‘λ„μ˜ 관계**: μ½”λ“œμ— μœ μ—°μ„±μ„ λΆ€μ—¬ν•˜κΈ° μœ„ν•œ μ†”λ£¨μ…˜μ€ ν•„μ—°μ μœΌλ‘œ λ‹¨μˆœν•œ μ†”λ£¨μ…˜λ³΄λ‹€ λ³΅μž‘ν•˜λ‹€ [6]. 미래의 λͺ¨λ“  변경을 μ˜ˆμƒν•˜μ—¬ μ‹œμŠ€ν…œμ„ μ„€κ³„ν•˜λ €κ³  ν•˜λ©΄, μ‹€μ œ μš”κ΅¬λ˜λŠ” 것보닀 훨씬 κ³Όλ„ν•œ μœ μ—°μ„±μ„ μ½”λ“œμ— μ–΅μ§€λ‘œ λ„£κ²Œ λœλ‹€ [6]. λ”°λΌμ„œ λ³΅μž‘ν•˜κ³  μœ μ—°ν•œ 섀계λ₯Ό μ²˜μŒλΆ€ν„° κ³ λ―Όν•˜κΈ°λ³΄λ‹€λŠ”, λ‹Ήμž₯ μž‘λ™ν•  수 μžˆλŠ” κ°€μž₯ λ‹¨μˆœν•œ ν˜•νƒœλ₯Ό λ§Œλ“€μ–΄μ•Ό ν•œλ‹€ [3]. ## ⚠️ λͺ¨μˆœ 및 μ—…λ°μ΄νŠΈ (Contradictions & Updates) * **지속적 λ¦¬νŒ©ν† λ§μ— λŒ€ν•œ μš”κ΅¬**: 미래λ₯Ό λŒ€λΉ„ν•œ λ³΅μž‘ν•œ 섀계λ₯Ό 미리 μΆ”κ°€ν•˜μ§€ μ•Šκ³ (YAGNI 원칙을 κ³ μˆ˜ν•˜λ©°) κ°€μž₯ λ‹¨μˆœν•œ μ½”λ“œλ₯Ό μž‘μ„±ν•˜λŠ” 접근법은, ν–₯ν›„ μ‹€μ œλ‘œ μš”κ΅¬μ‚¬ν•­ 변경이 ν•„μš”ν•΄μ§„ μ‹œμ μ— μ½”λ“œλ₯Ό μ¦‰κ°μ μœΌλ‘œ λ³€κ²½ν•  수 μžˆλ‹€λŠ” **λ¦¬νŒ©ν† λ§μ— λŒ€ν•œ μžμ‹ κ°**κ³Ό μ—­λŸ‰μ„ μ „μ œλ‘œ ν•œλ‹€ [3]. * **μ˜€λ²„μ—”μ§€λ‹ˆμ–΄λ§μ˜ λΆ€μž‘μš©**: λ‹Ήμž₯ ν•„μš”ν•˜μ§€ μ•Šμ€ 미래의 상황을 μœ„ν•΄ λΆˆν•„μš”ν•œ μ•„ν‚€ν…μ²˜λ₯Ό 사전에 ꡬ좕할 경우, μ–΄λ–€ κΈ°λŠ₯μ—μ„œλ„ μš”κ΅¬ν•˜μ§€ μ•ŠλŠ” ν•΄λ‹Ή μ•„ν‚€ν…μ²˜μ— λͺ¨λ“  μ½”λ“œ 덩어리듀이 μ–΅μ§€λ‘œ 맞좰 적응해야 ν•˜λŠ” λΆ€μž‘μš©μ΄ λ°œμƒν•  수 μžˆλ‹€ [7]. 즉, μ„£λΆ€λ₯Έ μœ μ—°μ„± λ„μž…μ€ λΉ„μš©μ΄ 많이 λ“€κ³  μ‹œμŠ€ν…œ μ „μ²΄μ˜ λ³΅μž‘λ„λ§Œ λΆˆν•„μš”ν•˜κ²Œ μƒμŠΉμ‹œν‚€λŠ” μ œμ•½ 사항을 λ‚³λŠ”λ‹€ [4, 6]. --- *Last updated: 2026-05-03* ## πŸ€– LLM ν™œμš© 힌트 (How to Use This Knowledge) **μ–Έμ œ 이 지식을 μ“°λŠ”κ°€:** - *(TODO)* **μ–Έμ œ μ“°λ©΄ μ•ˆ λ˜λŠ”κ°€:** - *(TODO)* ## πŸ§ͺ 검증 μƒνƒœ (Validation) - **정보 μƒνƒœ:** needs_review - **좜처 신뒰도:** A - **κ²€ν†  이유:** *(P-Reinforce Phase 1 μžλ™ μ •κ·œν™”. λ³Έλ¬Έ 검증 ν•„μš”.)* ## 🧬 쀑볡 검사 (Duplicate Check) - **κΈ°μ‘΄ μœ μ‚¬ λ¬Έμ„œ:** *(TODO: μΈλ±μ„œ ν΄λŸ¬μŠ€ν„° 리포트 μ°Έμ‘°)* - **처리 방식:** UPDATE (μžλ™ μ •κ·œν™”) - **처리 이유:** Phase 1 μ •κ·œν™” β€” μ˜› ν…œν”Œλ¦Ώ/λˆ„λ½ ν•„λ“œ 보강. ## πŸ”— 지식 μ—°κ²° (Graph) - **Parent:** [[10_Wiki/Topics]] - **Related:** *(TODO: μ΅œμ†Œ 2개)* - **Opposite / Trade-off:** *(TODO)* - **Raw Source:** 직접 μž…λ ₯ ## πŸ•“ λ³€κ²½ 이λ ₯ (Changelog) | λ‚ μ§œ | λ³€κ²½ λ‚΄μš© | 처리 방식 | 신뒰도 | |------|-----------|-----------|--------| | 2026-05-08 | P-Reinforce Phase 1 μ •κ·œν™” (frontmatter + 헀더 ν‘œμ€€ν™”) | UPDATE | A | ## πŸ’» μ½”λ“œ νŒ¨ν„΄ (Code Patterns) **νŒ¨ν„΄ 1:** *(TODO: 이 ν”„λ‘œμ νŠΈ μ»¨λ²€μ…˜ λ°˜μ˜ν•œ ꡬ쑰 μŠ€μΌˆλ ˆν†€)* ```text # TODO ``` ## πŸ€” μ˜μ‚¬κ²°μ • κΈ°μ€€ (Decision Criteria) **선택 Aλ₯Ό 써야 ν•  λ•Œ:** - *(TODO)* **선택 Bλ₯Ό 써야 ν•  λ•Œ:** - *(TODO)* **κΈ°λ³Έκ°’:** > *(TODO)* ## ❌ μ•ˆν‹°νŒ¨ν„΄ (Anti-Patterns) - **[μ•ˆν‹°νŒ¨ν„΄]:** *(TODO: 무엇을 ν•˜λ©΄ μ•ˆ λ˜λŠ”κ°€ + 이유 + λŒ€μ‹  무엇을)*