“我们使用敏捷开发。”在与软件开发团队交流时,你会听到很多这样的说法。根据统计,2018年全球约有90%的开发人员在使用敏捷开发。Choerodon猪齿鱼团队也是其中之一。
但是,敏捷并不统一。作为组织工作流程的一般方法,敏捷软件开发设定了共同的价值观和原则,旨在精简开发流程,敏捷有效地响应变化。这些价值观和原则可以在敏捷宣言中找到,当中就提供了一些建立开发流程的建议。
在实际应用中,几种软件开发框架已经体现了这些敏捷原则。其中Kanban 和 Scrum是最受欢迎和经常使用的。这两种方法都有一个共同的目标,即创建一个有效的工作流程。今天这篇文将围绕他们之间的差异进行讨论。
Scrum和Kanban的基础知识
在深入研究Scrum和Kanban之间的差异之前,先看一下两个框架的主要概念,以便之后可以更轻松地进行Kanban与Scrum的比较。虽然它们都旨在建立一个自组织团队的流动,但是有些方法不同。
▌Scrum是什么?
Scrum的名字来自橄榄球术语,表示“争球”的动作。在软件开发中,Scrum是指采取组织团队合作的方法,以便更高效地开发复杂的软件产品。
Scrum基于开发团队在开始时不知道项目的结果这个假设,他们会随着工作的进展不断学习和适应。Scrum旨在通过每次迭代开始时重置优先级来简化这种适应,这在Scrum术语中称为“Sprint”。
在这里,大家来看一个Scrum的核心概念——冲刺(Sprint),冲刺是用2到4周的时间来完成一定量的工作。Sprint有助于将项目范围分解为更容易管理的任务,并更频繁地交付组件正常运行的软件。
在冲刺阶段,开发团队只需专注于每个sprint中应完成的任务,这为项目规划阶段提供了极大的灵活性。新冲刺开始时,开发团队会重新规划本次冲刺的任务,规划时需要考虑到上个冲刺任务的完成情况以及项目的新需求。
▌Kanban是什么?
Kanban最先由Toyota 提出,旨在优化其工厂库存。在日语中,“Kanban”是指板或卡。在最初的应用中,一个库存越来越少的工厂部门会向仓库发送“Kanban”来请求补货。然后,仓库将“Kanban”发送给供应商以订购更多库存。
从这个例子中,大家可以看到Kanban专注于当前容量,这也是用在软件开发的主要概念。与Scrum不同,Kanban没有时间限制,相反,它限制了可以同时执行的工作量。
看板的主要指标之一是“正在进行的工作” 。Kanban表示,为了实现最高效率,正在进行的工作应进行限制以与团队的能力相匹配,从而降低任何出现瓶颈的风险。
看板也能很好地响应变化,因为可以在项目的任何阶段进行更改并添加到要执行的任务列表中。
Choerodon猪齿鱼团队就是使用敏捷Kanban方法来提升交付效率,具体如何使用可参考Choerodon猪齿鱼博客文章:猪齿鱼团队如何使用敏捷Kanban方法提升交付效率
Scrum与Kanban的主要区别
如果想比较Scrum和Kanban,大家需要看两个框架组织工作流的方式以及它们使用的主要实例和定义。
角色
角色的分配是Scrum和Kanban之间的第一个重大区别。在Scrum中,团队主要分三个角色:
产品负责人:负责产品的人。产品负责人分析客户对产品的需求,并将其转化为团队的任务。产品负责人还确定任务的优先级,并决定何时可以发布特定的功能组件。
Scrum Master:负责Scrum过程的人。首先,Scrum Masters将Scrum原则引入其团队成员并协助他们实施。此外,Scrum Masters管理冲刺所需的人力资源分配。
开发团队:负责实际开发工作的人。由具备自我管理能力的人组成的跨职能团队。
反过来,Kanban对团队角色没有严格的要求,可能有一个产品负责人监督项目中积压的任务,但除此之外,团队是自组织的。
工作流程
正如上文提到的,Scrum开发在迭代中进行,定义了每次迭代中要完成的工作,而Kanban旨在限制当前正在进行的工作,没有特定的时间限制。下面列出这两种方法在实际应用中的含义。
▌Scrum流程
项目规划从定义项目待办事项开始,即为了交付产品而需要完成的用户故事列表。在这种情况下,Scrum使用以下主要概念来帮助使用者理解工作的计划和分配方式:
Product backlog:代表团队的主要“待办事项”列表。Product Backlog包括项目中需要完成的所有功能和bug修复。待办事项列表根据新需求或检测到的错误而不断更新。产品负责人负责Product backlog的工作,以便客户的反馈和建议与团队的工作进度保持同步。Product backlog的一些任务可以根据优先级排序,一些可以在需求改变时添加,一些可以删除。
Sprint backlog:要在冲刺中完成的任务清单。Sprint backlog的任务需要在sprint结束时交付已完成的功能或组件。虽然sprint backlog也允许一定的灵活性和修改,但sprint的目标应该保持不变,并且应该将更改保持在最低限度。
increment:sprint结束后可交付的可用产品。通常,sprint以已完成的功能或组件的演示为结束。在这方面,一个重要的概念是“完成”,它指的是每个用户故事都要考虑其完整性。“完成”的定义可能根据用户故事而有所不同:它可能包括多个任务,例如开发,测试,设计,文档和演示,也可能涉及不同的团队成员。
每个sprint都从规划阶段开始,在该阶段中计划下一个sprint的任务。对于规划,通常会有整个团队,包括产品负责人和Scrum Master在场。团队决定在sprint结束时他们可以提供什么,并从Product backlog中选择相应的用户故事。这样就形成了Sprint backlog 。
在冲刺期间,团队每天会开“daily scrum”(即每日站立会议),讨论他们的进展以及他们可能遇到的问题。站立会议的目的是尽早发现问题并快速找到解决方案,以免破坏冲刺流程。
在冲刺之后,利益相关者将审查完成的功能。在sprint review期间 ,团队有机会收到有关其工作的反馈或变更建议。
与此同时,团队进行sprint retrospective meeting(回顾会议),分析他们所完成的冲刺并找到需要改进的问题。回顾之后,重置过程,新的sprint从规划阶段开始。
▌Kanban流程
在Kanban中,没有规定时间段来完成一定量的工作,相反,Kanban专注于平衡团队的能力与当前正在进行的工作。
Kanban流程从待办事项清单开始,包括应该完成的所有任务。每个团队成员从待办事项中领取一个任务,并专注于完成它。任务完成后,成员选择下一个,依此类推,直到待办事项完成为止。待办事项按照优先级排序,最紧急的任务放在最顶层,由团队优先选择。
在Kanban中, 项目期间正在进行的工作量不超过团队的能力这点至关重要 。即kanban中的限制在制品原则。出于这个目的,可以根据成员工作能力为任何类型的工作设置限制。
产品负责人可以根据需要尽可能多地设置和更改待办事项中的优先级,因为backlog management对团队的绩效没有影响。团队只需要关心正在进行的工作,只有在当前任务完成后才返回待办事项。
每项任务都沿着“待办事项” - “正在进行的工作” - “完成”路线行进。当然,Kanban也支持“完成”概念(即每个任务被接受的标准)的自定义。
最终,完成的任务形成完成的组件,可以计算交付它们所需的时间。在Kanban中,它被称为 “cycle time”,周期的计算能提供许多优化点。当然,所有团队都在努力缩短周期,并寻找解决瓶颈的方法(如果有的话)。
在Choerodon猪齿鱼中,可对任务进行故事点与时间的评估,并在燃尽图中能很好的看到迭代工作时间的预期值与剩余值。
在这种情况下,让团队成员具有重叠技能至关重要。如果只有一个人拥有某种技能,例如如果你只有一个测试人员,那就是瓶颈,所有测试任务将排队等待产品交付过程中的延迟。
总而言之,Scrum目标是在指定时间内完成预定工作,而Kanban监控以确保正在进行的工作永远不会超过设定限制。
选择哪一个?
如果您一直在等待这个问题的确定答案,答案可能会让您失望。到目前为止,本文列出这两种方法都有其优点,并且两者都有助于建立敏捷开发流程。下面将提供了一些指南,可以帮助您选择最适合您团队的方法。
使用Scrum:
- 你可以相对轻松地将工作范围划分为可在两周内完成的逻辑块。
- 你需要对整个项目具有高度的可预测性。Scrum专注于将sprint中的更改保持在最低限度。
- 团队中有很多新成员。使用Scrum,他们将更容易理解团队纪律并进行改进。
使用Kanban:
- 你希望项目中有很多频繁的更改。
- 很难离析出可在两周内交付的产品组件。
- 你的团队训练有素,可以信任地在没有严格截止日期的情况下安排他们的活动。
然而,好消息是你可以随时结合!甚至还有一种名为 Scrumban 的方法,其中包含了Scrum和Kanban的方法。在Scrumban,你可以在短期迭代中完成工作,并将进行中的任务数量保持在一定限度内,一旦进行中的任务低于限度时会触发新的迭代。
如你所见,选择项目管理方法可以像你希望的那样灵活和自由。没有固定规则,您可以根据自己的项目进行调整,混合和匹配。实际上,选择过程中的主要标准应始终是您的项目成功和团队对工作流程的满意度。
Choerodon猪齿鱼团队就结合了Scrum和Kanban方法,关于团队的敏捷实践相关信息,组织Sprint计划会议、每日站立会议、评审会、回顾会等敏捷会议可参考Choerodon猪齿鱼敏捷管理实践(三):敏捷会议,结合Choerodon平台敏捷管理模块进行冲刺管理可参考Choerodon猪齿鱼敏捷管理实践(二)——冲刺管理。
本文译者 | 林岩芳 原文地址:https://da-14.com/blog/kanban-vs-scrum-choosing-best-agile-project-management-framework
关于Choerodon猪齿鱼
Choerodon猪齿鱼是一个开源企业服务平台,基于Kubernetes的容器编排和管理能力,整合DevOps工具链、微服务和移动应用框架,来帮助企业实现敏捷化的应用交付和自动化的运营管理的开源平台,同时提供IoT、支付、数据、智能洞察、企业应用市场等业务组件,致力帮助企业聚焦于业务,加速数字化转型。
大家也可以通过以下社区途径了解猪齿鱼的最新动态、产品特性,以及参与社区贡献:
- 官网:http://choerodon.io
- 论坛:http://forum.choerodon.io
- Github:https://github.com/choerodon
- 微信公众号:Choerodon猪齿鱼
- 微博:Choerodon猪齿鱼
来源:oschina
链接:https://my.oschina.net/u/3859216/blog/3041206