Differences between revisions 8 and 40 (spanning 32 versions)
Revision 8 as of 2025-07-24 16:09:14
Size: 11331
Editor: 정수
Comment:
Revision 40 as of 2025-12-30 07:38:45
Size: 19578
Editor: 정수
Comment:
Deletions are marked like this. Additions are marked like this.
Line 23: Line 23:
 * '''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''

 * '''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''

 * '''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''

 * '''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''

 * '''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''
 * '''[[DataAsFoundation]]''' ✓ - 비즈니스 로직에서 데이터 구성을 분리하여 단순함을 달성하고, 데이터 구조가 복잡해지면 도메인 특화 언어를 만들어라. 모든 깨끗한 코드의 기반은 잘 정리된 데이터에서 시작된다.
   * ''연관: [[LanguageBuilding]], [[ComplexityTaming]], [[TwoWorlds]], [[WorkingFirst]], [[NamesAsDesign]], [[DetectiveWork]], [[CognitiveMicroscope]], [[MetaphorThinking]]''

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

 * '''[[WorkingFirst]]''' ✓ - 우아하거나 효율적으로 만들기 전에 먼저 작동하게 만들어라. 작동하는 해결책은 문제의 진정한 본질을 드러내고 더 나은 설계 결정을 안내한다. 주니어는 실행 없이 완벽한 설계를, 시니어는 작은 작동에서 snowball을 만든다.
   * ''연관: [[TinyExperiment]], [[BabySteps]], [[OrganicGrowth]], [[TwoWorlds]], [[GreenRefuge]], [[DetectiveWork]], [[DesignThroughTest]], [[TightLoop]], [[ArtisanMind]], [[The95PercentRule]]''

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

 * '''[[The95PercentRule]]''' ✓ - 모든 과정의 마지막 5%를 자동화하려는 유혹에 저항하라. 그 남은 복잡성은 종종 절약할 수 있는 수작업 노력보다 더 많은 비용이 든다.
   * ''연관: [[WorkingFirst]], [[ArtisanMind]], [[TinyExperiment]], [[TwoWorlds]], [[ComplexityTaming]]''
Line 34: Line 39:
 * '''[[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''
 * '''[[TinyExperiment]]''' ✓ - 문제에 대해 의미 있는 것을 가르쳐줄 수 있는 가장 작은 실험부터 시작하라. 각 실험은 실패 비용이 거의 없을 정도로 작아야 한다.
   * ''연관: [[BabySteps]], [[GreenRefuge]], [[DesignThroughTest]], [[DetectiveWork]], [[TightLoop]], [[AtomicCommit]], [[CognitiveMicroscope]], [[WorkingFirst]], [[ArtisanMind]]''

 * '''[[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]]''

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

 * '''[[DirectPath]]''' ✓ - 입력에서 출력으로의 흐름을 가리는 불필요한 레이어와 간접성을 제거하라. 문제와 해결책 사이의 가장 짧은 경로가 보통 가장 명확하다.
   * ''연관: [[CleanIsolation]], [[SingleFocus]]''
Line 55: Line 76:
 * '''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''
 * '''[[SingleFocus]]''' ✓ - 한 번에 정확히 한 가지 일만 하고, 다음으로 넘어가기 전에 완전히 완료하라. 디버깅에서 멀티태스킹은 혼란과 놓친 연결로 이어진다.
   * ''연관: [[AtomicCommit]], [[PresentMoment]]''

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

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

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

=== Programming Fundamentals & Language ===
 * '''[[PatternHunting]]''' ✓ - 자신의 코드와 다른 사람의 코드에서 반복되는 구조와 해결책을 적극적으로 찾아라. 패턴 인식은 모든 프로그래밍 전문성의 기초다.
   * ''연관: [[LanguageBuilding]], [[MasterApprentice]], [[MetaphorThinking]], [[ArtisanMind]], [[ComplexityTaming]], [[CognitiveMicroscope]]''

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

 * '''[[NamesAsDesign]]''' ✓ - 네이밍을 설계 활동으로 다뤄라. 이름은 문맥에 embedding되어 평가되며, 형제/부모/자식과 조화롭게 "잘 어울려야" 한다. 이름은 개념 그 자 체이고, 좋은 이름은 문서보다 가치있다.
   * ''연관: [[LanguageBuilding]], [[MetaphorThinking]], [[LivingVocabulary]], [[ArtisanMind]], [[TwoWorlds]], [[DataAsFoundation]], [[WorkingFirst]], [[PatternHunting]]''

 * '''[[LanguageBuilding]]''' ✓ - 프로그래밍을 문제 영역을 완벽하게 표현하는 도메인 특화 언어를 구축하는 것으로 접근하라. Lisp 전통의 bottom-up 프로그래밍과 Peter Naur의 theory building을 통합하여, 최고의 프로그램은 전문화된 어휘로 잘 쓰인 산문처럼 읽힌다.
   * ''연관: [[DataAsFoundation]], [[LivingVocabulary]], [[NamesAsDesign]], [[MetaphorThinking]], [[TwoWorlds]], [[PatternHunting]], [[WorkingFirst]], [[OrganicGrowth]], [[ComplexityTaming]], [[TechnicalCommunity]]''

 * '''[[MetaphorThinking]]''' ✓ - 적절한 은유와 비유를 찾아 문제를 정의하고 해결하라. 은유(Metaphor), 유추(Analogy), 가추(Abduction)의 인지적 삼위일체를 통해 복잡한 추상 개념을 구체적이고 이해 가능하게 만든다. 좋은 은유는 사고를 확장하고 기존 개념을 활용하게 한다.
   * ''연관: [[LanguageBuilding]], [[TwoWorlds]], [[PatternHunting]], [[TechnicalCommunity]], [[DataAsFoundation]], [[NamesAsDesign]], [[StrongCenter]], [[CognitiveMicroscope]], [[TinyResearch]]''

 * '''[[LivingVocabulary]]''' ✓ - 이해가 깊어짐에 따라 코드베이스에서 사용되는 어휘를 지속적으로 발전시키고 정제하라. 좋은 어휘는 유기적으로 성장하고 새로운 통찰에 적응한다.
   * ''연관: [[NamesAsDesign]], [[OrganicGrowth]], [[LanguageBuilding]]''
Line 79: Line 108:
 * '''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''
 * '''[[TechnicalCommunity]]''' ✓ - 프로세스 준수보다는 기술적 우수성과 지속적 학습을 강조하는 개발 관행을 선택하라. 강한 기술적 관행은 경직된 프로세스보다 더 나은 협업을 만든다.
   * ''연관: [[SharedMind]], [[MasterApprentice]]''

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

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

 * '''[[BuildingBridge]]''' ✓ - 다른 사람의 기여에 "네, 하지만..."보다는 "네, 그리고..."로 응답하라. 건설적인 대화는 방어적인 반응보다 더 나은 해결책을 만든다.
   * ''연관: [[SharedMind]], [[FlowingFeedback]]''
Line 88: Line 121:
 * '''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''
 * '''[[MasterApprentice]]''' ✓ - 관찰, 모방, 안내된 실습을 통해 전문가로부터 직접 배워라. 스승-제자 관계는 책으로는 전달할 수 없는 암묵적 지식을 전수한다.
   * ''연관: [[CraftPath]], [[ArtisanMind]]''

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

 * '''[[CognitiveMicroscope]]''' ✓ - 자신의 인지 과정을 세밀하게 관찰하여 전문성을 빠르게 구축하라. 평소에는 너무 빨라서 보이지 않는 사고의 단계들을 확대해서 보면, 생각의 해상도와 밀도가 높아진다.
   * ''연관: [[ThinkingMirror]], [[ActiveReflection]], [[DetectiveWork]], [[PresentMoment]], [[MasterApprentice]], [[InstinctiveChoice]], [[TinyExperiment]], [[BabySteps]], [[TinyResearch]]''

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

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

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

 * '''[[TinyResearch]]''' ✓ - 일하면서 5분 연구를 습관화하라. 셜록 홈즈의 방대한 잡학다식처럼, 작은 호기심을 즉시 해결하는 것이 누적되면 전문성이 된다. 중용(中庸)의 길 - 하루 5분이 10년 후 500시간, 호기심이 호기심을 낳는 선순환.
   * ''연관: [[DetectiveWork]], [[CognitiveMicroscope]], [[PatternHunting]], [[InstinctiveChoice]], [[MasterApprentice]], [[ActiveReflection]], [[TinyExperiment]], [[WorkingFirst]], [[MetaphorThinking]]''
Line 100: Line 144:
=== Phase 1: Foundation Patterns (In Progress) ===
'''Completed:'''
 * [[TinyExperiment]] ✓ - 패턴 언어 형식으로 완성, 검증됨

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

'''Remaining Foundation:'''
 * WorkingFirst, ArtisanMind, The95PercentRule
=== Phase 1: Foundation Patterns (Completed) ===
가장 기본이 되는 11개 패턴 완성.

=== Phase 2: TDD & Evolutionary Design Patterns (Completed) ===
TDD, 설계, 디버깅 관련 14개 패턴 완성.

=== Phase 3: Collaboration & Learning (Completed) ===
협업과 학습 관련 10개 패턴 완성.
Line 112: Line 154:
첫 번째 패턴 [[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 패턴 우선순위 확정
전체 35개 패턴으로 구성된 "주니어 개발자를 위한 패턴 언어"가 완성되었습니다.
Line 149: Line 168:
 * [[LivingVocabulary]] 패턴 완성 - 코드의 어휘를 유기적으로 진화시키는 법
 * [[InstinctiveChoice]] 패턴 완성 - 패턴 인식과 직관을 통한 전문가의 의사결정
 * [[ActiveReflection]] 패턴 완성 - 수행 중 실시간 성찰을 통한 감각의 각인과 전문성 강화
 * [[ThinkingMirror]] 패턴 완성 - 사고 과정의 기록과 정기적 회고를 통한 메타인지 강화
 * [[CraftPath]] 패턴 완성 - 기초 다지기와 의도적 수련을 통한 전문가 성장 경로
 * [[MasterApprentice]] 패턴 완성 - 관찰과 모방을 통한 암묵지 전수
 * [[BuildingBridge]] 패턴 완성 - "네, 그리고" 화법을 통한 건설적 협업 문화 조성
 * [[FlowingFeedback]] 패턴 완성 - 개발 흐름을 방해하지 않는 효율적인 코드 리뷰 실천
 * [[SharedMind]] 패턴 완성 - 지식 결합과 사각지대 제거를 위한 페어 프로그래밍 실천
 * [[TechnicalCommunity]] 패턴 완성 - 기술적 우수성과 지속적 학습을 강조하는 팀 문화
 * [[ComplexityTaming]] 패턴 완성 - 복잡성을 쪼개고 이름을 붙여 관리하는 기법
 * [[ShortLeash]] 패턴 완성 - 가설 검증 주기를 짧게 유지하여 효율적인 디버깅 수행
 * [[SingleFocus]] 패턴 완성 - 한 번에 하나씩 수행하여 완결성 확보
 * [[DirectPath]] 패턴 완성 - 불필요한 추상화와 레이어를 제거하여 데이터 흐름을 명확히 함
 * [[PresentMoment]] 패턴 완성 - 지도(코드)가 아닌 영토(실행)를 보는 마인드셋
 * [[RootHunting]] 패턴 완성 - 5 Whys를 통한 근본 원인 해결 및 프로세스 개선
 * [[DetectiveWork]] 패턴 완성 - 가설과 증거 기반의 체계적 수사 기법
 * [[SafetyNet]] 패턴 완성 - 두려움 없이 리팩토링할 수 있는 심리적/기술적 안전망
 * [[StrongCenter]] 패턴 완성 - 시스템의 핵심 가치를 먼저 세워 주변부를 정렬
 * [[OrganicGrowth]] 패턴 완성 - 기계적 조립이 아닌 유기적 성장, Walking Skeleton, Gall's Law
 * [[CleanIsolation]] 패턴 완성 - 의존성을 격리하여 테스트 가능성과 유연성 확보
 * [[AtomicCommit]] 패턴 완성 - 변경의 역사를 원자적이고 일관된 단위로 기록
 * [[TightLoop]] 패턴 완성 - 변경과 피드백 사이의 시간을 최소화하여 몰입 유지
 * [[DesignThroughTest]] 패턴 완성 - 테스트를 통한 인터페이스 발견, 의존성 주입의 자연스러운 유도
 * [[GreenRefuge]] 패턴 완성 - 혼란 속에서 안전한 베이스캠프로 돌아가는 기술, 5분 규칙
 * [[BabySteps]] 패턴 완성 - 시스템의 생명력을 유지하며 이동하는 방법, Structure-Preserving Transformation
Line 150: Line 195:
 * TinyExperiment 패턴 완성 및 검증  * [[TinyExperiment]] 패턴 완성 및 검증
 * [[CognitiveMicroscope]] 패턴 완성 - SatirInteractionModel, CTA, 실제 멘토링 사례 통합
 * [[DataAsFoundation]] 패턴 완성 - 데이터 중심 사고, LLM 시대 표현 언어, XML/DSL 통합
 * [[TwoWorlds]] 패턴 완성 - Polya, Weinberg, Agile 원칙 통합, 문제/해결 공간 분리
 * [[LanguageBuilding]] 패턴 완성 - Lisp 전통(Paul Graham, Peter Seibel, Peter Norvig)과 Peter Naur의 Programming as Theory Building 통합
 * [[MetaphorThinking]] 패턴 완성 - Lakoff & Johnson의 은유, Hofstadter & Sander의 유추, Peirce의 가추를 통합한 인지적 삼위일체
 * [[WorkingFirst]] 패턴 완성 - Kent Beck, Fred Brooks, Chris Argyris, Michael Polanyi 통합, 주니어의 완벽주의 vs 시니어의 탐색적 접근, epistemology of making
 * [[NamesAsDesign]] 패턴 완성 - Phil Karlton, Martin Fowler, Ward Cunningham, Eric Evans의 Ubiquitous Language 통합, 문맥에 embedding된 이름의 관계적 품질
 * [[TinyResearch]] 패턴 완성 - 셜록 홈즈의 탐정적 지식 수집, 중용의 일일신, 호기심의 선순환, 지식의 복리 효과 통합
 * [[ArtisanMind]] 패턴 완성 - 과학(Why) vs 기예(How), 유리 장인의 비유, 베이지안 접근, 해커 마인드 통합
Line 153: Line 207:
 * '''Phase 1 Foundation 패턴 10개 완성''' (목표: 5-6개)
Line 158: Line 213:
 * 실제 경험과 일기의 통찰을 패턴에 통합하는 것의 가치
 * 인지과학과 철학의 통찰을 프로그래밍 패턴에 연결하는 것의 깊이

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

TDD & Evolutionary Design Patterns

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

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

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

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

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

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

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

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

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

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

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

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

Testing & Debugging Patterns

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

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

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

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

Programming Fundamentals & Language

Collaboration Patterns

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

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

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

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

Learning & Expertise Patterns

Current Status

Phase 1: Foundation Patterns (Completed)

가장 기본이 되는 11개 패턴 완성.

Phase 2: TDD & Evolutionary Design Patterns (Completed)

TDD, 설계, 디버깅 관련 14개 패턴 완성.

Phase 3: Collaboration & Learning (Completed)

협업과 학습 관련 10개 패턴 완성.

Validation Results

전체 35개 패턴으로 구성된 "주니어 개발자를 위한 패턴 언어"가 완성되었습니다.

Pattern Structure Template

각 패턴은 Alexander 방식을 따릅니다:

  • Context - 상황과 배경

  • Problem - 구체적인 문제와 갈등

  • Solution - 해결 방법과 원리

  • Examples - 실제 적용 사례

  • Related Patterns - 연결된 다른 패턴들

Progress Log

Recent Achievements

  • LivingVocabulary 패턴 완성 - 코드의 어휘를 유기적으로 진화시키는 법

  • InstinctiveChoice 패턴 완성 - 패턴 인식과 직관을 통한 전문가의 의사결정

  • ActiveReflection 패턴 완성 - 수행 중 실시간 성찰을 통한 감각의 각인과 전문성 강화

  • ThinkingMirror 패턴 완성 - 사고 과정의 기록과 정기적 회고를 통한 메타인지 강화

  • CraftPath 패턴 완성 - 기초 다지기와 의도적 수련을 통한 전문가 성장 경로

  • MasterApprentice 패턴 완성 - 관찰과 모방을 통한 암묵지 전수

  • BuildingBridge 패턴 완성 - "네, 그리고" 화법을 통한 건설적 협업 문화 조성

  • FlowingFeedback 패턴 완성 - 개발 흐름을 방해하지 않는 효율적인 코드 리뷰 실천

  • SharedMind 패턴 완성 - 지식 결합과 사각지대 제거를 위한 페어 프로그래밍 실천

  • TechnicalCommunity 패턴 완성 - 기술적 우수성과 지속적 학습을 강조하는 팀 문화

  • ComplexityTaming 패턴 완성 - 복잡성을 쪼개고 이름을 붙여 관리하는 기법

  • ShortLeash 패턴 완성 - 가설 검증 주기를 짧게 유지하여 효율적인 디버깅 수행

  • SingleFocus 패턴 완성 - 한 번에 하나씩 수행하여 완결성 확보

  • DirectPath 패턴 완성 - 불필요한 추상화와 레이어를 제거하여 데이터 흐름을 명확히 함

  • PresentMoment 패턴 완성 - 지도(코드)가 아닌 영토(실행)를 보는 마인드셋

  • RootHunting 패턴 완성 - 5 Whys를 통한 근본 원인 해결 및 프로세스 개선

  • DetectiveWork 패턴 완성 - 가설과 증거 기반의 체계적 수사 기법

  • SafetyNet 패턴 완성 - 두려움 없이 리팩토링할 수 있는 심리적/기술적 안전망

  • StrongCenter 패턴 완성 - 시스템의 핵심 가치를 먼저 세워 주변부를 정렬

  • OrganicGrowth 패턴 완성 - 기계적 조립이 아닌 유기적 성장, Walking Skeleton, Gall's Law

  • CleanIsolation 패턴 완성 - 의존성을 격리하여 테스트 가능성과 유연성 확보

  • AtomicCommit 패턴 완성 - 변경의 역사를 원자적이고 일관된 단위로 기록

  • TightLoop 패턴 완성 - 변경과 피드백 사이의 시간을 최소화하여 몰입 유지

  • DesignThroughTest 패턴 완성 - 테스트를 통한 인터페이스 발견, 의존성 주입의 자연스러운 유도

  • GreenRefuge 패턴 완성 - 혼란 속에서 안전한 베이스캠프로 돌아가는 기술, 5분 규칙

  • BabySteps 패턴 완성 - 시스템의 생명력을 유지하며 이동하는 방법, Structure-Preserving Transformation

  • 원본 문서에서 27+개 패턴 목록 정리 완료
  • TinyExperiment 패턴 완성 및 검증

  • CognitiveMicroscope 패턴 완성 - SatirInteractionModel, CTA, 실제 멘토링 사례 통합

  • DataAsFoundation 패턴 완성 - 데이터 중심 사고, LLM 시대 표현 언어, XML/DSL 통합

  • TwoWorlds 패턴 완성 - Polya, Weinberg, Agile 원칙 통합, 문제/해결 공간 분리

  • LanguageBuilding 패턴 완성 - Lisp 전통(Paul Graham, Peter Seibel, Peter Norvig)과 Peter Naur의 Programming as Theory Building 통합

  • MetaphorThinking 패턴 완성 - Lakoff & Johnson의 은유, Hofstadter & Sander의 유추, Peirce의 가추를 통합한 인지적 삼위일체

  • WorkingFirst 패턴 완성 - Kent Beck, Fred Brooks, Chris Argyris, Michael Polanyi 통합, 주니어의 완벽주의 vs 시니어의 탐색적 접근, epistemology of making

  • NamesAsDesign 패턴 완성 - Phil Karlton, Martin Fowler, Ward Cunningham, Eric Evans의 Ubiquitous Language 통합, 문맥에 embedding된 이름의 관계적 품질

  • TinyResearch 패턴 완성 - 셜록 홈즈의 탐정적 지식 수집, 중용의 일일신, 호기심의 선순환, 지식의 복리 효과 통합

  • ArtisanMind 패턴 완성 - 과학(Why) vs 기예(How), 유리 장인의 비유, 베이지안 접근, 해커 마인드 통합

  • 3단계 구현 전략 수립
  • Foundation 레벨 우선순위 확정
  • Phase 1 Foundation 패턴 10개 완성 (목표: 5-6개)

Lessons Learned

  • 전체 패턴 목록을 먼저 정리하는 것이 중요
  • 스토리 우선 접근법의 효과 확인
  • 패턴 간 연결 관계의 복잡성 인식
  • 실제 경험과 일기의 통찰을 패턴에 통합하는 것의 가치
  • 인지과학과 철학의 통찰을 프로그래밍 패턴에 연결하는 것의 깊이


CategoryAiGardenProject CategoryPatternLanguage

AiGarden/ToJuniorsPatternLanguage (last edited 2025-12-31 03:35:40 by 정수)