Differences between revisions 4 and 9 (spanning 5 versions)
Revision 4 as of 2025-07-24 13:49:28
Size: 6327
Editor: 정수
Comment:
Revision 9 as of 2025-07-24 16:15:03
Size: 12345
Editor: 정수
Comment:
Deletions are marked like this. Additions are marked like this.
Line 5: Line 5:
주니어 개발자들을 위한 프로그래밍 지혜를 Christopher Alexander의 패턴 언어로 변환하는 프로젝트. 주니어 개발자들을 위한 프로그래밍 피드백을 Christopher Alexander의 패턴 언어로 변환하는 프로젝트.
Line 11: Line 11:
[[기술문서모음/ToJuniors]] 페이지의 27개 핵심 격언들을 개별 패턴으로 확장하여, 반격자(semi-lattice) 구조의 상호 연결된 지식 네트워크를 구축한다. 각 패턴은 이솝우화 스타일의 스토리텔링으로 작성되어 초보자들이 쉽게 이해하고 기억할 수 있도록 한다. [[기술문서모음/ToJuniors]] 문서의 패턴들을 Alexander의 패턴 언어 형식으로 변환하여 구조적이고 교육적인 자료로 발전시키는 것이 목표입니다.
Line 13: Line 13:
== Pattern Language Structure == === Core Principles ===
 * '''Structure-Preserving Baby Steps''' - 기존 구조를 보존하며 점진적 발전
 * '''Story-First Approach''' - 스토리로 시작해서 패턴으로 추상화
 * '''Educational Focus''' - 학습자 중심의 명확한 설명
 * '''Pattern Language Structure''' - Alexander 방식의 체계적 연결
Line 15: Line 19:
=== Foundation Patterns (가장 기본적) ===
'''[[TinyExperiment]]''' (완성) - 작은 실험 환경을 통한 점진적 학습과 개발
↳ enables → BabyStep, UseAbduction, HereAndNowDebugging
↳ used by → TddIsDesignActivity, PiecemealGrowthCenterFirst
== Pattern Inventory ==
Line 20: Line 21:
'''UseDataToMakeLogicSimple''' - 관심사 분리의 기본 원칙
↳ supports → MakeDSL, DoNotMixLogicAndDataConstruction
↳ enables → FindCommonalityAndVariability
=== Foundation Patterns ===
'''Core Programming Principles'''
 * '''DataAsFoundation''' - 비즈니스 로직에서 데이터 구성을 분리하여 단순함을 달성하고, 데이터 구조가 복잡해지면 도메인 특화 언어를 만들어라. 모든 깨끗한 코드의 기반은 잘 정리된 데이터에서 시작된다. ''연관: LanguageBuilding, ComplexityTaming''
Line 24: Line 25:
'''ProblemSpaceSolutionSpace''' - 근본적 사고 체계
↳ guides → NamingIsDesignPractice, MakeItWorkThenMakeBetter
↳ supports → TddIsDesignActivity
 * '''TwoWorlds''' - 문제 공간(무엇을 해결할 것인가)과 해결 공간(어떻게 구현할 것인가)을 명확히 구분하라. 많은 프로그래밍 오류는 사고 과정에서 이 두 관심사를 너무 일찍 섞는 데서 비롯된다. ''연관: StrongCenter, PatternHunting''
Line 28: Line 27:
=== Intermediate Patterns (기초 위에 구축) ===
'''BabyStep''' - 핵심적 진화적 접근법
↳ connected to → MicroCommit, ShortFeedbackCycle
↳ enables → PiecemealGrowthCenterFirst
↳ requires → DoNotGuessValidateIt
 * '''WorkingFirst''' - 우아하거나 효율적으로 만들기 전에 먼저 작동하게 만들어라. 작동하는 해결책은 문제의 진정한 본질을 드러내고 더 나은 설계 결정을 안내한다. ''연관: BabySteps, OrganicGrowth''
Line 34: Line 29:
'''NamingIsDesignPractice''' - 추상화 생성
↳ uses → ProblemSpaceSolutionSpace
↳ supports → MakeDSL
↳ enables → FindCommonalityAndVariability
 * '''ArtisanMind''' - 프로그래밍을 순수한 체계적 방법론이 아닌 직관, 경험, 감각이 필요한 기예로 접근하라. 최고의 프로그래머는 기술적 지식과 예술적 감성을 결합한다. ''연관: MasterApprentice, NamesAsDesign''
Line 39: Line 31:
'''TddIsDesignActivity''' - 피드백을 통한 설계
↳ uses → ProblemSpaceSolutionSpace, BabyStep
↳ requires → ShortFeedbackCycle, UseAbduction
↳ produces → RegressionTest
 * '''The95PercentRule''' - 모든 과정의 마지막 5%를 자동화하려는 유혹에 저항하라. 그 남은 복잡성은 종종 절약할 수 있는 수작업 노력보다 더 많은 비용이 든다. ''연관: WorkingFirst, ShortLeash''
Line 44: Line 33:
=== Application Patterns (구체적 실천) ===
'''MicroCommit''' - 버전 제어 원칙
↳ implements → BabyStep
↳ enables → PiecemealGrowthCenterFirst
=== TDD & Evolutionary Design Patterns ===
 * '''[[TinyExperiment]]''' ✓ - 문제에 대해 의미 있는 것을 가르쳐줄 수 있는 가장 작은 실험부터 시작하라. 각 실험은 실패 비용이 거의 없을 정도로 작아야 한다. ''연관: BabySteps, GreenRefuge''
Line 49: Line 36:
'''UseAbduction''' - 탐구 방법
↳ supports → TddIsDesignActivity, HereAndNowDebugging
↳ opposite of → DoNotGuessValidateIt
 * '''BabySteps''' - 시스템 무결성을 유지하면서 목표를 향해 나아가는 가장 작은 단계를 취하라. 큰 단계는 복잡성을 숨기고 디버깅을 기하급수적으로 어렵게 만든다. ''연관: TinyExperiment, AtomicCommit''
Line 53: Line 38:
'''HereAndNowDebugging''' - 디버깅 접근법
↳ uses → UseAbduction, EliminateIntermediateLayers
↳ implements → DoNotGuessValidateIt
 * '''GreenRefuge''' - 테스트가 실패하면 앞으로 고치려 하지 말고 즉시 마지막으로 알려진 작동 상태로 돌아가라. 초록 막대는 복잡성의 폭풍 속 안전한 피난처다. ''연관: SafetyNet, PresentMoment''
Line 57: Line 40:
=== Meta-Patterns (과정 자체에 대한) ===
'''CraftNotScience''' - 개발 철학
↳ manifests through → BabyStep, LastFivePercentAutomation
↳ guides → LearnFromExperts
 * '''DesignThroughTest''' - 테스트 주도 개발을 단순한 검증 도구가 아닌 설계 활동으로 사용하라. 테스트를 먼저 작성하는 행위는 더 나은 API 설계와 깔끔한 인터페이스를 드러낸다. ''연관: CleanIsolation, TightLoop''
Line 62: Line 42:
'''LastFivePercentAutomation''' - 자동화의 한계
↳ reflects → CraftNotScience
↳ requires → PairProgrammingWithJuniors
 * '''TightLoop''' - 변경을 만들고 그 효과를 보는 사이의 시간을 최소화하라. 긴 피드백 주기는 오류가 복합되고 근본 원인을 찾기 어렵게 만든다. ''연관: AtomicCommit, PresentMoment''
Line 66: Line 44:
=== Social Patterns (팀 역학) ===
'''PairProgrammingWithJuniors''' - 지식 전수
↳ enables → LearnFromExperts
↳ uses → YesButYesAnd
↳ supports → LastFivePercentAutomation
 * '''AtomicCommit''' - 각 커밋이 독립적으로 존재할 수 있는 하나의 완전하고 일관된 변경을 나타내도록 하라. 원자적 커밋은 변경 사항을 이해하고, 검토하고, 되돌리기 쉽게 만든다. ''연관: BabySteps, TightLoop''
Line 72: Line 46:
== Pattern Template ==  * '''CleanIsolation''' - 테스트와 모듈을 숨겨진 의존성 없이 독립적으로 실행할 수 있도록 설계하라. 격리는 시스템을 이해하고, 테스트하고, 수정하기 쉽게 만든다. ''연관: DesignThroughTest, DirectPath''
Line 74: Line 48:
각 패턴은 Alexander의 형식을 따르되, 이솝우화 스타일로 작성된다:  * '''DetectiveWork''' - 관찰된 행동의 원인에 대한 가설을 형성하기 위해 추론적 사고를 사용하라. 좋은 프로그래머는 결론을 내리기 전에 증거를 수집하는 탐정이다. ''연관: RootHunting, PresentMoment''
Line 76: Line 50:
{{{
#acl +All:read
 * '''OrganicGrowth''' - 모든 부분을 동시에 구축하기보다는 작동하는 핵심에서 시스템을 점진적으로 성장시켜라. 생물학적 성장처럼, 소프트웨어는 각 단계에서 전체성을 유지할 때 가장 건강하게 성장한다. ''연관: StrongCenter, WorkingFirst''
Line 79: Line 52:
= PatternName =  * '''StrongCenter''' - 가장 필수적인 핵심 기능부터 구축을 시작하고 바깥쪽으로 성장시켜라. 강한 중심은 시스템이 확장될 때 안정성과 일관성을 제공한다. ''연관: OrganicGrowth, TwoWorlds''
Line 81: Line 54:
== Context ==
언제 이 패턴이 적용되는가
=== Testing & Debugging Patterns ===
 * '''DirectPath''' - 입력에서 출력으로의 흐름을 가리는 불필요한 레이어와 간접성을 제거하라. 문제와 해결책 사이의 가장 짧은 경로가 보통 가장 명확하다. ''연관: CleanIsolation, SingleFocus''
Line 84: Line 57:
== Problem ==
스토리나 우화로 문제 상황 묘사
 * '''SingleFocus''' - 한 번에 정확히 한 가지 일만 하고, 다음으로 넘어가기 전에 완전히 완료하라. 디버깅에서 멀티태스킹은 혼란과 놓친 연결로 이어진다. ''연관: AtomicCommit, PresentMoment''
Line 87: Line 59:
== Solution ==
구체적이고 실행 가능한 해결책
문단 형태로 자연스럽게 서술
 * '''ShortLeash''' - 버그나 행동에 대한 가설을 형성할 때, 너무 멀리 추론하지 말고 빠르게 테스트하라. 긴 추론 사슬은 불확실성을 곱하고 시간을 낭비한다. ''연관: DetectiveWork, TinyExperiment''
Line 91: Line 61:
== Examples ==
실제 개발 상황의 구체적 예시들
캐릭터와 스토리가 있는 경험담
 * '''SafetyNet''' - 이전에 고쳐진 버그가 다시 발생하면 잡아내는 회귀 테스트를 구축하라. 좋은 안전망은 자신감을 가지고 리팩토링하고 개선할 수 있게 해준다. ''연관: GreenRefuge, CleanIsolation''
Line 95: Line 63:
== Resulting Context ==
이 패턴 적용 후의 상황
 * '''PresentMoment''' - 일어나야 한다고 생각하는 일보다는 지금 실제로 일어나고 있는 일을 이해하는 데 집중하라. 현재 순간은 대부분의 문제를 해결하는 데 필요한 모든 정보를 담고 있다. ''연관: DetectiveWork, RootHunting''
Line 98: Line 65:
== Related Patterns ==
 * '''Uses:''' 이 패턴이 사용하는 다른 패턴들
 * '''Used by:''' 이 패턴을 사용하는 패턴들
 * '''Enables:''' 이 패턴이 가능하게 하는 패턴들
 * '''Complements:''' 보완하는 패턴들
 * '''RootHunting''' - 표면적인 수정을 적용하거나 무작정 찾지 말고 체계적으로 파서 실제 원인을 찾아라. 진정한 근본 원인은 일단 발견되면 종종 간단한 해결책을 드러낸다. ''연관: PresentMoment, DetectiveWork''
Line 104: Line 67:
----
CategoryPattern
}}}
=== Programming Fundamentals ===
 * '''PatternHunting''' - 자신의 코드와 다른 사람의 코드에서 반복되는 구조와 해결책을 적극적으로 찾아라. 패턴 인식은 모든 프로그래밍 전문성의 기초다. ''연관: LanguageBuilding, MasterApprentice''
Line 108: Line 70:
== Complete Proverb List ==  * '''ComplexityTaming''' - 복잡성을 관리하는 기법들의 도구상자를 개발하라: 추상화, 분해, 네이밍, 관심사 분리. 복잡성은 유지보수성의 적이다. ''연관: DataAsFoundation, DirectPath''
Line 110: Line 72:
'''Data & Logic Design:'''
 1. "use data to make logic simple"
 2. "make DSL"
 3. "do not mix logic and data construction"
 * '''NamesAsDesign''' - 네이밍을 사고를 명확하게 하고 추상화를 드러내는 설계 활동으로 다뤄라. 좋은 이름은 코드를 자체 문서화하고 의도를 명확하게 표현한다. ''연관: LanguageBuilding, ArtisanMind''
Line 115: Line 74:
'''Programming Philosophy:'''
 4. "last 5% automation"
 5. "craft, not science"
 6. "Make it work, then make it better"
 7. "problem space, solution space"
 8. "naming itself is a design practice"
 9. "programming is to make a language system"
 * '''LanguageBuilding''' - 프로그래밍을 문제 공간을 완벽하게 표현하는 도메인 특화 언어를 구축하는 것으로 접근하라. 최고의 프로그램은 전문화된 어휘로 잘 쓰인 산문처럼 읽힙다. ''연관: DataAsFoundation, LivingVocabulary''
Line 123: Line 76:
'''Programming Fundamentals:'''
 10. "공통점과 차이점 찾기" (Find commonality and variability)
 * '''LivingVocabulary''' - 이해가 깊어짐에 따라 코드베이스에서 사용되는 어휘를 지속적으로 발전시키고 정제하라. 좋은 어휘는 유기적으로 성장하고 새로운 통찰에 적응한다. ''연관: NamesAsDesign, OrganicGrowth''
Line 126: Line 78:
'''TDD & Evolutionary Design:'''
 11. "Baby Step"
 12. "quickly step back to closest green-bar"
 13. "TDD is a design activity"
 14. "short feedback cycle"
 15. "micro commit, one at a time"
 16. "isolation"
 17. "use abduction"
 18. "piecemeal growth, center first"
=== Collaboration Patterns ===
 * '''TechnicalCommunity''' - 프로세스 준수보다는 기술적 우수성과 지속적 학습을 강조하는 개발 관행을 선택하라. 강한 기술적 관행은 경직된 프로세스보다 더 나은 협업을 만든다. ''연관: SharedMind, MasterApprentice''
Line 136: Line 81:
'''Testing & Debugging:'''
 19. "eliminate/reduce intermediate layers"
 20. "넘겨짚지 말고, 마술의 동작과 동작 사이를 잘 들여다보기"
 21. "do not guess far. when you guess, validate it"
 22. "regression test"
 23. "Here and now debugging"
 * '''SharedMind''' - 지식을 결합하고 서로의 사각지대를 잡아내기 위해 다른 개발자들과 긴밀히 작업하라. 함께 일하는 두 마음은 종종 어느 한쪽도 혼자서는 도달할 수 없는 통찰을 만들어낸다. ''연관: TechnicalCommunity, BuildingBridge''
Line 143: Line 83:
'''Collaboration & Team:'''
 24. "XP over Scrum for developers"
 25. "pair programming with juniors"
 26. "Yes, but / Yes, and"
 * '''FlowingFeedback''' - 병목을 만들기보다는 개발 흐름을 유지하도록 코드 리뷰와 피드백을 구조화하라. 피드백은 진행을 느추는 것이 아니라 학습을 가속화해야 한다. ''연관: BuildingBridge, TightLoop''
Line 148: Line 85:
'''Learning & Expertise:'''
 27. "Learn from experts (CTA, CDE)"
 * '''BuildingBridge''' - 다른 사람의 기여에 "네, 하지만..."보다는 "네, 그리고..."로 응답하라. 건설적인 대화는 방어적인 반응보다 더 나은 해결책을 만든다. ''연관: SharedMind, FlowingFeedback''

=== Learning & Expertise Patterns ===
 * '''MasterApprentice''' - 관찰, 모방, 안내된 실습을 통해 전문가로부터 직접 배워라. 스승-제자 관계는 책으로는 전달할 수 없는 암묵적 지식을 전수한다. ''연관: CraftPath, ArtisanMind''

 * '''CraftPath''' - 고급 기법보다는 기초에 집중하면서 초보자에서 전문가로의 의도적인 진행을 따라라. 숙련은 핵심 기술의 인내심 있는 개발을 요구한다. ''연관: MasterApprentice, ThinkingMirror''

 * '''ThinkingMirror''' - 자신의 사고 과정과 의사결정 패턴을 정기적으로 성찰하라. 자신이 어떻게 생각하는지에 대한 자각은 학습과 문제 해결을 모두 향상시킨다. ''연관: ActiveReflection, InstinctiveChoice''

 * '''ActiveReflection''' - 나중이 아니라 수행하면서 자신의 행동과 결정에 대해 의식적으로 생각하라. 실시간 성찰은 성능을 향상시키고 전문성을 더 빠르게 구축한다. ''연관: ThinkingMirror, PresentMoment''

 * '''InstinctiveChoice''' - 경험적 직관에 기반한 빠른 의사결정을 가능하게 하는 패턴 인식을 개발하라. 전문 프로그래머는 왜 그런지 설명하기 전에 종종 올바른 답을 안다. ''연관: PatternHunting, ArtisanMind''

== Current Status ==

=== Phase 1: Foundation Patterns (In Progress) ===
'''Completed:'''
 * [[TinyExperiment]] ✓ - 패턴 언어 형식으로 완성, 검증됨

'''Next Priority:'''
 * DataAsFoundation - 로직 단순화의 핵심
 * TwoWorlds - 사고 체계의 기본

'''Remaining Foundation:'''
 * WorkingFirst, ArtisanMind, The95PercentRule

=== Validation Results ===
첫 번째 패턴 [[TinyExperiment]]의 스토리 구조가 검증되어 패턴 언어로서의 가능성을 확인했습니다.
Line 153: Line 116:
'''Phase 1: Foundation (현재)'''
 * [x] [[TinyExperiment]] (완성)
 * [ ] UseDataToMakeLogicSimple
 * [ ] ProblemSpaceSolutionSpace
=== Phase 1: Core Foundation (Current) ===
가장 기본이 되는 5-6개 패턴을 완성하여 전체 구조의 기반을 마련
Line 158: Line 119:
'''Phase 2: Intermediate Layer'''
 * [ ] BabyStep
 * [ ] NamingIsDesignPractice
 * [ ] TddIsDesignActivity
=== Phase 2: TDD & Design Patterns ===
TDD와 설계 관련 패턴들을 체계화 (10-12개 패턴)
Line 163: Line 122:
'''Phase 3: Application Patterns'''
 * [ ] MicroCommit
 * [ ] UseAbduction
 * [ ] HereAndNowDebugging
=== Phase 3: Collaboration & Learning ===
협업과 학습 관련 패턴들을 완성 (8-10개 패턴)
Line 168: Line 125:
'''Phase 4: Meta & Social'''
 * [ ] CraftNotScience
 * [ ] LastFivePercentAutomation
 * [ ] PairProgrammingWithJuniors
== Next Actions ==
Line 173: Line 127:
'''Phase 5: Integration'''
 * [ ] Update [[기술문서모음/ToJuniors]] with all pattern links
 * [ ] Create pattern relationship visualization
 * [ ] Validate semi-lattice structure
=== 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''' - 연결된 다른 패턴들
Line 180: Line 148:
'''2024-01:''' Project initiated. First pattern [[TinyExperiment]] created with story-driven approach. Enhanced from bullet-point structure to Aesop's fable style storytelling. Pattern successfully integrates assumption, validation, fail-safe, fast feedback loop, isolation, baby step, and abduction concepts. === Recent Achievements ===
 * 원본 문서에서 27+개 패턴 목록 정리 완료
 * TinyExperiment 패턴 완성 및 검증
 * 3단계 구현 전략 수립
 * Foundation 레벨 우선순위 확정
Line 182: Line 154:
== References ==

 * Christopher Alexander - "A Pattern Language", "The Timeless Way of Building"
 * [[기술문서모음/ToJuniors]] - Original proverb collection
 * [[OrgPatterns]] - Pattern language inspiration and structure
 * [[가추법]] - Abduction methodology
=== Lessons Learned ===
 * 전체 패턴 목록을 먼저 정리하는 것이 중요
 * 스토리 우선 접근법의 효과 확인
 * 패턴 간 연결 관계의 복잡성 인식
Line 190: Line 160:
CategoryAiGardenProject CategoryPattern CategoryAiGardenProject CategoryPatternLanguage

AiGarden/ToJuniorsPatternLanguage

주니어 개발자들을 위한 프로그래밍 피드백을 Christopher Alexander의 패턴 언어로 변환하는 프로젝트.

Project Vision

기술문서모음/ToJuniors 문서의 패턴들을 Alexander의 패턴 언어 형식으로 변환하여 구조적이고 교육적인 자료로 발전시키는 것이 목표입니다.

Core Principles

  • Structure-Preserving Baby Steps - 기존 구조를 보존하며 점진적 발전

  • Story-First Approach - 스토리로 시작해서 패턴으로 추상화

  • Educational Focus - 학습자 중심의 명확한 설명

  • Pattern Language Structure - Alexander 방식의 체계적 연결

Pattern Inventory

Foundation Patterns

Core Programming Principles

  • DataAsFoundation - 비즈니스 로직에서 데이터 구성을 분리하여 단순함을 달성하고, 데이터 구조가 복잡해지면 도메인 특화 언어를 만들어라. 모든 깨끗한 코드의 기반은 잘 정리된 데이터에서 시작된다. 연관: LanguageBuilding, ComplexityTaming

  • TwoWorlds - 문제 공간(무엇을 해결할 것인가)과 해결 공간(어떻게 구현할 것인가)을 명확히 구분하라. 많은 프로그래밍 오류는 사고 과정에서 이 두 관심사를 너무 일찍 섞는 데서 비롯된다. 연관: StrongCenter, PatternHunting

  • WorkingFirst - 우아하거나 효율적으로 만들기 전에 먼저 작동하게 만들어라. 작동하는 해결책은 문제의 진정한 본질을 드러내고 더 나은 설계 결정을 안내한다. 연관: BabySteps, OrganicGrowth

  • ArtisanMind - 프로그래밍을 순수한 체계적 방법론이 아닌 직관, 경험, 감각이 필요한 기예로 접근하라. 최고의 프로그래머는 기술적 지식과 예술적 감성을 결합한다. 연관: MasterApprentice, NamesAsDesign

  • The95PercentRule - 모든 과정의 마지막 5%를 자동화하려는 유혹에 저항하라. 그 남은 복잡성은 종종 절약할 수 있는 수작업 노력보다 더 많은 비용이 든다. 연관: WorkingFirst, ShortLeash

TDD & Evolutionary Design Patterns

  • TinyExperiment ✓ - 문제에 대해 의미 있는 것을 가르쳐줄 수 있는 가장 작은 실험부터 시작하라. 각 실험은 실패 비용이 거의 없을 정도로 작아야 한다. 연관: BabySteps, GreenRefuge

  • BabySteps - 시스템 무결성을 유지하면서 목표를 향해 나아가는 가장 작은 단계를 취하라. 큰 단계는 복잡성을 숨기고 디버깅을 기하급수적으로 어렵게 만든다. 연관: TinyExperiment, AtomicCommit

  • GreenRefuge - 테스트가 실패하면 앞으로 고치려 하지 말고 즉시 마지막으로 알려진 작동 상태로 돌아가라. 초록 막대는 복잡성의 폭풍 속 안전한 피난처다. 연관: SafetyNet, PresentMoment

  • DesignThroughTest - 테스트 주도 개발을 단순한 검증 도구가 아닌 설계 활동으로 사용하라. 테스트를 먼저 작성하는 행위는 더 나은 API 설계와 깔끔한 인터페이스를 드러낸다. 연관: CleanIsolation, TightLoop

  • TightLoop - 변경을 만들고 그 효과를 보는 사이의 시간을 최소화하라. 긴 피드백 주기는 오류가 복합되고 근본 원인을 찾기 어렵게 만든다. 연관: AtomicCommit, PresentMoment

  • AtomicCommit - 각 커밋이 독립적으로 존재할 수 있는 하나의 완전하고 일관된 변경을 나타내도록 하라. 원자적 커밋은 변경 사항을 이해하고, 검토하고, 되돌리기 쉽게 만든다. 연관: BabySteps, TightLoop

  • CleanIsolation - 테스트와 모듈을 숨겨진 의존성 없이 독립적으로 실행할 수 있도록 설계하라. 격리는 시스템을 이해하고, 테스트하고, 수정하기 쉽게 만든다. 연관: DesignThroughTest, DirectPath

  • DetectiveWork - 관찰된 행동의 원인에 대한 가설을 형성하기 위해 추론적 사고를 사용하라. 좋은 프로그래머는 결론을 내리기 전에 증거를 수집하는 탐정이다. 연관: RootHunting, PresentMoment

  • OrganicGrowth - 모든 부분을 동시에 구축하기보다는 작동하는 핵심에서 시스템을 점진적으로 성장시켜라. 생물학적 성장처럼, 소프트웨어는 각 단계에서 전체성을 유지할 때 가장 건강하게 성장한다. 연관: StrongCenter, WorkingFirst

  • StrongCenter - 가장 필수적인 핵심 기능부터 구축을 시작하고 바깥쪽으로 성장시켜라. 강한 중심은 시스템이 확장될 때 안정성과 일관성을 제공한다. 연관: OrganicGrowth, TwoWorlds

Testing & Debugging Patterns

  • DirectPath - 입력에서 출력으로의 흐름을 가리는 불필요한 레이어와 간접성을 제거하라. 문제와 해결책 사이의 가장 짧은 경로가 보통 가장 명확하다. 연관: CleanIsolation, SingleFocus

  • SingleFocus - 한 번에 정확히 한 가지 일만 하고, 다음으로 넘어가기 전에 완전히 완료하라. 디버깅에서 멀티태스킹은 혼란과 놓친 연결로 이어진다. 연관: AtomicCommit, PresentMoment

  • ShortLeash - 버그나 행동에 대한 가설을 형성할 때, 너무 멀리 추론하지 말고 빠르게 테스트하라. 긴 추론 사슬은 불확실성을 곱하고 시간을 낭비한다. 연관: DetectiveWork, TinyExperiment

  • SafetyNet - 이전에 고쳐진 버그가 다시 발생하면 잡아내는 회귀 테스트를 구축하라. 좋은 안전망은 자신감을 가지고 리팩토링하고 개선할 수 있게 해준다. 연관: GreenRefuge, CleanIsolation

  • PresentMoment - 일어나야 한다고 생각하는 일보다는 지금 실제로 일어나고 있는 일을 이해하는 데 집중하라. 현재 순간은 대부분의 문제를 해결하는 데 필요한 모든 정보를 담고 있다. 연관: DetectiveWork, RootHunting

  • RootHunting - 표면적인 수정을 적용하거나 무작정 찾지 말고 체계적으로 파서 실제 원인을 찾아라. 진정한 근본 원인은 일단 발견되면 종종 간단한 해결책을 드러낸다. 연관: PresentMoment, DetectiveWork

Programming Fundamentals

  • PatternHunting - 자신의 코드와 다른 사람의 코드에서 반복되는 구조와 해결책을 적극적으로 찾아라. 패턴 인식은 모든 프로그래밍 전문성의 기초다. 연관: LanguageBuilding, MasterApprentice

  • ComplexityTaming - 복잡성을 관리하는 기법들의 도구상자를 개발하라: 추상화, 분해, 네이밍, 관심사 분리. 복잡성은 유지보수성의 적이다. 연관: DataAsFoundation, DirectPath

  • NamesAsDesign - 네이밍을 사고를 명확하게 하고 추상화를 드러내는 설계 활동으로 다뤄라. 좋은 이름은 코드를 자체 문서화하고 의도를 명확하게 표현한다. 연관: LanguageBuilding, ArtisanMind

  • LanguageBuilding - 프로그래밍을 문제 공간을 완벽하게 표현하는 도메인 특화 언어를 구축하는 것으로 접근하라. 최고의 프로그램은 전문화된 어휘로 잘 쓰인 산문처럼 읽힙다. 연관: DataAsFoundation, LivingVocabulary

  • LivingVocabulary - 이해가 깊어짐에 따라 코드베이스에서 사용되는 어휘를 지속적으로 발전시키고 정제하라. 좋은 어휘는 유기적으로 성장하고 새로운 통찰에 적응한다. 연관: NamesAsDesign, OrganicGrowth

Collaboration Patterns

  • TechnicalCommunity - 프로세스 준수보다는 기술적 우수성과 지속적 학습을 강조하는 개발 관행을 선택하라. 강한 기술적 관행은 경직된 프로세스보다 더 나은 협업을 만든다. 연관: SharedMind, MasterApprentice

  • SharedMind - 지식을 결합하고 서로의 사각지대를 잡아내기 위해 다른 개발자들과 긴밀히 작업하라. 함께 일하는 두 마음은 종종 어느 한쪽도 혼자서는 도달할 수 없는 통찰을 만들어낸다. 연관: TechnicalCommunity, BuildingBridge

  • FlowingFeedback - 병목을 만들기보다는 개발 흐름을 유지하도록 코드 리뷰와 피드백을 구조화하라. 피드백은 진행을 느추는 것이 아니라 학습을 가속화해야 한다. 연관: BuildingBridge, TightLoop

  • BuildingBridge - 다른 사람의 기여에 "네, 하지만..."보다는 "네, 그리고..."로 응답하라. 건설적인 대화는 방어적인 반응보다 더 나은 해결책을 만든다. 연관: SharedMind, FlowingFeedback

Learning & Expertise Patterns

  • MasterApprentice - 관찰, 모방, 안내된 실습을 통해 전문가로부터 직접 배워라. 스승-제자 관계는 책으로는 전달할 수 없는 암묵적 지식을 전수한다. 연관: CraftPath, ArtisanMind

  • CraftPath - 고급 기법보다는 기초에 집중하면서 초보자에서 전문가로의 의도적인 진행을 따라라. 숙련은 핵심 기술의 인내심 있는 개발을 요구한다. 연관: MasterApprentice, ThinkingMirror

  • ThinkingMirror - 자신의 사고 과정과 의사결정 패턴을 정기적으로 성찰하라. 자신이 어떻게 생각하는지에 대한 자각은 학습과 문제 해결을 모두 향상시킨다. 연관: ActiveReflection, InstinctiveChoice

  • ActiveReflection - 나중이 아니라 수행하면서 자신의 행동과 결정에 대해 의식적으로 생각하라. 실시간 성찰은 성능을 향상시키고 전문성을 더 빠르게 구축한다. 연관: ThinkingMirror, PresentMoment

  • InstinctiveChoice - 경험적 직관에 기반한 빠른 의사결정을 가능하게 하는 패턴 인식을 개발하라. 전문 프로그래머는 왜 그런지 설명하기 전에 종종 올바른 답을 안다. 연관: PatternHunting, ArtisanMind

Current Status

Phase 1: Foundation Patterns (In Progress)

Completed:

Next Priority:

Remaining Foundation:

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)

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

  • 전체 패턴 목록을 먼저 정리하는 것이 중요
  • 스토리 우선 접근법의 효과 확인
  • 패턴 간 연결 관계의 복잡성 인식


CategoryAiGardenProject CategoryPatternLanguage

AiGarden/ToJuniorsPatternLanguage (last edited 2025-07-24 16:15:03 by 정수)