入门
基于《敏捷宣言》原文(agilemanifesto.org,2001)与 12 条原则(agilemanifesto.org/principles.html)编写
速查
- 本质定位:敏捷是「价值观伞」,不是单一方法;Scrum/Kanban/XP/Lean 是伞下的具体实现
- 4 价值观:个体与互动 > 流程与工具;可用软件 > 详尽文档;客户协作 > 合同谈判;响应变化 > 遵循计划
- 关键表述:「左边的项虽有价值,但我们更重视右边的项」——是「左>右」而非「左弃右」
- 12 原则要点:早交付、欢迎变化、短迭代、业务与开发每日协作、自组织团队、面对面沟通、可用软件是首要度量
- 起源:2001-02-11~13,犹他州雪鸟(Snowbird)滑雪场,17 位实践者,Kent Beck 等起草
- vs 瀑布:瀑布线性「需求→设计→编码→测试」,一次交付;敏捷短迭代,持续交付 + 持续反馈
- 不否定右项:宣言认可文档、计划、合同、流程的价值,只是优先级让位于左项
- 常见误解:敏捷 ≠ 不写文档;敏捷 ≠ Scrum;敏捷 ≠ 没有计划;敏捷 ≠ 站会 + 看板
- 落地框架:需求不确定→Scrum/XP;流式运维/支持→Kanban;产品从 0 到 1→Lean Startup
- 适用判断:需求稳定 + 高合规→瀑布仍合理;需求不确定 + 需快验证→敏捷更优
- 规模扩展:单团队敏捷顺,多团队需 SAFe/LeSS/Nexus 等扩展框架
- 核心共识:敏捷是价值观不是流程,落地要贴合团队上下文,不能照搬教条
敏捷是什么
一句话定义
text
敏捷 = 一套关于「如何在不确定性下开发软件」的价值观与原则(宣言),
具体怎么做由 Scrum / Kanban / XP / Lean 等框架来落地。敏捷(Agile)这个词常被误当成某个具体流程。准确说,2001 年的《敏捷宣言》给出的是价值观(4 条)和原则(12 条),它不规定你每天几点开站会、迭代多长。具体的流程性约束来自它「之下」的框架——Scrum 规定了角色与事件,Kanban 规定了 WIP 限制与可视化,XP 规定了测试驱动开发与结对编程。把敏捷想成一把伞,伞下挂着这些方法。
4 价值观(原文 + 解读)
text
我们一直在实践中探寻更好的软件开发方法,
身体力行的同时也帮助他人。由此我们建立了如下价值观:
个体和互动 高于 流程和工具
工作的软件 高于 详尽的文档
客户合作 高于 合同谈判
响应变化 高于 遵循计划
也就是说,尽管右项有其价值,我们更重视左项的价值。| 价值观 | 左项(更重视) | 右项(仍有价值) | 误读陷阱 |
|---|---|---|---|
| 以人为本 | 个体与互动 | 流程与工具 | 不是「不要工具」,而是不让工具/流程盖过人的判断 |
| 交付优先 | 可用软件 | 详尽文档 | 不是「不写文档」,而是先交付能跑的软件 |
| 协作共赢 | 客户协作 | 合同谈判 | 不是「不签合同」,而是用协作替代对立式谈判 |
| 拥抱变化 | 响应变化 | 遵循计划 | 不是「不要计划」,而是计划要可自适应 |
记住那句免责声明:「尽管右项有其价值,我们更重视左项的价值」。这是判断一个团队是真敏捷还是假敏捷的试金石——假敏捷常拿「我们是敏捷」当不写文档、不做设计的借口。
12 原则速览
12 条原则是对 4 价值观的展开,可归为四个主题:
| 主题 | 涉及原则(要点) |
|---|---|
| 客户与交付 | 1 最高优先级是早并持续交付有价值的软件;2 即使后期也欢迎需求变更;3 频繁交付可用软件(数周到数月,倾向更短) |
| 协作与团队 | 4 业务与开发者每日协作;5 围绕有动力的个体建团队,信任他们;6 面对面沟通是最有效的信息传递方式;11 自组织团队涌现最好的架构/需求/设计 |
| 质量与节奏 | 7 可用软件是进度的首要度量;8 可持续的开发节奏;9 持续关注技术卓越与良好设计增强敏捷;10 简洁——最大化未完成工作的艺术 |
| 改进闭环 | 12 团队定期反思如何更有效,并调整行为 |
敏捷 vs 瀑布
| 维度 | 瀑布(Waterfall) | 敏捷(Agile) |
|---|---|---|
| 流程 | 线性:需求→设计→编码→测试→交付 | 迭代:每个 Sprint 产出可用增量 |
| 需求处理 | 前期冻结,变更走变更控制 | 欢迎变更,迭代中调整优先级 |
| 反馈时机 | 项目末期验收 | 每个迭代末 Review |
| 风险暴露 | 晚(集成/验收阶段集中爆发) | 早(每迭代持续暴露) |
| 计划粒度 | 全程详尽计划 | 滚动式计划,远期粗、近期细 |
| 适用 | 需求稳定、高合规、变更成本高(如航天、医疗嵌入式) | 需求不确定、需快速验证(如互联网产品) |
伞下框架一览
| 框架 | 核心机制 | 典型适用 |
|---|---|---|
| Scrum | 时间盒(Sprint)+ 角色 + 事件 + 工件 | 复杂产品开发,需节奏与检查点 |
| Kanban | 可视化 + WIP 限制 + 流式 | 运维/支持/持续发布,需求随机到达 |
| XP(极限编程) | TDD + 结对 + 重构 + 持续集成 | 工程质量优先,需求多变 |
| Lean(精益) | 消除浪费 + 尽晚决策 + 尽快交付 | 从 0 到 1 的产品探索 |