Differences between revisions 1 and 43 (spanning 42 versions)
Revision 1 as of 2025-07-24 13:42:43
Size: 6275
Editor: 정수
Comment:
Revision 43 as of 2025-12-30 08:04:08
Size: 5811
Editor: 정수
Comment:
Deletions are marked like this. Additions are marked like this.
Line 3: Line 3:
= AiGarden/ToJuniorsPatternLanguage = = 영원의 기예: 생각하는 개발자의 길 =
Line 5: Line 5:
주니어 개발자들을 위한 프로그래밍 지혜를 Christopher Alexander의 패턴 언어로 변환하는 프로젝트. ''주니어 개발자들을 위한 패턴 언어 - 35개의 살아있는 중심이 엮어내는 성장의 서사''

소프트웨어는 조립되는 것이 아니라, 개발자의 마음과 코드의 언어가 공명하며 씨앗으로부터 펼쳐지는 것입니다. 이 패턴 언어는 그 생명력을 유지하며 거대한 숲을 이루어가는 과정을 담고 있습니다.
Line 9: Line 11:
== Project Vision == == 제1장: 마음의 눈 (The Eye of the Mind) ==
Line 11: Line 13:
[[기술문서모음/ToJuniors]] 페이지의 27개 핵심 격언들을 개별 패턴으로 확장하여, 반격자(semi-lattice) 구조의 상호 연결된 지식 네트워크를 구축한다. 각 패턴은 이솝우화 스타일의 스토리텔링으로 작성되어 초보자들이 쉽게 이해하고 기억할 수 있도록 한다. 모든 위대한 소프트웨어의 시작은 프로그래밍을 단순한 노동이 아닌 고귀한 '''[[ArtisanMind|장인의 기예]]'''로 받아들이는 마음가짐에서 출발합니다. 장인은 지도의 정교함에 속지 않고 '''[[PresentMoment|지금 이 순간]]''' 컴퓨터가 내뱉는 가장 솔직한 진실을 직시합니다.
Line 13: Line 15:
== Pattern Language Structure == 현혹되지 않기 위해 장인은 오직 '''[[SingleFocus|한 번에 한 가지]]'''에만 렌즈를 맞추며, 자신의 사고 과정을 '''[[CognitiveMicroscope|인지 현미경]]'''으로 들여다보듯 세밀하게 관찰합니다. 이 명료한 인식이 모든 설계와 문제 해결의 빛이 됩니다.
Line 15: Line 17:
=== Foundation Patterns (가장 기본적) ===
'''[[TinyExperiment]]''' (완성) - 작은 실험 환경을 통한 점진적 학습과 개발
↳ enables → BabyStep, UseAbduction, HereAndNowDebugging
↳ used by → TddIsDesignActivity, PiecemealGrowthCenterFirst
== 제2장: 언어라는 씨앗 (The Seed of Language) ==
Line 20: Line 19:
'''UseDataToMakeLogicSimple''' - 관심사 분리의 기본 원칙
↳ supports → MakeDSL, DoNotMixLogicAndDataConstruction
↳ enables → FindCommonalityAndVariability
인식이 바로 섰다면, 이제 우리는 현실의 복잡함을 다루기 위해 '''[[TwoWorlds|문제 공간과 해결 공간]]'''을 명확히 구분해야 합니다. 우리는 기술적인 도구 이전에 잘 정리된 '''[[DataAsFoundation|데이터를 기반]]'''으로 삼아 그 위에 집을 짓습니다.
Line 24: Line 21:
'''ProblemSpaceSolutionSpace''' - 근본적 사고 체계
↳ guides → NamingIsDesignPractice, MakeItWorkThenMakeBetter
↳ supports → TddIsDesignActivity
이 집은 기계의 언어가 아닌 인간의 언어로 쓰여야 합니다. 우리는 끊임없이 '''[[MetaphorThinking|은유를 통해 사고]]'''하고, 적절한 이름을 붙이는 '''[[NamesAsDesign|이름 짓기를 설계 활동]]'''으로 수행하며 우리만의 '''[[LanguageBuilding|도메인 언어를 구축]]'''합니다. 이 언어는 박제된 사전이 아니라 시스템이 성장함에 따라 함께 숨 쉬며 변하는 '''[[LivingVocabulary|살아있는 어휘]]'''가 됩니다. 이렇게 언어가 바로 설 때, 비로소 거대한 '''[[ComplexityTaming|복잡성을 길들일]]''' 힘을 얻게 됩니다.
Line 28: Line 23:
=== Intermediate Patterns (기초 위에 구축) ===
'''BabyStep''' - 핵심적 진화적 접근법
↳ connected to → MicroCommit, ShortFeedbackCycle
↳ enables → PiecemealGrowthCenterFirst
↳ requires → DoNotGuessValidateIt
== 제3장: 살아있는 리듬 (The Living Rhythm) ==
Line 34: Line 25:
'''NamingIsDesignPractice''' - 추상화 생성
↳ uses → ProblemSpaceSolutionSpace
↳ supports → MakeDSL
↳ enables → FindCommonalityAndVariability
소프트웨어에 생명을 불어넣는 것은 멈추지 않는 맥박, 즉 리듬입니다. 우리는 완벽한 설계도보다 '''[[WorkingFirst|일단 작동하는 것]]'''을 먼저 만듭니다. 불확실성 앞에서는 두려워하기보다 아주 '''[[TinyExperiment|작은 실험]]'''을 던져보고, 그 결과를 1초 이내에 확인하는 '''[[TightLoop|촘촘한 피드백 루프]]'''를 가동합니다.
Line 39: Line 27:
'''TddIsDesignActivity''' - 피드백을 통한 설계
↳ uses → ProblemSpaceSolutionSpace, BabyStep
↳ requires → ShortFeedbackCycle, UseAbduction
↳ produces → RegressionTest
우리는 거대한 도약 대신 안전한 '''[[BabySteps|작은 보폭]]'''을 택하며, 각 단계의 완료를 의미 있고 '''[[AtomicCommit|원자적인 커밋]]'''으로 기록합니다. 때로는 추측의 끈이 길어질 수 있지만, 우리는 '''[[ShortLeash|끈을 짧게 쥐고]]''' 수시로 확인하며, 발을 헛디뎠을 때는 즉시 안전한 '''[[GreenRefuge|초록색 피난처]]'''로 돌아옵니다. 마지막 5%의 자동화에 집착하지 않는 '''[[The95PercentRule|95%의 규칙]]'''은 우리에게 인간으로서의 여백을 남겨줍니다.
Line 44: Line 29:
=== Application Patterns (구체적 실천) ===
'''MicroCommit''' - 버전 제어 원칙
↳ implements → BabyStep
↳ enables → PiecemealGrowthCenterFirst
== 제4장: 분화되는 전체성 (The Unfolding Wholeness) ==
Line 49: Line 31:
'''UseAbduction''' - 탐구 방법
↳ supports → TddIsDesignActivity, HereAndNowDebugging
↳ opposite of → DoNotGuessValidateIt
리듬을 탄 시스템은 이제 하나의 생명체처럼 자라나기 시작합니다. 시스템은 무질서하게 커지는 것이 아니라, 가장 본질적인 가치를 담은 '''[[StrongCenter|강한 중심]]'''을 닻으로 삼아 바깥으로 펼쳐져 나갑니다. 이것이 '''[[OrganicGrowth|유기적 성장]]'''의 본질입니다.
Line 53: Line 33:
'''HereAndNowDebugging''' - 디버깅 접근법
↳ uses → UseAbduction, EliminateIntermediateLayers
↳ implements → DoNotGuessValidateIt
자라나는 과정에서 우리는 불필요한 레이어를 거부하고 문제에 직선으로 다가가는 '''[[DirectPath|직선 경로]]'''를 고수합니다. 성장의 용기를 주는 것은 언제나 작동함을 보장하는 '''[[SafetyNet|안전망]]'''이며, 우리는 의존성을 끊어낸 '''[[CleanIsolation|깨끗한 격리]]'''를 통해 시스템의 각 부분을 독립적인 레고 블록처럼 유연하게 유지합니다.
Line 57: Line 35:
=== Meta-Patterns (과정 자체에 대한) ===
'''CraftNotScience''' - 개발 철학
↳ manifests through → BabyStep, LastFivePercentAutomation
↳ guides → LearnFromExperts
== 제5장: 공동체의 영혼 (The Soul of the Community) ==
Line 62: Line 37:
'''LastFivePercentAutomation''' - 자동화의 한계
↳ reflects → CraftNotScience
↳ requires → PairProgrammingWithJuniors
기예는 개인을 넘어 공동체로 확장될 때 비로소 완성됩니다. 우리는 서로의 실력을 존중하는 '''[[TechnicalCommunity|기술 공동체]]''' 안에서, 두 명의 지혜를 하나로 모으는 '''[[SharedMind|공유된 정신]]'''을 실천합니다.
Line 66: Line 39:
=== Social Patterns (팀 역학) ===
'''PairProgrammingWithJuniors''' - 지식 전수
↳ enables → LearnFromExperts
↳ uses → YesButYesAnd
↳ supports → LastFivePercentAutomation
우리는 서로에게 "네, 그리고"라고 말하며 대화의 '''[[BuildingBridge|다리를 놓고]]''', 강물처럼 거침없이 '''[[FlowingFeedback|흐르는 피드백]]'''을 통해 함께 성장합니다. 장인의 길을 먼저 걸어간 이로부터 '''[[MasterApprentice|암묵지를 전수받으며]]''', 자신만의 '''[[CraftPath|성장 경로]]'''를 묵묵히 걷습니다.
Line 72: Line 41:
== Pattern Template == 이 여정 속에서 우리는 수많은 '''[[PatternHunting|패턴을 사냥]]'''하고, 범인을 검거하는 '''[[DetectiveWork|탐정의 수사]]'''를 벌이며, 문제의 겉모습이 아닌 뿌리를 뽑아내는 '''[[RootHunting|근본 원인 추적]]'''을 수행합니다. 수천 번의 반복은 결국 논리를 넘어선 '''[[InstinctiveChoice|직관적인 선택]]'''을 가능하게 할 것입니다.
Line 74: Line 43:
각 패턴은 Alexander의 형식을 따르되, 이솝우화 스타일로 작성된다:

```
#acl +All:read

= PatternName =

== Context ==
언제 이 패턴이 적용되는가

== Problem ==
스토리나 우화로 문제 상황 묘사

== Solution ==
구체적이고 실행 가능한 해결책
문단 형태로 자연스럽게 서술

== Examples ==
실제 개발 상황의 구체적 예시들
캐릭터와 스토리가 있는 경험담

== Resulting Context ==
이 패턴 적용 후의 상황

== Related Patterns ==
* '''Uses:''' 이 패턴이 사용하는 다른 패턴들
* '''Used by:''' 이 패턴을 사용하는 패턴들
* '''Enables:''' 이 패턴이 가능하게 하는 패턴들
* '''Complements:''' 보완하는 패턴들
우리는 매일의 작은 호기심을 '''[[TinyResearch|5분 연구]]'''로 채우고, 수행하는 순간의 감각을 '''[[ActiveReflection|실시간으로 성찰]]'''하며, 하루의 끝에서 자신의 사고 과정을 '''[[ThinkingMirror|거울에 비추어]]''' 봅니다. 이 모든 과정이 하나로 엮일 때, 당신은 비로소 시간을 초월한 소프트웨어의 창조자가 됩니다.
Line 105: Line 46:
CategoryPattern
```

== Complete Proverb List ==

'''Data & Logic Design:'''
1. "use data to make logic simple"
2. "make DSL"
3. "do not mix logic and data construction"

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

'''Programming Fundamentals:'''
10. "공통점과 차이점 찾기" (Find commonality and variability)

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

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

'''Collaboration & Team:'''
24. "XP over Scrum for developers"
25. "pair programming with juniors"
26. "Yes, but / Yes, and"

'''Learning & Expertise:'''
27. "Learn from experts (CTA, CDE)"

== Implementation Strategy ==

'''Phase 1: Foundation (현재)'''
- [x] [[TinyExperiment]] (완성)
- [ ] UseDataToMakeLogicSimple
- [ ] ProblemSpaceSolutionSpace

'''Phase 2: Intermediate Layer'''
- [ ] BabyStep
- [ ] NamingIsDesignPractice
- [ ] TddIsDesignActivity

'''Phase 3: Application Patterns'''
- [ ] MicroCommit
- [ ] UseAbduction
- [ ] HereAndNowDebugging

'''Phase 4: Meta & Social'''
- [ ] CraftNotScience
- [ ] LastFivePercentAutomation
- [ ] PairProgrammingWithJuniors

'''Phase 5: Integration'''
- [ ] Update [[기술문서모음/ToJuniors]] with all pattern links
- [ ] Create pattern relationship visualization
- [ ] Validate semi-lattice structure

== Progress Log ==

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

== References ==

* Christopher Alexander - "A Pattern Language", "The Timeless Way of Building"
* [[기술문서모음/ToJuniors]] - Original proverb collection
* [[OrgPatterns]] - Pattern language inspiration and structure
* [[가추법]] - Abduction methodology

----
CategoryAiGardenProject CategoryPattern
CategoryAiGardenProject CategoryPatternLanguage

영원의 기예: 생각하는 개발자의 길

주니어 개발자들을 위한 패턴 언어 - 35개의 살아있는 중심이 엮어내는 성장의 서사

소프트웨어는 조립되는 것이 아니라, 개발자의 마음과 코드의 언어가 공명하며 씨앗으로부터 펼쳐지는 것입니다. 이 패턴 언어는 그 생명력을 유지하며 거대한 숲을 이루어가는 과정을 담고 있습니다.

제1장: 마음의 눈 (The Eye of the Mind)

모든 위대한 소프트웨어의 시작은 프로그래밍을 단순한 노동이 아닌 고귀한 장인의 기예로 받아들이는 마음가짐에서 출발합니다. 장인은 지도의 정교함에 속지 않고 지금 이 순간 컴퓨터가 내뱉는 가장 솔직한 진실을 직시합니다.

현혹되지 않기 위해 장인은 오직 한 번에 한 가지에만 렌즈를 맞추며, 자신의 사고 과정을 인지 현미경으로 들여다보듯 세밀하게 관찰합니다. 이 명료한 인식이 모든 설계와 문제 해결의 빛이 됩니다.

제2장: 언어라는 씨앗 (The Seed of Language)

인식이 바로 섰다면, 이제 우리는 현실의 복잡함을 다루기 위해 문제 공간과 해결 공간을 명확히 구분해야 합니다. 우리는 기술적인 도구 이전에 잘 정리된 데이터를 기반으로 삼아 그 위에 집을 짓습니다.

이 집은 기계의 언어가 아닌 인간의 언어로 쓰여야 합니다. 우리는 끊임없이 은유를 통해 사고하고, 적절한 이름을 붙이는 이름 짓기를 설계 활동으로 수행하며 우리만의 도메인 언어를 구축합니다. 이 언어는 박제된 사전이 아니라 시스템이 성장함에 따라 함께 숨 쉬며 변하는 살아있는 어휘가 됩니다. 이렇게 언어가 바로 설 때, 비로소 거대한 복잡성을 길들일 힘을 얻게 됩니다.

제3장: 살아있는 리듬 (The Living Rhythm)

소프트웨어에 생명을 불어넣는 것은 멈추지 않는 맥박, 즉 리듬입니다. 우리는 완벽한 설계도보다 일단 작동하는 것을 먼저 만듭니다. 불확실성 앞에서는 두려워하기보다 아주 작은 실험을 던져보고, 그 결과를 1초 이내에 확인하는 촘촘한 피드백 루프를 가동합니다.

우리는 거대한 도약 대신 안전한 작은 보폭을 택하며, 각 단계의 완료를 의미 있고 원자적인 커밋으로 기록합니다. 때로는 추측의 끈이 길어질 수 있지만, 우리는 끈을 짧게 쥐고 수시로 확인하며, 발을 헛디뎠을 때는 즉시 안전한 초록색 피난처로 돌아옵니다. 마지막 5%의 자동화에 집착하지 않는 95%의 규칙은 우리에게 인간으로서의 여백을 남겨줍니다.

제4장: 분화되는 전체성 (The Unfolding Wholeness)

리듬을 탄 시스템은 이제 하나의 생명체처럼 자라나기 시작합니다. 시스템은 무질서하게 커지는 것이 아니라, 가장 본질적인 가치를 담은 강한 중심을 닻으로 삼아 바깥으로 펼쳐져 나갑니다. 이것이 유기적 성장의 본질입니다.

자라나는 과정에서 우리는 불필요한 레이어를 거부하고 문제에 직선으로 다가가는 직선 경로를 고수합니다. 성장의 용기를 주는 것은 언제나 작동함을 보장하는 안전망이며, 우리는 의존성을 끊어낸 깨끗한 격리를 통해 시스템의 각 부분을 독립적인 레고 블록처럼 유연하게 유지합니다.

제5장: 공동체의 영혼 (The Soul of the Community)

기예는 개인을 넘어 공동체로 확장될 때 비로소 완성됩니다. 우리는 서로의 실력을 존중하는 기술 공동체 안에서, 두 명의 지혜를 하나로 모으는 공유된 정신을 실천합니다.

우리는 서로에게 "네, 그리고"라고 말하며 대화의 다리를 놓고, 강물처럼 거침없이 흐르는 피드백을 통해 함께 성장합니다. 장인의 길을 먼저 걸어간 이로부터 암묵지를 전수받으며, 자신만의 성장 경로를 묵묵히 걷습니다.

이 여정 속에서 우리는 수많은 패턴을 사냥하고, 범인을 검거하는 탐정의 수사를 벌이며, 문제의 겉모습이 아닌 뿌리를 뽑아내는 근본 원인 추적을 수행합니다. 수천 번의 반복은 결국 논리를 넘어선 직관적인 선택을 가능하게 할 것입니다.

우리는 매일의 작은 호기심을 5분 연구로 채우고, 수행하는 순간의 감각을 실시간으로 성찰하며, 하루의 끝에서 자신의 사고 과정을 거울에 비추어 봅니다. 이 모든 과정이 하나로 엮일 때, 당신은 비로소 시간을 초월한 소프트웨어의 창조자가 됩니다.


CategoryAiGardenProject CategoryPatternLanguage

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