背景

最近项目组内部正在推进敏捷开发落地,作为一个非互联网行业转行过来的开发人员,个人对敏捷开发了解不多,希望通过本文加深对敏捷开发的了解,并积极推送项目组内敏捷开发的落地。

本文翻译自KANBAN VS SCRUM: CHOOSING THE BEST AGILE PROJECT MANAGEMENT FRAMEWORK。

正文

“我们使用敏捷开发”,在于软件开发团队交流时,我们听到越拉越多这样的声音。是的,根据统计,2018年全球90%的开发者在进行敏捷开发。

但是,敏捷没有统一的标准。作为一个通用的工作流程,为了使开发流程更加简化并有效响应变化,敏捷开发设定了公共的价值观和原则。这些价值观和原则可以在敏捷宣言中找到相关的开发流程建议。

在实际工作中,这些敏捷原则体现在多个不同的敏捷开发框架中。其中,Kanban以及Scrum是最受欢迎和最常使用的。虽然两种实现都是为了创建有效的工作流程,但是仍有一些差异,下面来讨论这些差异。

理解Kanban和Scrum的工作原理可以帮助客户和开发人员了解团队的工作节奏并相应地规划他们的活动。

Scrum和Kanban基础

深入了解Kanban和Scrum的差异之前,我们先了解两者的主要概念。这种方式可以更好的、更轻松的比较两者之间的差异。Kanban和Scrum都是为了建立自治团队的工作流程,但有部分不同。

Scrum

Scrum原本是橄榄球术语,形容多个球员合作共同占据球权。软件开发中,Scrum描述了组织团队合作的方法,以便更高效地开发复杂的软件产品。

Scrum哲学基于假设(这种假设也可能是事实) — 开发团队在项目开始阶段不知道项目输出,而是在开发过程中学习、调整。Scrum被设计为易于调整,以方便每次迭代开发开始时重设优先级,在Scrum中迭代、调整的过程称为sprint(冲刺)

这里,我们来了解Scrum中最核心的概念—sprint(冲刺)。Sprint指一个2-4周的时间段,用于保证完成一定的工作量。冲刺帮助我们将项目分解为多个易于管理的任务,并易于持续交付可运行的组件、功能(这里的可运行指的是对最终用户有意义的、完整闭环的)。稍后我们将描述sprint规划、调整和完成的更多细节。

在sprint中工作并专注于每个sprint中应该完成的任务,这使得规划具有很大的灵活性。 团队以“完成名单”开始每个新的冲刺,并在计划任务时考虑目前的情况以及迄今为止收到的需求变化。

Kanban

Kanban最初由丰田提出,用于优化工厂库存。日语中,Kanban表示板或卡片。在原始实现中,当某个材料降低时,工厂部门会发送一个Kanban到仓库请求重新填充材料。然后,仓库发送Kanban到供应商订购更多库存。

使用中,我们可以发现Kanban方法关注当前的情况(工作量、工作状态),这也是引入软件开发的主要概念。与Scrum不同,Kanban没有时间限制,Kanban限制的是同一时间执行的工作项数量。

Kanban方法中一项主要的度量项称为进行中的工作。基于看板,为达到最高效率,正在进行的工作量应受限于开发团队的总体能力,以降低工作量瓶颈带来的风险。

Kanban也很好的适应变化,这些变化中最重要的一点是可以在项目的任何阶段进行更改并添加到要执行的任务池中。

Scrum vs Kanban — 主要的区别

以下从Scrum和Kanban定义的工作流程、主要实体的定义和使用来比较Scrum和Kanban。

角色

分派的角色是Scrum和Kanban第一个最大的不同。使用Scrum时会用到以下三个主要团队角色:

  • Product Owner,也就是我们常说的产品。负责分析客户对产品的需求,并转化为团队的任务。产品所有者还确定任务的优先级,并决定何时可以发布特定的功能组件。
  • Scrum Master,开发Master。向团队成员介绍Scrum原则并协助他们实施。同时进行人力资源的分配。
  • Team,开发人员。实际完成工作的团队成员。Scrum团队拥有多种技能,其中一些技能通常由一个人掌握。 团队以自组织原则工作,开发人员协助彼此完成工作。

相反,Kanban并没有严格的角色要求。一般需要一个Product Owner负责向任务池中添加任务以及监控任务积压情况,除此之外,团队是自组织的。

工作流程

本文之前提到过,Scrum开发流程基于迭代,通过定义每次迭代中要完成的工作并进过多次迭代完成开发。而Kanban旨在限制当前进行的工作量,没有时间限制。下面介绍两种方法在现实生活中的意义。

Scrum流程

项目从定义积压(backlog)开始,所谓积压即那些等待处理以交付完整产品的用户故事列表。 在这种场景下,Scrum使用以下主要概念来帮助我们理解工作的计划和分配方式:

  • 产品积压,提供团队的Todo List。产品积压包括完成项目需要考虑的所有特性和bug修复工作。积压需要基于需求变更和异常发现不断更新,Product Owner负责维护产品积压,使其与客户的反馈、建议以及开发团队的工作进度保持同步。积压中的工作项可以根据需求添加、删除以及改变优先级。
  • 冲刺积压,由冲刺中的工作项组成。冲刺中的工作项是为了在冲刺结束时交付完整的特性或组件。虽然冲刺积压允许一定的灵活变更,但是冲刺的目标不能改变,且变更应保持在最低限度。
  • 冲刺目标或增量,可用、可交付的冲刺结果。通常,冲刺以已完成的功能或组件的演示结束。 在这方面,一个重要的概念是“完成”的定义,它指的是每个用户故事都要考虑它完成。 “完成”的定义可能根据用户故事而有所不同:它可能包括多个任务,例如开发,测试,设计,文档和演示,也可能涉及不同的团队成员。

每个冲刺开始于规划,此阶段需要确定团队成员,尤其是产品和开发Master并且确定冲刺的边界即冲刺需要完成的任务。团队共同决定冲刺结束后的交付产品、从产品积压中选取用户故事并将用户故事投入到冲刺积压中。

冲刺过程中,团队可以通过每天短暂的站会来讨论工作进度、遇到的困难。站会的目的是尽早发现问题并尽快解决,避免影响冲刺进度。

冲刺结束后,冲刺的输出即完成的特性需要利益相关者review。冲刺review过程中,团队会收到特性的反馈和建议。同时,团队需要进行冲刺回顾,分析刚完成的冲刺并发掘改进点。回顾之后,进行下一阶段的冲刺规划。

Kanban流程

Kanban专注于平衡团队的能力与当前在进行的工作量,并没有使用时间段来量化工作。。

Kanban项目流程一般从积压工作开始,包括应该完成的所有任务。 每个团队成员从积压工作中自己选择一项任务,并完成它。 任务完成后,选择下一个,以此循环,直到积压工作耗尽为止。 积压工作中最紧急的任务放在最顶层,由团队优先处理。

Kanban中最重要的是项目执行过程中,任何时刻的开发中工作项不能超过团队能力。为此,可能需要在各种类型的工作设置一个上限。

产品可以根据需求变更积压中任务的优先级,积压中任务的管理与团队无关。团队只关心开发中任务,只有在任务完成时才需要与积压交互。

任务的生命周期一般是:待办 -> 进行中 -> 完成,团队可以根据自身特性定义任务生命周期,例如Aone中的看板根据不同的任务类型设置了不同的任务生命周期。同时,Kanban支持“完成”的定义,即定义每个任务的验收标准。任务最终以完整的组件或功能交付,并通过交付时间进行度量。Kanban中,交付时间为周期,可以通过周期度量并进行优化。所有团队都在努力缩短周期,并寻找解决瓶颈的方法(如果有的话)。

在使用Kanban的场景下,团队成员具有重叠技能至关重要。 如果只有一个人拥有某种技能 - 例如,如果你只有一个测试人员 - 这就是瓶颈。 所有测试任务都将排队等待处理,造成产品交付延迟。

总的来说,可以认为Scrum和Kanban的主要区别是,Scrum适用于在特定时间内完成预定任务,而Kanban关注进行中工作不会超过设定的团队工作能力上限。

面板

谈论Scrum和Kanban时,肯定不能忽略面板(这里的面板和Kanban不是一个东西,本文中Kanban指敏捷开发方法,而面板是实施敏捷方法时使用的可视化工具)。两种敏捷方法都使用面板作为可视化工具来规划和监控其执行情况。 面板反映了Scrum和Kanben的主要概念。

虽然现在有很多工具用于创建和管理Scrum和Kanban(例如,Jira和TargetProcess既支持Kanban也支持Scrum,而Trello最初是一个Kanban工具,但也可以通过扩展支持Scrum),但是我们可以仅通过普通的白板、记号笔以及贴纸来完成Scrum和Kanban的流程。关键在于学习怎么做,工具并不重要。

Scrum面板

Scrum看板至少包含3列:“待办”、“处理中"以及"已完成”。如果需要,可以添加"用户故事"列来展示任务所属的故事,或者在"已完成"列前添加"测试中"列。但最终都按照时间显示任务进度。

冲刺的开始阶段,所有的任务在第一列(待办),冲刺结束时所有任务需要移动的"完成"列。之后,清空面板并准备下一个冲刺。

Scrum面板总是由一个团队在同一产品上工作。 通常,Scrum团队是跨职能的,从开发人员和架构师到测试人员和技术作家。

Kanban面板

Kanban面板的外观和工作方式类似于Scrum,但是有一个最大的区别 - “进行中”列中显示了限制。 正在进行的任务数量不应超过该数量。

Kanban在整个工作流程期间都存在,因为它们不受任何特定时间段的约束。由于Kanban是用于特定工作流程的,因此它们不属于任何特定团队,可以共享。

如何选择

如果希望从本文得到一个确定的答案,那么你会失望。到目前为止,本文希望通过介绍两种方法各自的优点,帮助读者选择合适自己团队的方法,面对不同类型的任务同一团队也可以选择不同的敏捷方法。

Scrum适用场景:

  • 您可以相对轻松地将工作以两周为单位划分为多个逻辑块。
  • 您需要对整个项目具有高度的可预测性。 Scrum专注于将冲刺中的更改保持在最低限度。
  • 团队中有很多新成员。使用Scrum,如果需要,他们将更容易理解团队纪律并进行改进。

Kanban适用场景:

  • 预计在项目中会出现大量的变动
  • 很难将项目划分为多个两周内交付的产品组件。
  • 团队成员有良好的开发纪律且可信任,可以自主的计划活动,不需要deadline约束。

然而,现在出现了一种名为Scrumban的方法,它结合了Scrum和Kanban的特点。在Scrumban中,使用短迭代以保证工作在限制的工作量内。限制中的进行中工作会触发新的迭代。

如您所见,选择项目管理方法是自由、灵活的。我们可以根据自己的项目进行调整、组合。实际上,选择敏捷方法的主要标准始终是项目成功与否和团队对工作流程的满意度。

Scrum Or Kanban: 选择属于自己的敏捷管理框架相关推荐

  1. GitChat·DevOps | 如何结合 Scrum 和 Kanban

    来自 吴穹.申导.侯伯薇 在 GitChat 上精彩分享 原文:如何结合 Scrum 和 Kanban 更多IT技术分享,尽在微信公众号:GitChat 技术杂谈 背景介绍 by 吴穹 这篇文章背后的 ...

  2. GitChat · DevOps | 如何结合 Scrum 和 Kanban

    来自 吴穹.申导.侯伯薇 在 GitChat 上精彩分享 原文:如何结合 Scrum 和 Kanban 更多IT技术分享,尽在微信公众号:GitChat 技术杂谈 背景介绍 by 吴穹 这篇文章背后的 ...

  3. Scrum vs Kanban,如何选择?

    两大方法 虽然敏捷诞生只有20年的时间,但却帮助了很多企业取得了成功,在这期间也出现了各种敏捷方法论和思想体系,这篇文章,我们试图去讨论一个问题:对于准备实施敏捷的团队,在Scrum和Kanban两种 ...

  4. 《ACT 敏捷教练战术手册》正式发布:ACT 是什么?它和 Scrum 与 Kanban 有什么区别? ...

    你最近可能时不时的被 ACT 刷屏,那 ACT 是什么呢?ACT 是 Agile Coach Toolbox 的简称.ACT 核心解决两个问题: 服务转型中的企业,有效落地敏捷实践:(如何快速止血,快 ...

  5. 敏捷开发和Scrum、Kanban、XP的关系与区别

    目录 前言 一.敏捷是什么 二.Scrum是什么 三.Kanban是什么 四.XP是什么 五.敏捷开发和Scrum.Kanban.XP的关系 六.总结 前言 敏捷经过20多年的发展,被广为人知,但是也 ...

  6. 如何结合 Scrum 和 Kanban

    在传统团队实施敏捷转型的时候,最经常采用的两种方法就是Scrum和Kanban.然而,由于两种方法各有千秋,两派的专家们又经常会在各种场合争执不下,所以很多时候让刚做转型的团队不知道该如何选择.其实, ...

  7. 建立学习型组织:Scrum和Kanban殊途同归

    从方法论的海洋到方法论的灯塔 敏捷方法有40多种,可以称为方法论的海洋.学海无涯,对于沉浸其中的人不会觉得有什么,而对于受众,敬而远之恐怕只能算作一种正常的态度. 我们需要找到方法论的灯塔,即其中简单 ...

  8. 答疑:Scrum和PMP,该学哪个?Scrum和Kanban,该学哪个?

    问题 有朋友向我咨询关于认证.他们问:"Scrum和PMP,该学哪个?Scrum和Kanban,该学哪个?" 我这样回答:"你的业务环境是怎样的?你需要解决什么问题?你希 ...

  9. Scrum的七宗罪和其他的敏捷反模式

    在班加罗尔举行的2016年Agile India大会上,来自加拿大IHS的Sean Dunn和Chris Edwards给大家带来了题为"Scrum的七宗罪和其他的敏捷反模式"的演 ...

  10. 研发协作Scrum看板工具项目管理团队协通敏捷开发平台

    Leangoo官网:www.leangoo.com Leangoo是由国内敏捷最权威的 Scrum中文网 研发的一款敏捷项目管理协作平台,适用于团队产品研发.项目管理等的协作平台. 看板式管理 简洁. ...

最新文章

  1. Linux的10个游戏
  2. 51CTO学院双十一营收400万,预测IT职业教育市场增长150%
  3. (原创)cocos2dx-lua TableView官方demo分析
  4. 阿里天气数据接口调用实现(Java和JS)
  5. XML在线转化为JSON
  6. Linux 命令简单介绍第一课笔记
  7. java 2分钟_java开发中的那些事(5)--------一点经历,败给2分钟的2个小时
  8. JavaScript创建对象几种形式
  9. vue中引入字体无效(记录)
  10. 怎么将PPT中的视频文件保存下来
  11. 基于哈夫曼编码的文件压缩解压
  12. 修改Keil MDK的背景为黑底或护眼(绿色)
  13. Python爬取京东商品评论和图片下载
  14. 汇编语言与微机原理 期末半开卷复习整理(下)
  15. 《老梁四大名著情商课》笔记- 智商与情商:哪个重,哪个轻
  16. 苹果手机充值显示服务器异常,梦幻西游手游充值出现异常的iOS系统解析
  17. 浅尝辄止MongoDB:GridFS
  18. 通达信交易接口api有什么用?
  19. 人机交互-5-评估之询问用户和专家
  20. dependencies 和 devDenpendencies 的区别

热门文章

  1. 在java中 数组是作为_2.在Java中,数组是作为____来处理的。
  2. 不规则物体抓取机械手机械臂
  3. 推送V3 - Vue + Layim + Websocket 实践笔记
  4. 迅为STM32MP157开发板手册更新记录
  5. python 绘制频数与正太分布图
  6. OSPF报文与LSA
  7. 20.P153课后习题6-13 背包问题。设有一个背包可以放入物品的重量为s,现有n件物品,重量分别为w[0],w[1],...w[n-1]。问题是能否从这n件物品中选择若干件放入此背包中使得放入的重
  8. 教程:简单十步,在 iTunes 申请 App Store 退款
  9. C++ 泛型编程 map(统计人数)
  10. python后端开发的书籍_资深程序员Python学习进阶书籍推荐_后端开发