|
Size: 11331
Comment:
|
Size: 4287
Comment:
|
| Deletions are marked like this. | Additions are marked like this. |
| Line 5: | Line 5: |
| 주니어 개발자들을 위한 프로그래밍 피드백을 Christopher Alexander의 패턴 언어로 변환하는 프로젝트. | ''주니어 개발자들을 위한 패턴 언어 - 35개의 살아있는 중심들의 연결망'' 이 패턴 언어는 단순한 규칙의 모음이 아닙니다. 각 패턴은 다른 패턴을 지지하며, 전체가 부분의 합보다 커지는 '''살아있는 구조(Living Structure)'''를 지향합니다. |
| Line 9: | Line 11: |
| == Project Vision == | == Structure of the Language (연결망의 구조) == |
| Line 11: | Line 13: |
| [[기술문서모음/ToJuniors]] 문서의 패턴들을 Alexander의 패턴 언어 형식으로 변환하여 구조적이고 교육적인 자료로 발전시키는 것이 목표입니다. | 이 언어는 다섯 개의 주요 '''중심 커뮤니티(Communities of Centers)'''로 구성됩니다. 각 커뮤니티는 개발자의 마음, 코드의 구조, 그리고 팀의 협력을 하나의 전체성으로 묶어줍니다. |
| Line 13: | Line 15: |
| === Core Principles === * '''Structure-Preserving Baby Steps''' - 기존 구조를 보존하며 점진적 발전 * '''Story-First Approach''' - 스토리로 시작해서 패턴으로 추상화 * '''Educational Focus''' - 학습자 중심의 명확한 설명 * '''Pattern Language Structure''' - Alexander 방식의 체계적 연결 |
=== 1. The Mind (인지적 중심) === 개발자의 내면을 관찰하고 명료한 인식을 유지하게 돕는 패턴들입니다. * [[PresentMoment]] → [[SingleFocus]] → [[ActiveReflection]] → [[ThinkingMirror]] → [[CognitiveMicroscope]] * ''핵심 역동: '''명료함(Clarity)'''. 현실을 직시하고 집중할 때, 실시간 성찰이 가능해지며 이는 메타인지의 성장으로 이어집니다.'' |
| Line 19: | Line 20: |
| == Pattern Inventory == | === 2. The Theory (구조적 중심) === 문제를 이해하고 이를 표현하는 언어를 구축하는 패턴들입니다. * [[TwoWorlds]] → [[DataAsFoundation]] → [[LanguageBuilding]] → [[NamesAsDesign]] → [[MetaphorThinking]] → [[LivingVocabulary]] → [[ComplexityTaming]] * ''핵심 역동: '''의미(Meaning)'''. 문제와 해결 공간을 분리하고 데이터와 언어를 통해 이론을 구축할 때 복잡성이 길들여집니다.'' |
| Line 21: | Line 25: |
| === Foundation Patterns === '''Core Programming Principles''' * '''DataAsFoundation''' - Separate data construction from business logic to achieve simplicity; create domain-specific languages when data structures become complex. The foundation of all clean code starts with well-organized data. ''Related: LanguageBuilding, ComplexityTaming'' |
=== 3. The Rhythm (실행적 중심) === 안전하고 리드미컬하게 전진하게 돕는 실천적 패턴들입니다. * [[TightLoop]] → [[TinyExperiment]] → [[ShortLeash]] → [[BabySteps]] → [[AtomicCommit]] → [[WorkingFirst]] → [[The95PercentRule]] * ''핵심 역동: '''흐름(Flow)'''. 빠른 피드백과 작은 실험이 반복될 때, 시스템은 멈추지 않고 전진합니다.'' |
| Line 25: | Line 30: |
| * '''TwoWorlds''' - Distinguish clearly between the problem space (what needs to be solved) and solution space (how to implement it). Many programming errors stem from mixing these concerns too early in the thinking process. ''Related: StrongCenter, PatternHunting'' | === 4. The Growth (진화적 중심) === 시스템이 생명력을 잃지 않고 거대하게 자라나게 돕는 패턴들입니다. * [[StrongCenter]] → [[OrganicGrowth]] → [[DirectPath]] → [[SafetyNet]] → [[GreenRefuge]] → [[ArtisanMind]] * ''핵심 역동: '''전체성(Wholeness)'''. 강한 중심에서 시작해 유기적으로 성장하며, 안전망을 통해 구조를 보존합니다.'' |
| Line 27: | Line 35: |
| * '''WorkingFirst''' - Get something working before making it elegant or efficient. A working solution reveals the true nature of the problem and guides better design decisions. ''Related: BabySteps, OrganicGrowth'' | === 5. The Soul (사회적 중심) === 개인을 넘어 공동체의 지혜로 확장되는 패턴들입니다. * [[TechnicalCommunity]] → [[SharedMind]] → [[BuildingBridge]] → [[FlowingFeedback]] → [[MasterApprentice]] → [[CraftPath]] → [[InstinctiveChoice]] → [[TinyResearch]] → [[PatternHunting]] → [[DetectiveWork]] → [[RootHunting]] * ''핵심 역동: '''공명(Resonance)'''. 함께 배우고 협력할 때 개인의 한계를 넘어 거장의 직관과 수사 기법을 습득합니다.'' |
| Line 29: | Line 40: |
| * '''ArtisanMind''' - Approach programming as a craft requiring intuition, experience, and feel rather than pure systematic methodology. The best programmers combine technical knowledge with artistic sensibility. ''Related: MasterApprentice, NamesAsDesign'' | == Core Dynamics (주요 역동) == |
| Line 31: | Line 42: |
| * '''The95PercentRule''' - Resist the temptation to automate the final 5% of any process. That remaining complexity often costs more than the manual effort it would save. ''Related: WorkingFirst, ShortLeash'' | 이 언어 안에는 여러 패턴들이 결합하여 만드는 강력한 '''고차원 패턴'''들이 숨어 있습니다: |
| Line 33: | Line 44: |
| === TDD & Evolutionary Design Patterns === * '''[[TinyExperiment]]''' ✓ - Start with the smallest possible experiment that can teach you something meaningful about the problem. Each experiment should be so small that failure costs almost nothing. ''Related: BabySteps, GreenRefuge'' * '''BabySteps''' - Take the smallest possible step that moves toward your goal while maintaining system integrity. Large steps hide complexity and make debugging exponentially harder. ''Related: TinyExperiment, AtomicCommit'' * '''GreenRefuge''' - When tests fail, immediately return to the last known working state rather than trying to fix forward. Your green bar is a safe harbor in the storm of complexity. ''Related: SafetyNet, PresentMoment'' * '''DesignThroughTest''' - Use test-driven development as a design activity, not just a verification tool. The act of writing tests first reveals better API designs and cleaner interfaces. ''Related: CleanIsolation, TightLoop'' * '''TightLoop''' - Minimize the time between making a change and seeing its effect. Long feedback cycles allow errors to compound and make root causes harder to identify. ''Related: AtomicCommit, PresentMoment'' * '''AtomicCommit''' - Make each commit represent one complete, coherent change that can stand alone. Atomic commits make it easier to understand, review, and revert changes. ''Related: BabySteps, TightLoop'' * '''CleanIsolation''' - Design tests and modules so they can run independently without hidden dependencies. Isolation makes systems easier to understand, test, and modify. ''Related: DesignThroughTest, DirectPath'' * '''DetectiveWork''' - Use abductive reasoning to form hypotheses about what might be causing observed behavior. Good programmers are detectives who gather evidence before drawing conclusions. ''Related: RootHunting, PresentMoment'' * '''OrganicGrowth''' - Grow your system incrementally from a working core rather than building all parts simultaneously. Like biological growth, software grows healthiest when it maintains wholeness at each stage. ''Related: StrongCenter, WorkingFirst'' * '''StrongCenter''' - Start building from the most essential core functionality and grow outward. A strong center provides stability and coherence as the system expands. ''Related: OrganicGrowth, TwoWorlds'' === Testing & Debugging Patterns === * '''DirectPath''' - Eliminate unnecessary layers and indirection that obscure the flow from input to output. The shortest path between problem and solution is usually the clearest. ''Related: CleanIsolation, SingleFocus'' * '''SingleFocus''' - Work on exactly one thing at a time, completing it fully before moving to the next. Multitasking in debugging leads to confusion and missed connections. ''Related: AtomicCommit, PresentMoment'' * '''ShortLeash''' - When forming hypotheses about bugs or behavior, test them quickly rather than reasoning too far ahead. Long chains of reasoning multiply uncertainty and waste time. ''Related: DetectiveWork, TinyExperiment'' * '''SafetyNet''' - Build regression tests that catch previously fixed bugs if they reoccur. A good safety net lets you refactor and improve with confidence. ''Related: GreenRefuge, CleanIsolation'' * '''PresentMoment''' - Focus on understanding what is actually happening right now rather than what you think should be happening. The present moment contains all the information needed to solve most problems. ''Related: DetectiveWork, RootHunting'' * '''RootHunting''' - Dig systematically to find the actual cause rather than applying surface fixes or searching randomly. True root causes, once found, often reveal simple solutions. ''Related: PresentMoment, DetectiveWork'' === Programming Fundamentals === * '''PatternHunting''' - Actively look for recurring structures and solutions in your code and others'. Recognizing patterns is the foundation of all programming expertise. ''Related: LanguageBuilding, MasterApprentice'' * '''ComplexityTaming''' - Develop a toolkit of techniques for managing complexity: abstraction, decomposition, naming, and separation of concerns. Complexity is the enemy of maintainability. ''Related: DataAsFoundation, DirectPath'' * '''NamesAsDesign''' - Treat naming as a design activity that clarifies thinking and reveals abstractions. Good names make code self-documenting and express intent clearly. ''Related: LanguageBuilding, ArtisanMind'' * '''LanguageBuilding''' - Approach programming as building a domain-specific language that perfectly expresses your problem space. The best programs read like well-written prose in a specialized vocabulary. ''Related: DataAsFoundation, LivingVocabulary'' * '''LivingVocabulary''' - Continuously evolve and refine the vocabulary used in your codebase as understanding deepens. Good vocabulary grows organically and adapts to new insights. ''Related: NamesAsDesign, OrganicGrowth'' === Collaboration Patterns === * '''TechnicalCommunity''' - Choose development practices that emphasize technical excellence and continuous learning over process compliance. Strong technical practices create better collaboration than rigid processes. ''Related: SharedMind, MasterApprentice'' * '''SharedMind''' - Work closely with other developers to combine knowledge and catch each other's blind spots. Two minds working together often produce insights neither could reach alone. ''Related: TechnicalCommunity, BuildingBridge'' * '''FlowingFeedback''' - Structure code reviews and feedback to maintain development flow rather than creating bottlenecks. Feedback should accelerate learning, not slow down progress. ''Related: BuildingBridge, TightLoop'' * '''BuildingBridge''' - Respond to ideas with "Yes, and..." rather than "Yes, but..." to build on others' contributions. Constructive dialogue creates better solutions than defensive reactions. ''Related: SharedMind, FlowingFeedback'' === Learning & Expertise Patterns === * '''MasterApprentice''' - Learn directly from experts through observation, imitation, and guided practice. The master-apprentice relationship transfers tacit knowledge that books cannot convey. ''Related: CraftPath, ArtisanMind'' * '''CraftPath''' - Follow a deliberate progression from novice to expert, focusing on fundamentals before advanced techniques. Mastery requires patient development of core skills. ''Related: MasterApprentice, ThinkingMirror'' * '''ThinkingMirror''' - Regularly reflect on your thinking processes and decision-making patterns. Self-awareness about how you think improves both learning and problem-solving. ''Related: ActiveReflection, InstinctiveChoice'' * '''ActiveReflection''' - Think consciously about your actions and decisions while performing them, not just afterward. Real-time reflection improves performance and builds expertise faster. ''Related: ThinkingMirror, PresentMoment'' * '''InstinctiveChoice''' - Develop pattern recognition that allows rapid decision-making based on experienced intuition. Expert programmers often know the right answer before they can explain why. ''Related: PatternHunting, ArtisanMind'' |
* '''The Safety Net (안전의 그물):''' [[BabySteps]] + [[GreenRefuge]] + [[SafetyNet]] + [[AtomicCommit]] * 시스템을 결코 죽이지 않고 영원히 살려두는 기술적 장치입니다. * '''The Learning Loop (학습의 고리):''' [[TinyResearch]] + [[CognitiveMicroscope]] + [[ActiveReflection]] + [[ThinkingMirror]] * 매일의 작업에서 암묵지를 추출하여 전문성으로 변환하는 엔진입니다. * '''The Domain language (도메인의 목소리):''' [[LanguageBuilding]] + [[LivingVocabulary]] + [[NamesAsDesign]] * 코드가 비즈니스의 진실을 말하게 하여 의사소통의 장벽을 허무는 힘입니다. |
| Line 100: | Line 53: |
| === Phase 1: Foundation Patterns (In Progress) === '''Completed:''' * [[TinyExperiment]] ✓ - 패턴 언어 형식으로 완성, 검증됨 |
* '''Phase 1 (Foundation):''' 완료 (11개) * '''Phase 2 (TDD & Design):''' 완료 (14개) * '''Phase 3 (Collaboration):''' 완료 (10개) * '''Total:''' 35개 패턴 완성. |
| Line 104: | Line 58: |
| '''Next Priority:''' * DataAsFoundation - 로직 단순화의 핵심 * TwoWorlds - 사고 체계의 기본 |
== Future Work == |
| Line 108: | Line 60: |
| '''Remaining Foundation:''' * WorkingFirst, ArtisanMind, The95PercentRule === Validation Results === 첫 번째 패턴 [[TinyExperiment]]의 스토리 구조가 검증되어 패턴 언어로서의 가능성을 확인했습니다. == Implementation Strategy == === Phase 1: Core Foundation (Current) === 가장 기본이 되는 5-6개 패턴을 완성하여 전체 구조의 기반을 마련 === Phase 2: TDD & Design Patterns === TDD와 설계 관련 패턴들을 체계화 (10-12개 패턴) === Phase 3: Collaboration & Learning === 협업과 학습 관련 패턴들을 완성 (8-10개 패턴) == Next Actions == === Immediate (This Week) === * DataAsFoundation 패턴 작성 시작 * TwoWorlds 구조 설계 * Foundation 패턴들 간의 연결 관계 정의 === Short Term (This Month) === * Foundation 레벨 5-6개 패턴 완성 * 패턴 언어로서의 일관성 검증 * Phase 2 패턴 우선순위 확정 == Pattern Structure Template == 각 패턴은 Alexander 방식을 따릅니다: * '''Context''' - 상황과 배경 * '''Problem''' - 구체적인 문제와 갈등 * '''Solution''' - 해결 방법과 원리 * '''Examples''' - 실제 적용 사례 * '''Related Patterns''' - 연결된 다른 패턴들 == Progress Log == === Recent Achievements === * 원본 문서에서 27+개 패턴 목록 정리 완료 * TinyExperiment 패턴 완성 및 검증 * 3단계 구현 전략 수립 * Foundation 레벨 우선순위 확정 === Lessons Learned === * 전체 패턴 목록을 먼저 정리하는 것이 중요 * 스토리 우선 접근법의 효과 확인 * 패턴 간 연결 관계의 복잡성 인식 |
* 각 패턴 상세 페이지의 '''Related Patterns''' 섹션을 보강하여 연결망을 더욱 촘촘하게 만듭니다. * 실제 사례(Case Study)를 각 패턴 커뮤니티별로 추가합니다. |
AiGarden/ToJuniorsPatternLanguage
주니어 개발자들을 위한 패턴 언어 - 35개의 살아있는 중심들의 연결망
이 패턴 언어는 단순한 규칙의 모음이 아닙니다. 각 패턴은 다른 패턴을 지지하며, 전체가 부분의 합보다 커지는 살아있는 구조(Living Structure)를 지향합니다.
Contents
Structure of the Language (연결망의 구조)
이 언어는 다섯 개의 주요 중심 커뮤니티(Communities of Centers)로 구성됩니다. 각 커뮤니티는 개발자의 마음, 코드의 구조, 그리고 팀의 협력을 하나의 전체성으로 묶어줍니다.
1. The Mind (인지적 중심)
개발자의 내면을 관찰하고 명료한 인식을 유지하게 돕는 패턴들입니다.
PresentMoment → SingleFocus → ActiveReflection → ThinkingMirror → CognitiveMicroscope
핵심 역동: 명료함(Clarity). 현실을 직시하고 집중할 때, 실시간 성찰이 가능해지며 이는 메타인지의 성장으로 이어집니다.
2. The Theory (구조적 중심)
문제를 이해하고 이를 표현하는 언어를 구축하는 패턴들입니다.
TwoWorlds → DataAsFoundation → LanguageBuilding → NamesAsDesign → MetaphorThinking → LivingVocabulary → ComplexityTaming
핵심 역동: 의미(Meaning). 문제와 해결 공간을 분리하고 데이터와 언어를 통해 이론을 구축할 때 복잡성이 길들여집니다.
3. The Rhythm (실행적 중심)
안전하고 리드미컬하게 전진하게 돕는 실천적 패턴들입니다.
TightLoop → TinyExperiment → ShortLeash → BabySteps → AtomicCommit → WorkingFirst → The95PercentRule
핵심 역동: 흐름(Flow). 빠른 피드백과 작은 실험이 반복될 때, 시스템은 멈추지 않고 전진합니다.
4. The Growth (진화적 중심)
시스템이 생명력을 잃지 않고 거대하게 자라나게 돕는 패턴들입니다.
StrongCenter → OrganicGrowth → DirectPath → SafetyNet → GreenRefuge → ArtisanMind
핵심 역동: 전체성(Wholeness). 강한 중심에서 시작해 유기적으로 성장하며, 안전망을 통해 구조를 보존합니다.
5. The Soul (사회적 중심)
개인을 넘어 공동체의 지혜로 확장되는 패턴들입니다.
TechnicalCommunity → SharedMind → BuildingBridge → FlowingFeedback → MasterApprentice → CraftPath → InstinctiveChoice → TinyResearch → PatternHunting → DetectiveWork → RootHunting
핵심 역동: 공명(Resonance). 함께 배우고 협력할 때 개인의 한계를 넘어 거장의 직관과 수사 기법을 습득합니다.
Core Dynamics (주요 역동)
이 언어 안에는 여러 패턴들이 결합하여 만드는 강력한 고차원 패턴들이 숨어 있습니다:
The Safety Net (안전의 그물): BabySteps + GreenRefuge + SafetyNet + AtomicCommit
- 시스템을 결코 죽이지 않고 영원히 살려두는 기술적 장치입니다.
The Learning Loop (학습의 고리): TinyResearch + CognitiveMicroscope + ActiveReflection + ThinkingMirror
- 매일의 작업에서 암묵지를 추출하여 전문성으로 변환하는 엔진입니다.
The Domain language (도메인의 목소리): LanguageBuilding + LivingVocabulary + NamesAsDesign
- 코드가 비즈니스의 진실을 말하게 하여 의사소통의 장벽을 허무는 힘입니다.
Current Status
Phase 1 (Foundation): 완료 (11개)
Phase 2 (TDD & Design): 완료 (14개)
Phase 3 (Collaboration): 완료 (10개)
Total: 35개 패턴 완성.
Future Work
각 패턴 상세 페이지의 Related Patterns 섹션을 보강하여 연결망을 더욱 촘촘하게 만듭니다.
- 실제 사례(Case Study)를 각 패턴 커뮤니티별로 추가합니다.
