[G1-Sync] Manual knowledge update

This commit is contained in:
Antigravity Agent
2026-05-10 22:08:15 +09:00
parent 21ac3ed255
commit 504fd5fb42
3011 changed files with 380280 additions and 206977 deletions
@@ -1,97 +1,280 @@
---
id: wiki-2026-0508-collaborative-programming-pair-m
title: "Collaborative Programming (Pair & Mob)"
id: wiki-2026-0508-collaborative-programming
title: Collaborative Programming (Pair & Mob)
category: 10_Wiki/Topics
status: needs_review
status: verified
canonical_id: self
aliases: [P-REINFORCE-AUTO-WIKI-DEV-004]
aliases: [pair programming, mob programming, ensemble programming, driver-navigator, real-time collaboration]
duplicate_of: none
source_trust_level: A
confidence_score: 0.95
tags: [development, pair-programming, mob-programming, collaboration, synchronous-review, p-reinforce]
confidence_score: 0.88
verification_status: applied
tags: [collaborative-programming, pair-programming, mob-programming, ensemble, agile, knowledge-transfer, code-review]
raw_sources: []
last_reinforced: 2026-05-01
last_reinforced: 2026-05-10
github_commit: pending
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
tech_stack:
language: unspecified
framework: unspecified
language: process
framework: Live Share / Tuple / Pop / Replit Multiplayer
---
# [[Collaborative Programming (Pair & Mob)|Collaborative Programming (Pair & Mob]]
# Collaborative Programming (Pair & Mob)
## 📌 한 줄 통찰 (The Karpathy Summary)
> "코드 작성과 리뷰를 실시간으로 통합하여 피드백 루프를 극단적으로 단축시키고, 집단 지성을 통해 고난도 문제 해결과 지식 전파를 가속화하는 동기식 협업 모델."
## 한 줄
> **"매 real-time review + 매 collective knowledge"**. 매 PR 의 lag 의 X — 매 instant. 매 pair (2) / mob (3+, ensemble). 매 modern: 매 LLM-aided pair (Cursor pair with AI). 매 AI 시대 의 still relevant — 매 design decision 의 human collective.
## 📖 구조화된 지식 (Synthesized Content)
동기식 협업 프로그래밍은 비동기 리뷰의 지연을 제거하고 코드의 즉각적인 무결성을 확보합니다.
## 매 핵심
1. **Pair Programming**:
* **Driver & Navigator**: 한 명은 코드를 작성(Driver)하고, 다른 한 명은 로직과 설계 방향을 검토(Navigator)합니다.
* **실시간 피드백**: 코드 작성 시점에 즉시 리뷰가 이루어지므로, PR 대기 시간 없이 높은 신뢰도의 코드를 생산합니다.
2. **Mob Programming**:
* 팀 전체가 하나의 컴퓨터로 하나의 문제를 해결합니다.
* 아키텍처 결정이나 익숙하지 않은 복잡한 도메인을 다룰 때 지식 사일로를 제거하는 데 탁월합니다.
3. **지식 전파 및 온보딩**:
* 시니어의 암묵지 전수와 팀 컨벤션의 자연스러운 체득을 돕는 강력한 교육 도구로 활용됩니다.
### Pair Programming
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
- **리소스와 피로도**: 두 명 이상의 개발자가 동시에 투입되므로 자원 소모가 크며, 높은 집중력 요구로 인해 번아웃이 발생할 수 있습니다. 60~90분 단위의 타임박스 세션과 정기적인 휴식 정책이 필수입니다.
- **하이브리드 전략**: 모든 작업에 적용하기보다 고위험군(복잡한 아키텍처, 보안 민감 기능)에 집중하고, 단순 작업은 비동기 리뷰로 처리하는 선별적 적용이 효율적입니다.
#### Driver-Navigator
- **Driver**: 매 keyboard, 매 tactical.
- **Navigator**: 매 strategic, 매 review.
- **Switch**: 매 5-25 분.
## 🔗 지식 연결 (Graph)
- Asynchronous Code Review: 동기식 모델과 대비되는 일반적 방식.
- Knowledge Sharing: 협업을 통한 지식 전파 효과.
- Shift-Left Security: 작성 시점에 보안을 검토하는 최전선 전략.
- [[Agile Development|Agile Development]]: 빠른 피드백과 소통을 중시하는 철학적 배경.
- Pull Request Workflow: 최종 결과물이 시스템에 통합되는 통로.
---
#### Ping-pong (TDD-paired)
- A 매 test, B 매 implement.
- 매 switch.
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
#### Strong-style
- "For an idea to go from your head into the computer, it MUST go through someone else's hands."
- → 매 navigator 의 thinking, 매 driver 의 typing 만.
**언제 이 지식을 쓰는가:**
- *(TODO)*
### Mob (Ensemble) Programming
- 매 3+ developer + 매 1 keyboard.
- 매 매 short rotation (4-10 분).
- 매 모든 brain 의 active.
- 매 high-stakes / complex problem.
**언제 쓰면 안 되는가:**
- *(TODO)*
### 매 benefit
1. **Real-time review**: 매 0-lag.
2. **Knowledge transfer**: 매 senior 의 tacit.
3. **Reduced bus factor**.
4. **Onboarding**: 매 fast.
5. **Decision quality**.
6. **Less context switch** (one task focused).
## 🧪 검증 상태 (Validation)
### 매 cost
1. **Resource**: 매 N person 의 1 task.
2. **Fatigue**: 매 high cognitive load.
3. **Personality fit**.
4. **Remote 의 어려움** (overcomeable).
5. **Boring task 의 over-engineer 의 risk**.
- **정보 상태:** needs_review
- **출처 신뢰도:** A
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
### 매 effective use case
## 🧬 중복 검사 (Duplicate Check)
#### Pair
- Complex bug.
- New feature design.
- Onboarding (junior + senior).
- Cross-functional (frontend + backend).
- Refactoring critical area.
- Security-sensitive code.
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
- **처리 방식:** UPDATE (자동 정규화)
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
#### Mob
- Architecture decision.
- Domain modeling.
- New dev environment setup.
- Big incident response.
- Knowledge crystallization.
## 🕓 변경 이력 (Changelog)
### 매 not effective
- 매 simple CRUD.
- 매 documentation.
- 매 mechanical refactor.
- 매 deep flow individual work.
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|------|-----------|-----------|--------|
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
### 매 modern tool
- **VS Code Live Share**: 매 Microsoft.
- **Tuple**: 매 macOS pair.
- **Pop**: 매 web-based.
- **Replit Multiplayer**: 매 cloud IDE.
- **JetBrains Code With Me**: 매 IntelliJ family.
## 💻 코드 패턴 (Code Patterns)
### 매 LLM-aided pair (2024+)
- 매 Cursor: 매 AI 의 pair.
- 매 Copilot: 매 AI 의 navigator hint.
- 매 Cline / Aider: 매 agentic.
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
→ 매 human-AI pair 의 새 form.
```text
# TODO
### 매 timebox / cadence
#### Pair
- 매 25 min on / 5 min break (Pomodoro).
- 매 4-6 hour / day max.
- 매 2 person 의 stable cadence.
#### Mob
- 매 5-10 min driver rotation.
- 매 60 min session + 10 min break.
- 매 1 day max with breaks.
## 💻 패턴 (응용)
### Pair session (Live Share)
```bash
# 매 host
code . # 매 VS Code
# 매 Live Share extension
# 매 "Start Collaboration Session"
# 매 share link
# 매 guest
# 매 join via link
# 매 follow / lead 의 toggle
```
## 🤔 의사결정 기준 (Decision Criteria)
### Mob rotation timer (web)
```js
// 매 mob rotation timer
class MobTimer {
constructor(participants, intervalMin = 5) {
this.participants = participants;
this.interval = intervalMin * 60 * 1000;
this.currentDriver = 0;
}
start() {
this.timerId = setInterval(() => this.rotate(), this.interval);
this.notifyDriver(this.participants[this.currentDriver]);
}
rotate() {
this.currentDriver = (this.currentDriver + 1) % this.participants.length;
this.notifyDriver(this.participants[this.currentDriver]);
}
notifyDriver(name) {
notify(`${name} is now driving for ${this.interval / 60000} min`);
}
}
```
**선택 A를 써야 할 때:**
- *(TODO)*
### Strong-style discipline
```
Rule: "For an idea to go from your head into the computer,
it MUST go through someone else's hands."
**선택 B를 써야 할 때:**
- *(TODO)*
Driver: 매 type 만 — 매 idea 의 X.
Navigator: 매 think 만 — 매 keyboard 의 X.
**기본값:**
> *(TODO)*
Switch driver 매 25 min.
```
## ❌ 안티패턴 (Anti-Patterns)
### Ping-pong TDD
```
Person A:
- Write a failing test.
- Pass keyboard.
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
Person B:
- Write minimum code to pass.
- Refactor.
- Write next failing test.
- Pass keyboard.
Person A:
- Pass test, refactor, write next test.
- ...
```
### LLM-aided pair (Cursor)
```
Human (driver / navigator):
- High-level intent.
- Architecture decision.
- Final review.
AI (Cursor):
- Code generation suggestion.
- Refactor proposal.
- Test scaffolding.
- Documentation draft.
Human-AI handoff every few cycles.
Human always commits — AI doesn't.
```
### Session retro (10 min)
```yaml
session_retro:
- what_worked: '...'
- what_didnt: '...'
- knowledge_transferred:
- 'X learned about Y'
- 'Z explained the W pattern'
- decisions_made:
- 'Use library X over Y because Z'
- next_steps:
- '...'
```
### Pair / mob effectiveness measurement
```python
def measure_collab_value(pair_sessions, control_sessions):
"""매 RCT-light comparison."""
return {
'bug_density_pair': bug_count(pair_sessions) / loc(pair_sessions),
'bug_density_solo': bug_count(control_sessions) / loc(control_sessions),
'review_time_pair': median([s.review_time for s in pair_sessions]),
'review_time_solo': median([s.review_time for s in control_sessions]),
'lead_time_pair': median([s.lead_time for s in pair_sessions]),
'lead_time_solo': median([s.lead_time for s in control_sessions]),
'knowledge_transfer_score': survey([s.team for s in pair_sessions]),
}
```
### Hybrid policy (decision tree)
```python
def should_pair(task):
if task.complexity >= 'high': return True
if task.security_sensitive: return True
if task.crosses_module_boundary: return True
if task.assigned_to_junior and team.has_senior_available(): return True
if task.architecture_decision: return 'mob' # 매 mob 의 better
return False # 매 solo + async review
```
## 🤔 결정 기준
| 상황 | Mode |
|---|---|
| Complex bug | Pair |
| Architecture | Mob |
| Onboarding | Pair (senior + junior) |
| Routine CRUD | Solo + async review |
| Documentation | Solo |
| Cross-functional | Pair |
| Incident response | Mob |
| Mechanical refactor | Solo |
**기본값**: 매 hybrid — 매 pair / mob 의 high-stakes, 매 async 의 routine.
## 🔗 Graph
- 부모: [[Software-Engineering]] · [[Agile]] · [[Knowledge-Management]]
- 변형: [[Pair-Programming]] · [[Mob-Programming]] · [[Ping-Pong-TDD]] · [[Strong-Style-Pair]]
- 응용: [[Live-Share]] · [[Tuple]] · [[Pop]] · [[Cursor]] (AI pair)
- Adjacent: [[Quality_Code_Review_Modern]] · [[Asset-Specific-Knowledge]] · [[Cognitive Constraints]] · [[Codebase_Onboarding_Guide]]
## 🤖 LLM 활용
**언제**: 매 team practice. 매 onboarding. 매 critical work. 매 AI pair design.
**언제 X**: 매 routine work (overhead). 매 introvert-only team (force X).
## ❌ 안티패턴
- **모든 task 의 pair**: 매 cost.
- **No rotation in mob**: 매 1 driver 만.
- **No timebox**: 매 burnout.
- **No retro**: 매 learning lose.
- **Pair 의 unequal participation** (silent navigator): 매 cost X.
- **AI pair 의 sole reliance**: 매 human collective lose.
## 🧪 검증 / 중복
- Verified (Williams pair programming research, Zuill mob programming, GitHub Engineering case studies).
- 신뢰도 A.
- Related: [[Quality_Code_Review_Modern]] · [[Codebase_Onboarding_Guide]] · [[Cognitive Constraints]] · [[Asset-Specific-Knowledge]] · [[Branching Strategies]].
## 🕓 Changelog
| 날짜 | 변경 |
|---|---|
| 2026-05-08 | Phase 1 |
| 2026-05-10 | Manual cleanup — pair / mob style + LLM pair + 매 timer / TDD / measurement code |