Files
2nd/10_Wiki/Topic_Programming/AI_and_ML/Extreme-Programming-XP.md
T
Antigravity Agent 9148c358d0 docs(10_Wiki): 위키 전체 재구성 — Topic_* 폴더를 4개 카테고리로 통합 + 대규모 중복 제거
Topic_Agent/Topic_Blog/Topics/Topics_Biz/Topics_Meeting/Topics_Rag의 마크다운 지식 문서를
Topic_General/Topic_Programming/Topic_Graphic/Topic_Business 4개 카테고리로 재분류.

- 중복 제거: frontmatter의 status:duplicate/merged + duplicate_of/redirect_to 필드로
  자기 자신을 중복으로 선언한 리다이렉트 stub 1032개 제거, 완전 동일 내용 파일 472개 제거,
  동일 파일명·다른 내용 충돌 시 더 큰(완전한) 버전만 유지(162개 제거) — 총 1639개 중복 제거.
- 분류: 폴더 단위로 명확한 항목(AI_and_ML/Coding/Architecture 등 → Programming,
  Comfyui/Visual_Effects → Graphic, Topics_Biz/Topics_Meeting/사업 등 → Business,
  Poetic_Blog_Writing/창의성/Game_Design 등 → General)은 폴더 우선순위로,
  나머지 혼재 폴더(Topic_Agent/Topic_Blog/Topics 루트/Thinking & Reasoning/Other/UI_UX_Assets)는
  title/tags 키워드 스코어링으로 파일 단위 분류(불명확한 경우 General로 폴백).
  원본 폴더명은 "From_*" 서브폴더로 보존해 추적 가능성 유지.
- 최종 배치: Programming 2784 / General 1608 / Graphic 285 / Business 249 = 4926개 문서.
- 에이전트 운영 상태(.astra/.agent/.obsidian/sessions/memory/_company/docs/lessons/_shared/src)는
  지식 콘텐츠가 아니므로 재분류 대상에서 제외하고 원위치 유지.
- Topics/Topic_email(상위 보호 폴더 Topic_email과 파일명 100% 중복) 삭제 — 보호 폴더 자체는 미변경.
- 완전히 비게 된 Topic_Agent/Topic_Blog/Topics_Biz/Topics_Rag 폴더 제거.
2026-07-05 00:33:48 +09:00

5.8 KiB

id, title, category, status, canonical_id, aliases, duplicate_of, source_trust_level, confidence_score, verification_status, tags, raw_sources, last_reinforced, github_commit, tech_stack
id title category status canonical_id aliases duplicate_of source_trust_level confidence_score verification_status tags raw_sources last_reinforced github_commit tech_stack
wiki-2026-0508-extreme-programming-xp Extreme Programming (XP) 10_Wiki/Topics verified self
XP
Beck XP
pair programming
TDD
continuous integration
refactoring
none A 0.96 applied
agile
xp
tdd
pair-programming
ci
software-engineering
beck
2026-05-10 pending
language applicable_to
Universal
Agile
Software Process

Extreme Programming (XP)

매 한 줄

"매 best practice 의 의 의 의 extreme 의 turn". Kent Beck 1999. 매 TDD, 매 pair, 매 CI, 매 refactoring, 매 simple design. 매 modern: 매 XP 의 practices 의 mainstream — 매 XP 의 brand 의 fade, 매 spirit 의 retain (DevOps, trunk-based, AI-paired).

매 핵심

매 12 practices

  1. Planning game (story points).
  2. Small releases.
  3. Metaphor.
  4. Simple design (YAGNI).
  5. Testing (TDD).
  6. Refactoring.
  7. Pair programming.
  8. Collective ownership.
  9. Continuous integration.
  10. 40-hour week.
  11. On-site customer.
  12. Coding standards.

매 5 values

  • Communication, Simplicity, Feedback, Courage, Respect.

매 modern legacy

  • Trunk-based development.
  • CI/CD.
  • TDD (still controversial).
  • AI-paired (Copilot, Cursor) = modern pair.
  • Mob programming.

💻 패턴

TDD cycle (Red-Green-Refactor)

# 매 1. Red — failing test
def test_email_validate():
    assert validate_email('a@b.com') is True
    assert validate_email('invalid') is False

# 매 2. Green — minimum
def validate_email(email):
    return '@' in email

# 매 3. Refactor — pattern
import re
def validate_email(email):
    return bool(re.match(r'^[^\s@]+@[^\s@]+\.[^\s@]+$', email))

Pair programming roles

driver:
  - types code
  - tactical focus
  - explains as goes
navigator:
  - reviews + thinks ahead
  - strategic
  - catches bugs / typos
rotation: every 25 minutes

Mob programming

mob:
  size: 3-5 people
  driver_rotation: 5-10 min
  laptop: single
  goal: continuous learning + team alignment

CI pipeline

on: { push: { branches: [main] } }
jobs:
  test:
    steps:
      - uses: actions/checkout@v4
      - run: npm ci
      - run: npm test
      - run: npm run lint

Story (planning game)

## Story: User can reset password

### As a user
I want to reset my password
So that I can regain access

### Acceptance criteria
- [ ] Email field validates format
- [ ] Confirmation email sent
- [ ] Token expires after 1 hour
- [ ] Old password invalidated

### Estimate: 3 points

Refactor — Extract Method

// 매 before
function processOrder(order) {
  // 매 20 lines mixing validation + calculation + persist
}

// 매 after
function processOrder(order) {
  validate(order);
  const total = calculateTotal(order);
  persist({ ...order, total });
}

Simple design (YAGNI)

// 매 ❌ premature abstraction
class GenericRepository<T, K, ...> { ... }

// 매 ✅ simple
class UserRepository {
  async find(id: string): Promise<User | null> { ... }
  async save(u: User): Promise<void> { ... }
}
// 매 abstract 매 매 3rd similar repo

Continuous integration (trunk-based)

# 매 short-lived branch (< 1 day)
git checkout -b feat/quick-fix
# 매 work
npm test
git add -p; git commit
git push
# 매 PR → review → merge → CI deploy

TDD with AI pair

# 매 modern XP: AI as pair
# 매 driver: human writes test
def test_calculate_discount():
    assert discount(100, 'STUDENT') == 10
    assert discount(100, 'NONE') == 0

# 매 navigator (AI): suggests implementation
def discount(amount, code):
    rules = {'STUDENT': 0.1, 'SENIOR': 0.15}
    return amount * rules.get(code, 0)

On-site customer (modern proxy)

modern_equivalent:
  - product_owner: dedicated PM
  - user_research_loop: weekly
  - support_rotation: engineers in support 1d/sprint
  - real_user_feedback: in-app survey + hotjar

Test coverage gate

# 매 fail PR if coverage drops
- run: npm run coverage
- run: |
    pct=$(jq '.total.lines.pct' coverage/coverage-summary.json)
    if (( $(echo "$pct < 80" | bc -l) )); then exit 1; fi

Refactoring catalog (Fowler)

// 매 Inline Variable
// before
const result = calculate(); return result;
// after
return calculate();

// 매 Replace Magic Number
const TAX_RATE = 0.08;
return total * (1 + TAX_RATE);

매 결정 기준

상황 Practice
Greenfield All-in XP
Legacy + tests TDD selectively
Solo dev TDD + CI
Distributed team CI + async pair
Scale-up Trunk + feature flags
AI-augmented Copilot + TDD

기본값: 매 modern XP = TDD + CI/CD + trunk-based + pair (or AI-pair) + simple design + small release.

🔗 Graph

🤖 LLM 활용

언제: 매 small team. 매 high-quality requirement. 매 evolving requirement. 언제 X: 매 strict regulatory waterfall.

안티패턴

  • Cherry-pick practices: 매 synergy lose.
  • TDD without refactor: 매 cruft.
  • Pair as overhead: 매 communication 의 ignore.
  • No on-site customer: 매 wrong product.
  • CI without tests: 매 false safety.

🧪 검증 / 중복

  • Verified (Beck XP Explained 1999/2004).
  • 신뢰도 A.

🕓 Changelog

날짜 변경
2026-04-26 XP auto
2026-05-08 Phase 1
2026-05-10 Manual cleanup — 12 practices + 매 TDD / pair / mob / CI / refactor code