很多研发团队并不是真的不会做 Scrum、不会拉 Kanban 看板,而是需求拆分不稳、在制任务失控、测试回流频繁、发布链路断裂,最后把"敏捷"做成了高频开会。要解决这类问题,关键不是再加仪式,而是把 Scrum 的节奏控制、Kanban 的流动管理和 DevOps 的交付闭环串成一套可执行体系。以禅道为例,需求、任务、Bug、版本和测试都能挂到同一条链路里,团队更容易把问题看清、把动作落地。
先说结论:敏捷不是流程包装,而是交付系统重建
很多文章喜欢把 Scrum、Kanban、DevOps 分开讲,读完以后团队还是不会落地。原因很简单:真实研发现场不是单选题。
产品经理在变更优先级,开发在并行处理任务,测试在拦截回归风险,运维在准备发布窗口。你如果只学 Scrum,很容易把注意力放在迭代会议;只学 Kanban,又容易把系统变成"会流转的任务板";只讲 DevOps,则可能陷入自动化工具很多、上游协同很乱的局面。
真正有效的敏捷体系,应该同时回答 4 个问题:
- 这期到底先做什么,为什么先做。
- 任务进入开发后,怎么避免越做越堵。
- 质量问题和返工,怎样尽早暴露。
- 代码、测试、发布、复盘,如何回到同一条业务链路。
Scrum 解决的是节奏和目标,Kanban 解决的是流动和瓶颈,DevOps 解决的是交付和反馈。把三者拆开看容易懂,把三者连起来用才真正值钱。

为什么很多团队"做了敏捷",结果还是慢
研发团队常见的低效,不在于缺少术语,而在于下面这几类问题长期同时存在:
| 现场问题 | 表面现象 | 实际根因 |
|---|---|---|
| 需求总在变 | 迭代计划频繁被打断 | Backlog 没有分层,优先级没有稳定入口 |
| 开发很忙但交付不稳定 | 人都在做事,版本还是延期 | 在制任务过多,依赖项没人显性管理 |
| 测试总在最后爆雷 | 提测后 Bug 激增,返工连续发生 | 验收标准缺失,测试介入太晚 |
| 发布总像临门一脚翻车 | 开发说完成了,业务却不能上线 | 开发完成不等于交付完成,缺少端到端闭环 |
| 复盘每次都差不多 | 总在说沟通不够、执行不强 | 没有基于数据定位瓶颈,只是在复述感受 |
这也是为什么不少团队看起来什么都做了:站会、评审、看板、流水线、日报、周报一个不少,但交付还是不稳。因为它缺的不是动作数量,而是动作之间的因果关系。
Scrum、Kanban、DevOps 分别解决什么问题
如果把软件研发看成一条从需求到上线的生产链,可以这样理解三者分工:
| 方法 | 核心目标 | 适合解决的问题 | 常见误区 |
|---|---|---|---|
| Scrum | 让团队围绕阶段目标稳定迭代 | 目标不聚焦、需求优先级混乱、复盘流于形式 | 只学会议,不管需求质量和完成定义 |
| Kanban | 让工作流可视、可控、可限流 | 任务堆积、等待时间长、瓶颈位置不清楚 | 只画看板,不设 WIP 限制,不看阻塞原因 |
| DevOps | 让开发到发布形成快速闭环 | 交付周期长、环境反复、反馈滞后 | 只做 CI/CD,不改需求协同和测试前移 |
换句话说:
- Scrum 让团队知道"这一轮应该赢什么"。
- Kanban 让团队知道"工作现在堵在哪里"。
- DevOps 让团队知道"价值什么时候真正交付出去"。
Scrum 核心实践:把迭代从"排期"变成"承诺"
Scrum 最容易被误解成一套会议机制。其实它的价值在于用固定节奏逼迫团队做出取舍、暴露偏差、积累数据。
1. Backlog 不是需求仓库,而是决策队列
很多团队的需求池越堆越大,最后谁声音大谁先做。规范的做法不是把需求"记下来",而是先把需求分层:
- 高层是业务目标和产品主题。
- 中层是可验证的用户故事或特性。
- 底层才是进入当前迭代的任务。
进入 Sprint 之前,必须明确三件事:业务价值、验收标准、依赖关系。否则 Sprint Planning 开得再认真,也只是把模糊问题排进了日程表。
2. Sprint Planning 的重点,不是排满,而是排准
计划会最常见的错误,是把团队可用工时几乎塞满,最后每个人都"有安排",但版本没有安全余量。
更稳妥的做法是:
- 只选本轮最重要、最能形成交付成果的事项。
- 每个事项拆到可估算、可认领、可验收的粒度。
- 明确哪些任务依赖外部角色或前置结果。
- 给测试、联调、修复保留真实空间。
Sprint 的本质不是"这两周能做多少",而是"这两周愿意对什么结果负责"。
如果要给一个更便于执行的经验值,我通常建议这样设:
| 团队状态 | Sprint 周期建议 | 规划原则 |
|---|---|---|
| 刚开始做敏捷,需求还不稳定 | 1 周 | 周期短一点,先建立反馈节奏 |
| 大多数中小研发团队 | 2 周 | 节奏和交付压力相对平衡 |
| 需求相对稳定、交付件较大 | 3 周 | 适合需要联调和验收缓冲的场景 |
同时要注意两条硬规则:
- Sprint 负载不要排到 100%,建议保留 15% 到 20% 缓冲给 Bug、插单和联调。
- 单个任务最好控制在 0.5 天到 2 天内能看见结果,超过这个粒度,后续状态失真概率会明显升高。
3. Daily Scrum 不应该变成逐人汇报会
站会最容易失效的原因,是成员轮流回答"昨天做了什么、今天做什么",信息很多,问题很少。
更有效的站会应该围绕任务流动展开,只盯 3 类内容:
- 哪些事项在推进。
- 哪些事项被阻塞。
- 哪些阻塞会影响 Sprint 目标。
如果没有阻塞暴露,没有优先级调整,没有资源协调,站会就只是把低价值同步从聊天软件搬到了会议室。
4. Sprint Review 看的不是演示热闹,而是价值完成度
不少团队把评审会做成"功能展示",看起来很完整,实际却回避了一个关键问题:这轮迭代到底交付了多少可用价值。
Review 至少要回答:
- 哪些故事真正达到了完成定义。
- 哪些需求虽然开发完成,但还不能进入发布链路。
- 哪些反馈会影响下一轮优先级。
如果评审只看"做了很多",不看"能不能上线、值不值得继续",团队就会越来越忙,却越来越难判断方向。
5. Retrospective 的目标不是复盘情绪,而是形成下一轮动作
高质量复盘,一定要把问题收敛成机制修正。建议每轮只抓 2 到 3 个最关键改进项,比如:
- 需求进入 Sprint 前必须补齐验收标准。
- 每位开发同时进行中的任务不得超过 2 个。
- 提测前必须跑通最小回归清单。
复盘如果不进入下一轮工作机制,就只是一份写得不错的会议纪要。

Kanban 核心实践:让任务真正流动起来,而不是堆在"进行中"
Kanban 最被低估的价值,不是可视化,而是限流和暴露瓶颈。很多团队看板很漂亮,但"进行中"永远最多,这说明看板没有管理能力,只有展示功能。
1. 看板列设计要对应真实工作流
不要为了好看把状态压成过少,也不要为了精细把状态拆得过多。对研发团队来说,更实用的一种划分是:
待办 -> 就绪 -> 开发中 -> 待联调 -> 待测试 -> 待发布 -> 已完成
这个设计的好处是,等待和执行被拆开了,团队能更快看出问题到底卡在开发、联调、测试,还是发布环节。
2. WIP 限制是 Kanban 最硬的纪律
如果没有在制品限制,看板只会把混乱看得更清楚,并不会减少混乱。
建议这样理解 WIP:
- 开发列限制的是上下文切换。
- 测试列限制的是质量吞吐。
- 待联调列限制的是跨角色等待。
一旦某列超限,新任务就不该继续推进,而应优先清理堵点。很多团队效率低,不是做得慢,而是同时开太多口子。
对 5 到 20 人的研发团队,可以先用一组保守但实用的起始值:
| 看板列 | 建议 WIP 起始值 | 调整信号 |
|---|---|---|
| 开发中 | 开发人数 x 1 到 1.5 | 如果评审、测试长期堆积,说明这里过高 |
| 待联调 | 2 到 4 项 | 超过 4 项通常说明依赖协同开始拥堵 |
| 待测试 | 测试人数 x 1.5 到 2 | 长期超限说明前端投喂节奏失衡 |
这不是标准答案,但比"先不设限制,跑起来再看"有效得多。大部分团队的问题,不是 WIP 设错,而是根本没设。
3. 阻塞项必须显性化,不能靠口头提醒
Kanban 的一个关键动作,是把"被卡住"单独标出来。没有阻塞标识,管理者看见的只是状态没有变化,却不知道原因来自接口依赖、环境问题、需求不清,还是外部审批。
阻塞一旦被显性化,团队就能围绕它做动作:
- 需要谁介入。
- 是否要调整优先级。
- 是否应拆分成更小交付单元。
4. 看板要看流动指标,不只看完成数量
真正有管理价值的数据,至少包括:
- Cycle Time:一项工作从开始到完成用了多久。
- Lead Time:从提出需求到最终交付用了多久。
- Throughput:单位时间内稳定完成了多少项。
- Blocked Rate:有多少工作曾经进入阻塞状态。
只看"本周完成了多少",很容易掩盖大问题。完成数量好看,不代表交付系统健康。

DevOps 核心实践:把"开发完成"真正推进到"可交付完成"
DevOps 在很多团队里最大的误区,是被缩小成 CI/CD。实际上,它更像是把研发、测试、运维和反馈系统拉通的一套交付哲学。
1. 持续集成的目的,是尽早发现偏差
代码合并越晚,问题成本越高。持续集成的核心不是"自动跑一下",而是让错误尽量在最便宜的阶段暴露。
一条实用的持续集成最小链路通常包括:
- 代码提交触发构建。
- 自动执行静态检查与单元测试。
- 关键分支必须通过校验后才能合并。
- 失败结果能快速反馈到责任人和任务项。
如果流水线只是给运维看,不能回写开发动作,那它就不是闭环。
2. 持续测试要前移,不能等到提测后集中爆发
许多团队的测试流程本质上还是"开发做完再扔给测试"。这会让缺陷发现时点过晚,返工成本直线上升。
更现实的做法是:
- 需求阶段先定义验收标准。
- 开发阶段同步补充测试点。
- 联调阶段先做关键路径验证。
- 回归阶段重点关注高风险变更。
测试前移不等于测试人员提前忙起来,而是让质量条件更早参与决策。
3. 持续交付的核心,是发布可预测
真正成熟的交付,不是发布特别快,而是发布风险被持续压低。
团队至少要建立这些基本能力:
- 版本内容清单可追踪。
- 发布条件明确,不靠口头确认。
- 回滚策略事先存在,不是事故时临时想。
- 发布后有可观察指标反馈效果。
只有这样,"上线"才不是碰运气。
如果团队还没有建立正式发布门禁,至少先把下面这张最小检查表跑起来:
| 发布前检查项 | 最低要求 |
|---|---|
| 需求范围 | 本次上线需求、Bug、技术项有明确清单 |
| 测试结果 | 核心路径通过,已知风险有记录 |
| 构建状态 | 主分支构建通过,关键检查项无红灯 |
| 回滚预案 | 回滚方式、负责人、触发条件明确 |
| 发布通知 | 开发、测试、运维、业务知晓发布时间和影响范围 |
这类动作看起来不高级,但它比"上线当天靠群里同步"可靠得多。
4. 反馈链路必须回到需求和流程优化
DevOps 的价值闭环,在于线上反馈能够反向修正下一轮工作,而不是只留在监控大盘里。
例如:
- 某个功能上线后投诉集中,应回到需求定义和验收条件。
- 某类缺陷持续重现,应回到测试策略和开发规范。
- 某个阶段反复拖慢交付,应回到 Kanban 流程和 WIP 设计。
否则团队只是在"更快地重复老问题"。

一套能真正跑起来的落地流程
如果你的团队规模在 10 到 50 人之间,角色包含产品、研发、测试、运维或发布负责人,下面这套组合比单独上某一种方法更容易落地。
第一步:用 Scrum 定节奏
- 以 2 周为一个 Sprint,固定计划、评审、复盘节奏。
- 用产品 Backlog 管理优先级,不让临时需求直接插进开发队列。
- 每轮只承诺最重要的交付目标,不追求"排满工时"。
第二步:用 Kanban 管流动
- 把当前 Sprint 的事项放进可视看板。
- 给开发中、待联调、待测试设置 WIP 限制。
- 对阻塞项做单独标识,并在站会优先处理。
第三步:用 DevOps 建闭环
- 提交代码自动触发构建与测试。
- 提测、回归、发布都保留可追踪记录。
- 线上问题、回归 Bug、用户反馈能回挂到需求或缺陷。
第四步:用数据做复盘
复盘不要只看"大家累不累",而要直接看:
- 本轮承诺完成率。
- 平均 Cycle Time。
- Bug 回流率。
- 阻塞项数量和持续时长。
- 发布成功率与回滚情况。
只要这几个指标被持续记录,团队就不容易再陷入"感觉很忙,但说不清问题在哪"的状态。
先别一上来全量改造:推荐一个 30 天落地节奏
很多团队不是死在方法不对,而是死在一上来改太多。更稳妥的落地方式,通常是 30 天只做四件事。
第 1 周:统一对象
- 统一用什么承接需求、任务、Bug、版本。
- 统一状态流转,不允许每个组说法都不一样。
- 统一完成定义,至少明确"开发完成"和"可发布完成"不是一回事。
第 2 周:建立看板和节奏
- 拉起第一个 Sprint。
- 建出最小可用看板。
- 站会只围绕阻塞和目标偏差,不做流水账汇报。
第 3 周:接入测试与发布链路
- 让提测、回归、版本记录进入同一套流程。
- 最少接一条自动构建或自动校验。
- 发布前开始使用固定检查清单。
第 4 周:第一次用数据复盘
- 看承诺完成率是不是长期失真。
- 看哪个环节停留时间最长。
- 看 Bug 是集中出在需求、开发还是回归阶段。
这 30 天的目标,不是把组织改造成"成熟敏捷团队",而是先从混乱状态进入可观测状态。只要能看见问题,后续优化才有依据。
结合禅道,怎么把这套体系落到工具里
禅道比较适合国内研发团队的一个现实原因,是它天然贴近"需求、任务、Bug、测试、版本"这一整条链路,不需要团队在多个系统之间来回切换。
可以按这个思路配置:
| 管理对象 | 在禅道中的落点 | 目的 |
|---|---|---|
| 产品需求 | 产品模块中的需求池 | 统一优先级入口,避免口头排期 |
| Sprint 目标 | 执行模块中的迭代或项目计划 | 让本轮承诺清晰可见 |
| 开发任务 | 任务与看板列 | 让执行状态透明化 |
| 测试活动 | 测试单、用例、Bug | 提前暴露质量问题 |
| 发布动作 | 版本与发布记录 | 让上线范围和结果可追踪 |
更关键的是使用习惯,而不是功能点数量:
- 需求进入迭代前,必须补齐验收标准。
- 任务拆分后才允许进入开发中。
- Bug 必须挂到对应需求、任务或版本。
- 发布前只看两类风险:未关闭 Bug 和未完成任务。
- 复盘时直接回看版本、任务流转和缺陷数据。
这样做的价值在于,团队不再依赖"谁记得更多",而是依赖系统里沉淀下来的事实链路。
如果你是第一次在禅道里搭这套流程,建议别把字段、工作流、权限一口气配满。更适合首轮上线的是"最小配置法":
| 模块 | 首轮建议保留 | 先不要急着加 |
|---|---|---|
| 需求 | 优先级、负责人、验收标准、所属版本 | 过多自定义字段 |
| 任务 | 状态、负责人、预计工时、关联需求 | 复杂自动流转 |
| Bug | 严重程度、重现步骤、关联版本、责任人 | 过细缺陷分类 |
| 版本 | 发布范围、测试结论、发布时间 | 花哨统计模板 |
原因很现实:中小团队第一阶段最怕的不是功能不够,而是填报成本太高,最后又退回到群消息和口头同步。
用一个 20 人 SaaS 团队案例,把这套方法讲透
假设团队配置是 1 名产品经理、1 名项目经理、10 名开发、3 名测试、2 名运维、3 名设计和运营支持,正在做一个持续迭代的企业 SaaS 产品。这个规模非常典型,也最容易出现"大家都很忙,但版本还是拖"的问题。
他们原来的状态通常是这样的:
- 产品一周能提十几个需求,但真正进入开发的优先级并不稳定。
- 开发每人手上同时挂 3 到 5 个任务,切换频繁。
- 测试集中在提测后承压,回归窗口经常被压缩。
- 发布前一天才开始拉清单,谁都担心有漏项。
如果用前面这套打法落地,可以直接这样跑:
第 1 步:在禅道里先收口需求入口
- 所有需求先进产品需求池。
- 只有补齐验收标准和优先级的需求,才允许进入本期候选。
- 迭代中途新增需求,默认先进 Backlog,不直接打断 Sprint。
第 2 步:Sprint 只承诺 2 周内能闭环的事情
- 计划会只选最重要的 8 到 12 条故事或需求项。
- 每条需求拆成开发、联调、测试都能承接的任务。
- 开发任务尽量拆到 1 天左右能完成,避免"大任务挂两周"。
第 3 步:看板按真实流转跑,而不是按部门划线
- 看板列采用
待办 -> 就绪 -> 开发中 -> 待联调 -> 待测试 -> 待发布 -> 已完成。 - 10 名开发的"开发中"WIP 起始值设为 12。
- 3 名测试的"待测试"WIP 起始值设为 5 到 6。
这样做的效果很直接:一旦测试列爆满,开发就不能继续无节制往后推,而必须先配合消化积压。
第 4 步:发布前只盯关键门禁
- 本次版本涉及哪些需求和 Bug。
- 是否还有高优先级缺陷未关闭。
- 回归是否通过核心路径。
- 回滚方式是否明确。
这类团队通常跑完 2 到 3 个 Sprint 后,会先看到 3 个变化:
- 插单变少了,因为需求入口被收住了。
- 测试排队缩短了,因为开发并行量被限制了。
- 复盘更有结论了,因为版本、任务、Bug 已经能挂回同一条链路。
一个常见场景:为什么 Sprint 总是看起来完成了,版本却还是延期
这个问题在一线研发里极其常见,根本原因通常不是开发偷懒,而是完成定义失真。
典型路径往往是这样的:
- 需求进入迭代时拆分不够细。
- 开发阶段同时并行太多事项。
- 联调和测试时间被前面环节挤压。
- 临近发布时集中发现 Bug 和依赖缺口。
- 看板上很多任务"完成",但版本并不可发布。
解决思路不是简单延长工期,而是同时修 3 个位置:
- 在 Scrum 侧,把完成定义从"代码写完"改成"通过约定验证并进入发布条件"。
- 在 Kanban 侧,限制开发中任务数量,避免下游被集中轰炸。
- 在 DevOps 侧,把构建、测试、发布条件前移,让问题更早暴露。
这三步一旦同时发生,团队会发现延期未必立刻消失,但延期会开始变得可解释、可预测、可压缩。
敏捷体系落地时,最容易踩的 6 个坑
- 把敏捷理解成多开会,忽略需求质量和交付结果。
- 看板状态很多,但没有 WIP 限制,任务依然一路堆积。
- 只追求开发速度,测试与验收始终滞后。
- 上了流水线,却没有把结果反馈到任务和责任人。
- 复盘内容很充分,但改进项没有进入下一轮机制。
- 工具字段配置越来越复杂,团队真实使用率越来越低。
如果你只能优先修一个问题,我的建议通常不是先调工具,而是先统一"完成定义"。因为没有统一完成定义,Scrum 会失真,Kanban 会失真,DevOps 也会失真。
给研发负责人、项目经理和团队成员的不同建议
同一套敏捷体系,角色关注点并不一样,这也是很多组织推行失败的原因之一。
| 角色 | 最该盯住的事 | 不该陷入的误区 |
|---|---|---|
| 研发负责人 | 交付节奏、瓶颈位置、质量趋势 | 只盯人效,不看系统吞吐 |
| 项目经理 / Scrum Master | 需求入口、阻塞处理、复盘动作 | 把自己变成催办员 |
| 产品负责人 | 价值排序、验收标准、范围取舍 | 把所有需求都当高优先级 |
| 开发与测试成员 | 完成定义、依赖透明、质量前移 | 只对本环节负责,不看最终交付 |
一个组织越早形成"各角色看的是同一条链路,只是关注面不同",敏捷体系越容易稳定下来。
结尾:别再问该选 Scrum 还是 Kanban,先问你的交付卡在哪
对大多数软件团队来说,Scrum 和 Kanban 从来不是对立关系,DevOps 也不是后置选项。真正有效的路径,是用 Scrum 管目标与节奏,用 Kanban 管流动与瓶颈,再用 DevOps 把质量、发布和反馈闭成一条线。
如果团队当前最痛的是目标常变、计划失真,就先把 Scrum 做扎实;如果最痛的是任务堆积、协作等待,就先把 Kanban 的限流和阻塞管理做起来;如果最痛的是提测晚、发布乱、线上反馈回不来,就尽快补上 DevOps 闭环。
方法不是为了显得专业,体系也不是为了追求完整。它们真正的价值,是让软件研发从"靠人盯着推进",逐步变成"靠机制稳定交付"。