xp-practices
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseExtreme Programming (XP) Practices
极限编程(XP)实践
<default_to_action>
When applying XP practices:
- START with practices that give immediate value
- BUILD supporting practices gradually
- ADAPT to your context
- MEASURE results
Core XP Practices (Prioritized):
| Practice | Start Here | Why First |
|---|---|---|
| TDD | ✅ Yes | Foundation for everything |
| Continuous Integration | ✅ Yes | Fast feedback |
| Pair Programming | ✅ Yes | Knowledge sharing |
| Collective Ownership | After CI+TDD | Needs safety net |
| Small Releases | After CI | Infrastructure dependent |
Pairing Quick Start:
Driver-Navigator (Classic):
- Driver: Writes code
- Navigator: Reviews, thinks ahead
- Rotate every 20-30 min
Ping-Pong (with TDD):
A: Write failing test
B: Make test pass + refactor
B: Write next failing test
A: Make test pass + refactor</default_to_action>
<default_to_action>
应用XP实践时:
- 从能带来即时价值的实践入手
- 逐步构建配套支持实践
- 根据自身场景灵活调整
- 衡量实践效果
核心XP实践(优先级排序):
| 实践 | 从这里开始 | 为何优先 |
|---|---|---|
| TDD | ✅ 是 | 所有实践的基础 |
| 持续集成 | ✅ 是 | 快速获得反馈 |
| 结对编程 | ✅ 是 | 知识共享 |
| 集体代码所有权 | 在CI+TDD之后 | 需要安全保障机制 |
| 小版本发布 | 在CI之后 | 依赖基础设施支持 |
结对编程快速入门:
Driver-Navigator(经典模式):
- Driver:编写代码
- Navigator:评审代码、提前规划
- 每20-30分钟轮换一次角色
Ping-Pong(结合TDD):
A:编写失败的测试用例
B:让测试通过 + 重构代码
B:编写下一个失败的测试用例
A:让测试通过 + 重构代码</default_to_action>
Quick Reference Card
快速参考卡片
The Five XP Values
XP的五大价值观
| Value | Meaning | Practice |
|---|---|---|
| Communication | Everyone knows what everyone does | Daily standups, pairing |
| Simplicity | Simplest thing that works | YAGNI, small design |
| Feedback | Get feedback early and often | TDD, CI, short iterations |
| Courage | Tell truth, adapt | Refactor, admit mistakes |
| Respect | Everyone contributes value | Sustainable pace, pairing |
| 价值观 | 含义 | 对应实践 |
|---|---|---|
| 沟通 | 团队成员清晰了解彼此工作 | 每日站会、结对编程 |
| 简单 | 采用最简单可行的方案 | YAGNI原则、轻量化设计 |
| 反馈 | 尽早且频繁获取反馈 | TDD、CI、短迭代周期 |
| 勇气 | 坦诚沟通、灵活适应 | 重构代码、勇于承认错误 |
| 尊重 | 认可每位成员的价值 | 可持续开发节奏、结对编程 |
Core Practices
核心实践
| Practice | Description | Benefit |
|---|---|---|
| Pair Programming | Two devs, one workstation | Quality + knowledge sharing |
| TDD | Red-Green-Refactor | Confidence + design |
| CI | Integrate multiple times/day | Fast feedback |
| Collective Ownership | Anyone can change anything | No bottlenecks |
| Sustainable Pace | 40-hour weeks | Long-term productivity |
| Small Releases | Ship frequently | Risk reduction |
| 实践 | 说明 | 益处 |
|---|---|---|
| 结对编程 | 两名开发者共用一个工作站 | 提升代码质量 + 知识共享 |
| TDD | 红-绿-重构流程 | 增强开发信心 + 优化代码设计 |
| CI | 每日多次集成代码 | 快速获得反馈 |
| 集体代码所有权 | 任何人都可修改任意代码 | 消除瓶颈 |
| 可持续开发节奏 | 每周工作40小时 | 保障长期生产力 |
| 小版本发布 | 频繁交付版本 | 降低风险 |
Pair Programming
结对编程
When to Pair
何时进行结对编程
| Context | Pair? | Why |
|---|---|---|
| Complex/risky code | ✅ Always | Needs multiple perspectives |
| New technology | ✅ Always | Learning accelerator |
| Onboarding | ✅ Always | Knowledge transfer |
| Critical bugs | ✅ Always | Two heads better |
| Simple tasks | ❌ Skip | Not worth overhead |
| Research spikes | ❌ Skip | Pair to discuss findings |
| 场景 | 是否结对 | 原因 |
|---|---|---|
| 复杂/高风险代码 | ✅ 始终结对 | 需要多视角考量 |
| 新技术学习 | ✅ 始终结对 | 加速学习进程 |
| 新成员融入 | ✅ 始终结对 | 知识传递 |
| 关键Bug修复 | ✅ 始终结对 | 集思广益更高效 |
| 简单任务 | ❌ 无需结对 | 投入产出比低 |
| 技术调研 | ❌ 无需结对 | 可在调研后结对讨论结果 |
Pairing Dos and Don'ts
结对编程注意事项
Do:
- ✅ Switch roles every 20-30 min
- ✅ Take breaks together
- ✅ Think out loud
- ✅ Ask questions
- ✅ Keep sessions 2-4 hours max
Don't:
- ❌ Grab keyboard without asking
- ❌ Check phone while pairing
- ❌ Dominate conversation
- ❌ Pair all day (exhausting)
建议做:
- ✅ 每20-30分钟轮换一次角色
- ✅ 一起休息
- ✅ 大声思考(说出思路)
- ✅ 主动提问
- ✅ 单次结对时长控制在2-4小时以内
不要做:
- ❌ 未经询问就抢过键盘
- ❌ 结对时查看手机
- ❌ 主导整个对话
- ❌ 全天都进行结对(容易疲惫)
Ensemble (Mob) Programming
群编程(Mob编程)
Setup: 3+ developers, one screen, rotating driver
[Screen]
↓
[Driver] ← Directions from navigators
↑
[Navigator 1] [Navigator 2] [Navigator 3]Rotation: Driver switches every 5-10 min
Best for:
- Complex problem solving
- Architectural decisions
- Learning new frameworks
- Resolving blockers
配置方式: 3名及以上开发者共用一个屏幕,轮换Driver角色
[屏幕]
↓
[Driver] ← 接收导航者的指令
↑
[导航者1] [导航者2] [导航者3]轮换规则: 每5-10分钟轮换一次Driver
适用场景:
- 复杂问题解决
- 架构决策制定
- 新框架学习
- 障碍排查
Continuous Integration
持续集成
CI Workflow:
1. Pull latest from main
2. Make small change (<2 hrs work)
3. Run tests locally (all pass)
4. Commit and push
5. CI runs tests automatically
6. If fail → fix immediatelyBest Practices:
- Commit frequently (small changes)
- Keep build fast (<10 min)
- Fix broken builds immediately
- Never commit to broken build
CI工作流程:
1. 拉取主分支最新代码
2. 进行小幅修改(耗时<2小时)
3. 本地运行所有测试(确保全部通过)
4. 提交并推送代码
5. CI自动运行测试
6. 若失败 → 立即修复最佳实践:
- 频繁提交(小幅修改)
- 保持构建速度快(<10分钟)
- 立即修复失败的构建
- 绝不向失败的构建提交代码
Four Rules of Simple Design
简单设计四原则
(In priority order)
- Passes all tests - Works correctly
- Reveals intention - Clear, expressive code
- No duplication - DRY principle
- Fewest elements - No speculative code
(按优先级排序)
- 通过所有测试 - 功能正常运行
- 清晰表达意图 - 代码清晰、易懂
- 无重复代码 - 遵循DRY原则
- 最少代码元素 - 不写冗余代码
Agent Integration
Agent集成
typescript
// Agent-human pair testing
const charter = "Test payment edge cases";
const tests = await Task("Generate Tests", { charter }, "qe-test-generator");
const reviewed = await human.review(tests);
await Task("Implement", { tests: reviewed }, "qe-test-generator");
// Continuous integration with agents
await Task("Risk Analysis", { prDiff }, "qe-regression-risk-analyzer");
await Task("Generate Tests", { changes: prDiff }, "qe-test-generator");
await Task("Execute Tests", { scope: 'affected' }, "qe-test-executor");
// Sustainable pace: agents handle grunt work
const agentWork = ['regression', 'data-generation', 'coverage-analysis'];
const humanWork = ['exploratory', 'risk-assessment', 'strategy'];typescript
// Agent-人类结对测试
const charter = "Test payment edge cases";
const tests = await Task("Generate Tests", { charter }, "qe-test-generator");
const reviewed = await human.review(tests);
await Task("Implement", { tests: reviewed }, "qe-test-generator");
// 结合Agent的持续集成
await Task("Risk Analysis", { prDiff }, "qe-regression-risk-analyzer");
await Task("Generate Tests", { changes: prDiff }, "qe-test-generator");
await Task("Execute Tests", { scope: 'affected' }, "qe-test-executor");
// 可持续开发节奏:Agent处理繁琐工作
const agentWork = ['regression', 'data-generation', 'coverage-analysis'];
const humanWork = ['exploratory', 'risk-assessment', 'strategy'];Agent Coordination Hints
Agent协作提示
Memory Namespace
内存命名空间
aqe/xp-practices/
├── pairing-sessions/* - Pair/ensemble session logs
├── ci-metrics/* - CI health metrics
├── velocity/* - Team velocity data
└── retrospectives/* - XP retrospective notesaqe/xp-practices/
├── pairing-sessions/* - 结对/群编程会话日志
├── ci-metrics/* - CI健康指标
├── velocity/* - 团队交付速度数据
└── retrospectives/* - XP回顾会议记录Fleet Coordination
集群协作
typescript
const xpFleet = await FleetManager.coordinate({
strategy: 'xp-workflow',
agents: [
'qe-test-generator', // TDD support
'qe-test-executor', // CI integration
'qe-code-reviewer' // Collective ownership
],
topology: 'parallel'
});typescript
const xpFleet = await FleetManager.coordinate({
strategy: 'xp-workflow',
agents: [
'qe-test-generator', // TDD支持
'qe-test-executor', // CI集成
'qe-code-reviewer' // 集体代码所有权支持
],
topology: 'parallel'
});Common Objections
常见质疑
| Objection | Response |
|---|---|
| "Pairing is 2x slower" | 15% slower writing, 15% fewer bugs, net positive |
| "No time for TDD" | Debugging takes longer than testing |
| "CI is hard to setup" | Start simple: one action, one test |
| "Collective ownership = chaos" | Only without tests + CI |
| 质疑点 | 回应 |
|---|---|
| "结对编程效率减半" | 编写代码慢15%,但Bug减少15%,整体收益为正 |
| "没时间做TDD" | 调试花费的时间比编写测试用例更长 |
| "CI搭建难度大" | 从简单入手:一个动作、一个测试用例 |
| "集体代码所有权会导致混乱" | 只有在没有测试和CI的情况下才会如此 |
Related Skills
相关技能
- tdd-london-chicago - TDD deep dive
- refactoring-patterns - Safe refactoring
- pair-programming - AI-assisted pairing
- tdd-london-chicago - TDD深度解析
- refactoring-patterns - 安全重构
- pair-programming - AI辅助结对编程
Remember
要点回顾
XP practices work as a system. Don't cherry-pick randomly:
- TDD enables collective ownership
- CI enables small releases
- Pairing enables collective ownership
- Sustainable pace enables everything
With Agents: Agents amplify XP. Pair humans with agents. Agents handle repetitive work, humans provide judgment and creativity.
XP实践是一个有机的系统,不要随意挑选单独使用:
- TDD为集体代码所有权提供支持
- CI支持小版本发布
- 结对编程促进集体代码所有权
- 可持续开发节奏是所有实践的基础
结合Agent使用: Agent可以放大XP实践的效果。让人类与Agent结对协作,Agent处理重复性工作,人类提供判断和创造力。