文档章节

[译] 敏捷、Scrum和看板:这些词到底是什么鬼?

暗夜在火星
 暗夜在火星
发布于 2016/02/28 14:36
字数 3361
阅读 629
收藏 3
点赞 1
评论 0

当一个软件开发人员听到关于“新的JavaScript框架”或者“新的IDE”的新闻时,他不需要问多的问题的就能明白它是什么。但如果他听到的是”新的敏捷框架“时,他很可能会点点头,假装他知道它是什么,而他会有一个且唯一一个问题:”敏捷框架“到底是什么鬼?


在现代软件开发环境中,我们日渐听到像”敏捷“、”scrum“和”看板“这些词,并且他们经常会被错误地使用。在这篇文章中,我将会试着解释并澄清其中的一些词。



敏捷

如果你想在人群中脱颖而出,当谈论工作进展时你应该在每句话中都使用”敏捷“这个词。它的范围非常之广,不责成你去非常了解你正在谈论的主题,并且它真的是一个很好的形容词或副词:”敏捷思考“、”敏捷方法“、”根据敏捷原则“。但”敏捷“到底意味着什么?

“敏捷”引自”敏捷软件开发“,开发方法遵循敏捷原则。而”敏捷原则“又是什么呢?可以看下打下敏捷发展基础的敏捷宣言

         

         人和交互 重于 过程和工具


可以工作的软件 重于面面俱到的文档


         客户合作 重于 合同谈判


   随时应对变化 重于 遵循计划

敏捷原则鼓励可以工作软件的持续交付,团队中紧密的沟通,和对需求改变的高度适应。如果在工作中你遵循这些价值和原则,你可以说正在敏捷环境中工作。所以,敏捷软件开发不是一个方法论,它仅仅是一系列不同的方法、框架和遵循相同原则的技术。可以说,”敏捷“是思考和作出决定的一个框架。

敏捷 是思考和作出决定的一个框架。

但是为什么在我们的工作中遵循这些原则那么重要?


宣言和这些原则是为了应对软件开发挑战而从数十年的演进中搜索出最好的解决方案的结晶。经历过了70年代、80年代和90年代,全世界不同的开发人员和团队已经对工作方法和解决问题的方法作出了实验,发明了不同的的框架和技术(例如scrum和极限编程),甚至并行出现了同样的想法。最后,在2001年1月,17位开发人员聚在了一起并为这些多样的想法和经验找到了共同的特征。这就是宣言被创造的过程。

敏捷宣言是数十年出现的不同的经验和可实现的解决方案的结果。

Scrum

如果你谈论”敏捷“方法却不知道他们意味什么,可能会出差错并在知道”Scrum和其他敏捷方法“的谈论者面前说一些暴露自己的东西。


Scrum不是一个方法论,尽管我们听到它的次数比权力游戏的被杀的人数还要多。Scrum不会为每一个问题都提供答案,也不会为响应每一个你面对的场景提供清晰的过程。由此作为不正确解释的结果,大部分scrum实现也都是错误的:团队得不到价值。这很可能导致了关于scrum最愚蠢的声明:”scrum没用“。


scrum是什么?Scrum入门中的定义是:

一个人们可以放置复杂自适应问题进内的框架,当清晰地和创造性地尽可能交付最高价值时。

所以它是一个框架,并且像其他可能的框架一样,经常地,被错误地使用。高效地使用scrum不仅仅要求适应scrum设置的结构,还要有深刻的理解以及在贯穿整个团队中对于敏捷原则的感恩。


scrum包含以下角色:产品负责人ScrumMaster,和开发团队;四种仪式:计划会议每日站会Sprint评审,和Sprint回顾;以及三种输出物:产品BacklogSprint Backlog,和产品增量。它以我们称之为sprint的定期时间帧来组织。sprint应该持续在一周到四周以内。


产品负责人,即PO,负责引导项目的方向。当新的任务和特性决定后,PO把他们添加到产品Backlog。一个sprint开发团队从产品Backlog中选择开始工作的任务以及计划怎么实现他们的计划会议为起点。接下来的是开发,在这个过程中开发团队使用Sprint Backlog来追踪进度并在每日站会上碰面以便同步活动和在有需要时调整计划。此开发的结果应该是产品增量,一些可以应用到产品或者马上发布的东西。在sprint的最后,在争论产品Backlog是否需要更多长远的改变的Sprint评审上,这个产品增量将会展示给产品负责人。此后,整个团队将参加讨论工作进度和如何才能提高它的Sprint回顾会议(也可称之为发布会议)。

这里只是寥寥数语,如果需要更多关于scrum如何工作详细的解释,可查看此文章


学习和理解scrum很容易,但适应它则很难。有很多原因使得这个框架对于项目来说也许是又或者不是一个好的匹配。它通常需要大量的改变,不仅仅是每天的开发,还有文化角度。scrum最适合于维持很久时间并包含不同类型专家的复杂产品的开发。


为什么scrum如此流行,以及为什么相比于传统的瀑布流模型它更有优势?简单来说,是因为它为产品或者客户交付了更多的价值。使用诸如瀑布流这样的”重量级“方法,在恐怖故事比比皆是的数月内没人能看得到任何东西。使用scrum,这种情况是不会发生的。


scrum全部都是关于交付给终端用户的价值。如果你真的使用scrum,你需要在每一个sprint交付一些有价值的东西。价值应该能被评估,并且在接下来的迭代中交付更多的价值的目标下,团队也强制要求进行障碍检查和适应调整。


在大部分软件开发中,我们并不是在建设摩天大楼;我们不需要在开始前要准备好整个计划,并严格执行这个计划直到最后。我们正在开发软件,并且我们有能力针对不同的场景做出调整以及在开发过程中改变产品需求。很长一段时间内,很好开发人员把这看作是第八重罪(eighth deadly sin),但从产品的角度它对于优化可预测性和风险控制有着巨大的好处。scrum围绕着这个能力发展了起来,而它的实现则提供了一种处理必要变化的可靠且高效的方式。


很多技术与scrum配合使用:计划扑克,结对编程,测试驱动开发(TDD),行为驱动开发(BDD),和其他。他们不仅是scrum的一部分,还是兼容的技术。与scrum一起经常被提到的一个方法是看板,并且对于这两者相互之间的关系有着大量的困惑。


看板

当你谈论scrum和看板时,人群中经常会问到的一个问题将会是,”哪个更好,scrum还是看板?“你不知道如何作答因为这就像把苹果和橙子比较,或者问,”哪个更好,薄煎饼还是啤酒?“ 两者都不错。


看板是在未超过团队成员负荷的同时致力于即时交付的一个简单方法。它和scrum中在最后交付最大化价值的目标一样,但它比scrum更加灵活。


看板不是软件开发社区发明的。实际上,它来源于丰田的制造过程,并且已广泛应用在其他领域。没有你需要遵循的严格过程,也没有你需要实现和使用看板的严格方式,而是,有一系列原则和实践你可以从中选择以适应你的需要。但在软件开发中有一个最常使用的看板实现包含了看板白板的使用,它包含了代表工作状态的列,和任务。


列代表着开发过程中各个任务的状态。简单的示例包含着这三列:”待办“,”进行中“和”已完成“。所以,任务可以添加到”待办“,当任务开始时移到”进行中“,并且移到最后一列时被当作为”已完成“。当然,它也可以更加复杂:

“Backlog” --> “定义规范” --> “准备开发” --> “开发” --> “code review” --> 
“测试” --> “部署” (--> “没人使用” --> “移除”)。


每一列都有其子列;例如,“开发”可以划分为“计划”和“编码”;“测试”可以划分为“单元测试”和“集成测试”,等等。如果适当的话,列也许专门针对于专家。团队根据需要定义列和状态。每一个“拉”的理念,仅当需求是即时时任务才能进入此工作流。

这个白板的目的是为了可视化工作流,这也是看板中首要关键的实践。实际上,看板也可以一点也不用白板!它可以是在Google表格中通过不同的背景色代表任务状态的简单的任务列表,或者可能是甘特图,图,表。。。它甚至可以是办公室中一系列的桶,每个桶代表着任务不同的状态,而球则当作是任务来使用。只要能可视化工作流以及提供整个过程的透明度即可。


另一个重要原则是少你努力的批次。简单地,这意味着避免多任务。这意味着减少你同时工作的任务量。如果你的团队中有三个设计人员,那么团队将会在“设计”这一列中设置最大的任务量为三。


像scrum一样,看板也在过程中把团队视为最重要的计量。但它并不像scrum那样建议角色,并且你可以保持既有的角色以免对已有的流程作出改变。针对持续提高相同的标准:看板通常喜欢你学习和持续提高,却不像scrum的sprint回顾那样为此指定具体的事件。


我应该使用哪个?

scrum和看板并不是相互排斥的但也并非可以完全兼容。在scrum中,有定义好的角色,而看板则会说,“搞什么鬼,保持你当前的角色和职责就可以了。”scrum会强制你改变工作的方式;看板则允许你从既有的流程开始。在scrum中,框架会对事件制定一个清晰的时间表;在看板你并没有事件。然而,他们也在着大量的相同之处:两者都是以价值为中心,团队成员被尊称为系统中的“老大”,并且本质上,他们有着相同的使命:不断消除浪费并消除障碍。


但问题,“在我特殊的项目和特殊的团队中我该使用什么?”意味着更多的场景。看板不要求那么多的流程和文化改变,且在大多数情况下,相比scrum它更容易适应。另一方面,scrum明显地提供了更多引导流程的结构,以便当很多人都在相同的页面时可以消除大量的开销。


但这两者之美都不是一系列严格的规则。没什么可以阻止你为自己拾取和选择最好的scrum元素,例如每日站会和回顾。也没理由你不能将看板白板和scrum结合起来。


scrum已被证明当整个团队能很好理解它时它是一个高效的框架。然而,在我的经验中,我发现和某些客户在scrum中一起工作时很困难。针对合适的scrum实现而要求的过程和文件变化太多太多了(特别当处理相信他正在创造一个谷歌的人时)。另一方面,看板更为灵活且不强制人们作出改变。有些作者也说看板是通往敏捷性的一个好途径,且比scrum提供更容易的实现。其他人则说使用scrum应该最终会引入看板。


真相则是每个项目都是不同的,没有放之四海而皆准的解决方案。作为一个项目管理者,由你来决定对于你的团队什么最有用。


本文翻译作者为:dogstar,发表于开源中国个人博客;欢迎转载,但请注明出处,谢谢!

© 著作权归作者所有

共有 人打赏支持
暗夜在火星

暗夜在火星

粉丝 150
博文 150
码字总数 310930
作品 1
广州
程序员
Scrum敏捷研发体系初探

在开始之前还是先来做个对比: 通过以上对比,我们发现,每一种研发过程模型都是在一定的历史背景下形成的,而且有各自的使用场景。当下“互联网+” 已深入人心,软件行业也在适应时代变化要...

yown ⋅ 2016/07/30 ⋅ 0

定制你自己的敏捷方法:选择适合用于你的敏捷方法

本文要点 你的团队是独一无二的。你的敏捷方法应反映团队所处的环境。 在团队层,通常会以时间箱或计划、演示和反思的节奏来开展工作。 为治理流程,研究你的WIP(在办任务)以搞明白你自己的...

Johanna Rothman ⋅ 2017/12/11 ⋅ 0

到底是Scrum错了还是王大爷错了

我既喜欢Scrum又喜欢王大爷,当我看到王大爷写的《远离敏捷状态的Scrum》,我就在想到底是Scrum错了还是王大爷错了。仔细读完文章以后,我发现Scrum和王大爷都没错,是题目错了,典型的标题党...

葛亮 ⋅ 01/11 ⋅ 0

著名看板任务管理工具推荐:使用Trello开展KANBAN工作法

最早接触看板是在敏捷开发的SCRUM模式中,当时每天早上大家都会站在一个看板前,团队每一位人员都向大家介绍昨天和今天的任务情况,并把相应的卡片移动到合适的栏位(TODO、DOING、DONE)。后...

yaotingxi ⋅ 2015/11/03 ⋅ 0

《Scrum精髓》 读书笔记1

原本是计划这个周末把产品研发项目的运作流程和规范好好写一下,周六早上列了提纲。之前的想法只是把要点列出来,产品研发已经确定要按照Scrum方式运作,大家对Scrum应该都是理解的,所以应该...

越爸刘伯 ⋅ 01/29 ⋅ 0

漫画解读软件开发模式

作者:伯乐在线 - 艾凌风 1913 年,美利坚工业之神——亨利福特,发明了世界上第一条流水线,汽车工业从此进入了大规模生产的时代。丰田公司提出的丰田生产系统(Toyota Production System)...

bjweimengshu ⋅ 2017/12/24 ⋅ 0

来自农行软开的看板站会秘籍和敏捷转型经验

农行软件开发中心二部从2017年底开始启动敏捷转型,以春天工程为试点项目组,探索出了一套适合传统银行的敏捷开发模式。 作为这个团队的外部敏捷教练,我有幸参与了这个团队转型的全过程,目...

leixu ⋅ 04/25 ⋅ 0

漫画解读:通过造车来了解软件开发模式 ​​​​

本文作者:伯乐在线 -艾凌风 。未经作者许可,禁止转载! 欢迎加入伯乐在线专栏作者。 1913 年,美利坚工业之神——亨利福特,发明了世界上第一条流水线,汽车工业从此进入了大规模生产的时代...

伯乐在线 ⋅ 2017/12/14 ⋅ 0

敏捷开发Scrum

什么是敏捷开发? 敏捷开发(Agile Development)是一种以人为核心、迭代、循序渐进的开发方法。 怎么理解呢?首先,我们要理解它不是一门技术,它是一种开发方法,也就是一种软件开发的流程,...

FTD_SL ⋅ 2016/12/09 ⋅ 1

使用国产优秀的敏捷团队协作工具LEANGOO开展SCRUM看板工作

之前的这篇文章里我介绍了国外优秀的看板协作工具Trello,可以帮助我们管理团队任务或者自己的任务安排,并形象化的把这些任务放到看板上,更加直观的看到任务的状态。今天我想介绍给大家的是...

yaotingxi ⋅ 2015/11/16 ⋅ 1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

RabbitMQ学习以及与Spring的集成(三)

本文介绍RabbitMQ与Spring的简单集成以及消息的发送和接收。 在RabbitMQ的Spring配置文件中,首先需要增加命名空间。 xmlns:rabbit="http://www.springframework.org/schema/rabbit" 其次是模...

onedotdot ⋅ 17分钟前 ⋅ 0

JAVA实现仿微信红包分配规则

最近过年发红包拜年成为一种新的潮流,作为程序猿对算法的好奇远远要大于对红包的好奇,这里介绍一种自己想到的一种随机红包分配策略,还请大家多多指教。 算法介绍 一、红包金额限制 对于微...

楠木楠 ⋅ 29分钟前 ⋅ 0

Python 数电表格格式化 xlutils xlwt xlrd的使用

需要安装 xlutils xlwt xlrd 格式化前 格式化后 代码 先copy读取的表格,然后按照一定的规则修改,将昵称中的学号提取出来替换昵称即可 from xlrd import open_workbookfrom xlutils.copy ...

阿豪boy ⋅ 58分钟前 ⋅ 0

面试题:使用rand5()生成rand7()

前言 读研究生这3 年,思维与本科相比变化挺大的,这几年除了看论文、设计方案,更重要的是学会注重先思考、再实现,感觉更加成熟吧,不再像个小P孩,人年轻时总会心高气傲。有1 道面试题:给...

初雪之音 ⋅ 59分钟前 ⋅ 0

Docker Toolbox Looks like something went wrong

Docker Toolbox 重新安装后提示错误:Looks like something went wrong in step ´Checking if machine default exists´ 控制面板-->程序与应用-->启用或关闭windows功能:找到Hyper-V,如果处......

随你疯 ⋅ 今天 ⋅ 0

Guacamole 远程桌面

本文将Apache的guacamole服务的部署和应用,http://guacamole.apache.org/doc/gug/ 该链接下有全部相关知识的英文文档,如果水平ok,可以去这里仔细查看。 一、简介 Apache Guacamole 是无客...

千里明月 ⋅ 今天 ⋅ 0

nagios 安装

Nagios简介:监控网络并排除网络故障的工具:nagios,Ntop,OpenVAS,OCS,OSSIM等开源监控工具。 可以实现对网络上的服务器进行全面的监控,包括服务(apache、mysql、ntp、ftp、disk、qmail和h...

寰宇01 ⋅ 今天 ⋅ 0

AngularDart注意事项

默认情况下创建Dart项目应出现以下列表: 有时会因为不知明的原因导致列表项缺失: 此时可以通过以下步骤解决: 1.创建项目涉及到的包:stagehand 2.执行pub global activate stagehand或pub...

scooplol ⋅ 今天 ⋅ 0

Java Web如何操作Cookie的添加修改和删除

创建Cookie对象 Cookie cookie = new Cookie("id", "1"); 修改Cookie值 cookie.setValue("2"); 设置Cookie有效期和删除Cookie cookie.setMaxAge(24*60*60); // Cookie有效时间 co......

二营长意大利炮 ⋅ 今天 ⋅ 0

【每天一个JQuery特效】淡入淡出显示或隐藏窗口

我是JQuery新手爱好者,有时间就练练代码,防止手生,争取每天一个JQuery练习,在这个博客记录下学习的笔记。 本特效主要采用fadeIn()和fadeOut()方法显示淡入淡出的显示效果显示或隐藏元...

Rhymo-Wu ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部