6.4 KiB
6.4 KiB
id, title, category, status, source_trust_level, verification_status, created_at, updated_at, tags, tech_stack, applied_in, aliases
| id | title | category | status | source_trust_level | verification_status | created_at | updated_at | tags | tech_stack | applied_in | aliases | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| quality-pair-programming | Pair Programming — Driver / Navigator / Remote | Coding | draft | B | conceptual | 2026-05-09 | 2026-05-09 |
|
|
|
Pair Programming
둘이 한 keyboard. Code quality + knowledge transfer + 학습. Driver/Navigator + remote (VSCode Live Share / Tuple). 큰 / 복잡 / 새 영역 효과적.
📖 핵심 개념
- Driver: 키보드 + 작은 step.
- Navigator: 큰 그림 + review.
- Swap: 매 15-20 min.
- Mob: 3+ 명 (Ensemble).
💻 코드 패턴
시작 ritual
1. 목표 합의 ("왜 pair?")
2. Time box (1-2 hour)
3. Driver 정함
4. 시작
Driver / Navigator 책임
Driver:
- 입력 (keyboard)
- Implementation 의 작은 step
- Naming / 작은 결정
Navigator:
- 다음 step 생각
- "여기서 X 가 빠짐"
- Edge case 발견
- Quality / pattern
Strong-style pairing (Llewellyn Falco)
"For the idea to go from your head into the keyboard,
it must go through someone else's hands."
Navigator 가 의도 → Driver 가 implement.
역할 swap 없이.
→ Pure transfer.
Ping-pong (TDD)
1. A: red test
2. B: green code
3. B: red test
4. A: green code
...
→ TDD + pair.
둘 다 active engagement.
Swap rate
15-20 min: 일반.
5 min: rapid (작은 task).
30+ min: 1 명 dominant — bad.
→ Pomodoro 같은 timer.
Mob programming (3+ 명)
1 keyboard, 모두 watching.
매 5-10 min driver swap.
Whole team learning.
→ 주로 1 day / week.
When to pair
✅ 새 feature design
✅ 복잡 bug
✅ Junior onboarding
✅ Production 위험 변경
✅ 새 기술 학습
✅ Critical refactor
❌ 단순 작업
❌ 둘 다 모름
❌ 둘 다 피곤
❌ Personality conflict
Remote pair tools
1. VS Code Live Share — built-in
2. Tuple — Mac, low-latency
3. Pop / CodeTogether
4. Jetbrains Code With Me
5. Zoom screen share + voice (basic)
VS Code Live Share
Host:
- Cmd+Shift+P → "Live Share: Start"
- Share link
Guest:
- Click link
- Same files / cursor / debug
→ Free + 통합.
Tuple (Mac, paid, best UX)
- Low-latency screen
- Both keyboards
- Voice clear
- "Shoulder tap"
→ Real-time pair feel.
Audio quality (critical)
- Mic 좋음 + headphone (echo cancel)
- 조용한 환경
- Voice clear
→ Cheap mic = friction.
Etiquette
1. Listening over talking
2. "Yes and..." over "no"
3. Frequent driver swap
4. Break (Pomodoro)
5. 한 명 dominate X
6. Personal preference 의견 X (fact / pattern)
When pair fails
신호:
- 한 명 만 talk
- Silence (장시간)
- Frustration
- "Just let me do it"
해결:
- Take break
- Reset goal
- Try strong-style
- 또는 split + sync later
Pair fatigue
Pair = 정신 강도 높음.
2-4 hour / day max.
→ Solo time + pair time mix.
Junior + Senior pair
Junior driver = 학습.
Senior 가 patient — guide question.
"What if X?"
"What error case 가 있을까?"
→ 답 X — 질문.
Junior + Junior pair
둘 다 새 시도 — 위험.
해결:
- Senior available (ask)
- 작은 task
- Frequent commit + review
Senior + Senior pair
복잡 / critical task.
빠른 상호 review.
큰 architectural decision.
→ Most efficient pair.
Pair vs solo
Pair:
+ Quality (built-in review)
+ Knowledge sharing
+ 학습
- 2x time (단순 task)
- Energy intensive
Solo:
+ Deep focus
+ Faster (단순)
- Knowledge silo
- No real-time review
→ Mix.
Hybrid: pair design + solo implement
30 min pair: design + interface.
2 hour solo: implementation.
30 min pair: review + integrate.
→ Pair 의 가치 + solo 의 효율.
Code review vs pair
Pair: real-time, learn together.
Review: async, 더 깊은 think.
→ 다른 가치. 둘 다.
Mob programming benefit
- 모두 학습
- 모두 ownership
- Knowledge sharing 강
- Bus factor 0
비용:
- 5 명 × 4 hour = 20 hour
- Single output
→ 학습 prioritize 시 가치.
Ensemble (modern mob)
모든 팀이 1 task on 1 keyboard.
"Driver doesn't think, navigator doesn't type."
Swap 매 4 min.
→ Woody Zuill 가 popularize.
매일 / 매주 1 day.
Pair manifesto / norms
1. We commit to pair (둘 다 attention)
2. We keep it small (작은 step)
3. We rotate driver (15-20 min)
4. We respectful disagree
5. We celebrate solutions
→ Team agreement.
Async pair (timezones)
Code share + comment / video:
- 1 person 가 work + record
- 2 person 가 watch + comment
- Sync briefly daily
→ Imperfect but possible.
Track pair time
- Whose pair? (week 별)
- 어떤 task?
- 효과?
→ 정기 retro.
Pair 가 productivity (debate)
Pair:
+ Output 가 less than 2x BUT
+ Quality higher
+ Learning faster
+ Bus factor lower
+ Less rework
→ Long-term productivity ↑.
Pair onboarding (new hire)
Week 1: Pair with senior (mentor)
Week 2: Pair with peer
Week 3+: Mostly solo + occasional pair
→ Strong onboarding.
Tools for pair-friendly
- Conventional naming (모두 이해)
- Comments (즉시 context)
- Small commits (clear progress)
- Test first (shared understanding)
- Monorepo (open code)
Anti-pattern: silent pair
"같이 앉아있지만 묵묵부답"
= solo + 추가 person.
해결:
- 매 5 min "what are you thinking?"
- Strong-style force conversation
- Frequent swap
🤔 의사결정 기준
| 상황 | 추천 |
|---|---|
| Junior onboarding | Pair (senior + junior) |
| 복잡 bug | Pair |
| 새 feature design | Pair (또는 mob) |
| 단순 작업 | Solo |
| 큰 architecture | Mob |
| Critical security | Pair |
| Quick prototype | Solo |
❌ 안티패턴
- 한 명 dominate (90% time driver): 다른 사람 학습 X.
- No swap: fatigue + 한 perspective.
- Silent pair: solo + person.
- Audio bad: friction.
- All-day pair: burnout. 2-4 hour max.
- Strong personality 매 day pair: clash.
- Pair 의 metric (output, line): 의미 없음.
🤖 LLM 활용 힌트
- 새 기술 / 복잡 = pair.
- 매 15-20 min swap.
- Tuple / Live Share remote.
- Strong-style 가 powerful.