第二讲 Scrum 简介

第二讲 Scrum 简介

00:00
28:35

讨论主题 

1. Scrum是什么?

2. Scrum能干什么?

3. Scrum的理论基础是什么?

4. Scrum的价值观是什么?

Scrum是什么? 

Scrum这个名字起源于英式橄榄球的对阵争球,争球双方各有8名队员参与,各方出3名前锋,并肩各站成一横排,面对面躬身互相顶肩,其他前锋队员分别站在后面,后排队员用肩顶前锋队员的臀部。


把橄榄球对阵争球的场景和接力赛场景对比,我们看看两者什不同?橄榄球运动,团队作为一个整体前进,而接力赛大部分时间,是一个运动员跑,其他三个站着看。1986年,有人首次提到将Scrum应用于产品开发,他们指出:传统的“接力式”的开发模式已经不能满足快速灵活的市场需求,而整体或"橄榄球式"的方法 ----团队作为一个整体前进,在团队的内部传球并保持前进,这也许可以更好的满足当前激烈的市场竞争。1993年Scrum之父Jeff Sutherland首次将Scrum用于软件开发,2001年敏捷宣言及12条原则发布、敏捷联盟成立,从此Scrum作为一种主流的敏捷方法,被越来越多的人接受。2002年Scrum联盟成立。我们所说的CSM认证就是Scrum联盟颁发的认证。


好,关于第一个问题:Scrum是什么?我们现在了解到Scrum是一种"团队作为一个整体前进"的开发模式,是一种敏捷方法。接下来,我们讨论第二个问题Scrum能干什么?

Scrum能干什么?  

Scrum Guide是这样定义Scrum的:Scrum是一个框架,在这个框架中人们可以解决复杂的自适应问题,同时也能高效并创造性地交付尽可能高价值的产品。


这个定义中有三个点,我来解释一下

第一、框架

什么是框架?比如一栋建筑物,有地基、有墙体、建筑物的房间里有家惧。哪个是框架?哪个不是框架?对,地基和墙体构成了建筑物的框架,而家俱不是框架。框架指那些基础性的、原则性的东西,框架必须稳定。动摇地基,毁坏承重墙,建筑物是会倒塌的!对吧?同时,框架又允许对其进行灵活的填充。建筑物的房间里,可以填充和更换各种各样的家俱。对吧?Scrum就是这样的一个框架,Scrum有稳定不变的东西,包括Scrum团队,团队的角色、团队要进行的活动和产出的工件、以及scrum规则。Scrum也有需要填充的、进行内部定制的东西,比如说应该使用什么工具管理产品需求?用Jira管理也可以,用Excel表格管理也可以。Scrum并不规定这些具体实现的细节,这些细节需要Scrum Master根据具体环境来确定和落实。


第二、复杂问题

根据软件开发维护工作的复杂程度,可以把软件相关工作分为3类:简单问题、繁杂问题、复杂问题。简单问题指需求很明确、很稳定、不会变化,需要掌握的技术很简单,最佳解决方案显而易见。比如安装一个软件,一路点“下一步”,就安装好了。繁杂问题指诸如软件日常维护、修bug之类的工作。复杂问题指创新型的新产品开发,或者现有产品的创新型的新功能的开发。Scrum最适合用来处理复杂问题,指导创新型软件开发工作。


第三、高价值

像敏捷12条原则的第一条指出的那样"我们最重要的目标,是通过持续不断地及早交付有价值的软件使客户满意。这里的价值指对客户有价值,指商业价值。Scrum并不追求软件开发范围最大化,不认为开发的功能越多越好,而追求商业价值最大化。


最后,我们用三句话总结一下Scrum能干什么。第一句,Scrum是一个框架,它告诉我们Scrum团队的角色、进行的活动和产出的工件不能变,又允许我们自定义实施Scrum的具体细节。第二句,Scrum最适合用来指导创新型产品的开发。第三句,Scrum帮忙我们交付高价值产品。

Scrum的理论基础 

Scrum基于经验型流程控制理论,或者称为经验主义。经验主义主张知识源于经验,基于已知信息做决策。


什么是经验型流程控制理论呢?我们举一个例子:滑雪。在Scrum大师Ken Rubin的敏捷经典Z著作《scrum精遂》中,Ken讲到这样一个故事。他的朋友John给他看一张自己在雪峰冒险的照片,Ken好奇的问了他的朋友一个简单的问题。当你在山顶上准备滑行时,会先计划好整条下山路线吗?John轻笑:“不会,那样做简直就是找死。我会在山峰下不远处选择一个点。第一个目标是滑到那个点。或许我会计划眼前的两三个弯。事实上,规划太多不只是不可能,还很危险。受光线或其他因素的影响,实际地形不同于我们在山顶上看到的。另外,滑雪路线上有些地方可能有树,但你在山顶上是看不到的。如果我决定在某个地点右转,并且也确实照着做,很可能会撞在那些树上。你根本不知道什么时候必须改变路线或者为什改变。”


这个滑雪的例子很好的向我们展示了一个经验型环境:在山顶上,我们看不到所有地形,就是说,一开始,已知信息非常有限。一边滑,一边看到更多的地形。就是说,已知信息会越来越多。在山顶规划整条下山路线是不可能的,甚至是危险的,应该选择不远处的一个点作为目标,只计划眼前的两三个弯。就是说,在经验型环境里,计划无法在一开始就确定下来,而不得不在开发过程中,逐步演进。在经验型环境中做计划,要看一步,走一步,再看一步,再走一步,如此循环。


与经验型环境中的演进型计划相对的,是传统的固定计划。比如瀑布模型中,一开始就把所有计划都确定下来。如果环境是非常稳定,需求是非常明确的,可以采用固定计划。如果环境是不确定的,需要像滑雪一样,一边滑,一边看,还能采用固定计划吗?不能,那样就会撞在树上。经验型环境中不得不采用演进型计划。


经验型流程有三大支柱透明、检视、调整。


透明

什么是透明?透明就是说,现况如何,大家都看得见。并且,对看得见的信息,有一致的理解。比如说项目的进度,哪些特性开发完了,哪些特性正在开发,哪些特性还没有开始开发,这些信息需要可视化。什么叫一个特性开发完了?用户能用了,但还有一个不起眼的bug,叫不叫开发完了?什么叫"完成",这需要明确定义。大家说到“一个特性开发完成”,彼此不会有误解。


看一个例子,一个软件项目,用Kanban管里特性的特性的状态,被拖到"完成"这一列的特性表示开发完了。对于“完成”的定义,这个团队定义为“没有bug”。那么这样的项目进度,是透明的吗?认为是透明的,请举手。对,是透明的。


再看一个例子,一个软件项目,某个特性是否开发完了,没有地方可以看到,要去问团队“这个功能开发完了没有?”开发团队说开发完了。客户一试用,发现3个bug,客户说“这个特性、没开发完啊!”双方扯不清了。这样的情况,大家看看,是透明的吗?对,不透明。


透明作为经验型流程的第一大支柱,对于加强管理,保证质量具有重要的意义。


检视

Scrum把整个软件开发的时间,以固定周期为单位,分成若干连续的迭代。每个迭代我们称为一个冲刺,英语是sprint,每个冲刺需要确立一个小目标,叫Sprint Goal。冲刺中间,要检查本冲刺的这个小目标是否能达成。冲刺结束的时候,要看看为了实现产品愿景,最终实现大目标,下个冲刺需要确立一个什么样的新的小目标。这些就是检视。


调整

当检视发现偏差的时候,需要调整。例如和客户一起开冲刺review会的时候,客户一方面提出新需求,另一方面对已经开发好的某些特性表示不感兴趣了。那么就应该按照最新了解到的客户的需求确定下一个冲刺的小目标。这是在需求方面的调整。


在开发流程方面,也需要调整。例如我们发现有一个特性的开发进度比较慢,bug多。这时应该怎么办?调整,对!怎么调整?


假设开发进度慢的原因是,这个特性的开发者是一位新员工,他对当前的软件系统还不太熟悉。该怎么调整?这时候其他的老员工应该帮助他,给他介绍一下软件系统,和他结对编程,给些指点,带领新员工共同进步。还记得Scrum这个名字的由来吧?团队作为一个整体前进。


假设bug多的原因是,没有时闻测试。应该怎么调整?可以引入自动化测试工具!引入测试驱动开发这样的工程实践。


假设开发进度慢,bug多的原因是,这个特性的开发者上班偷偷刷淘宝,玩手机游戏。应该怎么调整呢?大家可以思考一下~


频繁检视,及时发现偏差很重要,有办法纠正偏差更重要。检视和调整确保了Scrum团队始终工作在正确的方向上,以越来越流畅的团队配合,共同开发高价值的软件。

Scrum的价值观  

Scrum的价值观有5条:承诺、勇气、专注、开放和尊重


1.承诺

什么是承诺?咱们先撇开Scrum,撇开软件开发,谈谈生活中的承诺,生活中郑重的承诺。我们一起读一读教堂婚礼宣誓词。


新郎说:

我将珍惜我们的友谊,爱你,不论是现在,将来,还是永远。

我会信任你,尊敬你,

我将和你一起欢笑,一起哭泣。

无论未来是好的还是坏的,是艰难的还是安乐的,我都会陪你一起度过。

无论准备迎接什么样的生活,我都会一直守护在这里。

就像我伸出手让你紧握住一样,

我会将我的生命交付于你。


大家来看这些句式:我将...我会...无论...我会....

好,回到软件开发,回到我们讨论的主题,Scrum价值观。如果把新郎换做Scrum团队的一名开发者,把新娘换做Scrum团队的目标,我们会惊喜的发现,以上结婚誓词完成可以用来表达一名软件开发者对于达成目标的承诺。各位都是软件开发者,假设软件开发工作是你一生的挚爱。现在你对当前一部分开发任务进行承诺,你的承诺是怎样的呢?各位可以自己试着写写.....写好了请和大家分享你的承诺。


我将完成XX特性的开发...

我会学习和尝试相关的xx技术...

无论遇到什么困难,我都会和相关同事一起,攻破难关。

我会全力以赴,圆满完成xx特性的开发,达成本冲刺的目标。


写的非常好!

回到Scrum活动中,Scrum价值观不是嘴上说说的漂亮话,而是落实在Scrum活动中的具体行为。价值观不是口号,是信念。我们说践行Scrum价值观,意思是在Scrum开发活动中,秉承这样的信念,去做开发工作。在Scrum计划活动中,产品负责人树立冲刺目标。为达成目标,产品负责人需要得到来自Scrum开发团队的每位开发者的承诺。产品负责人说明有哪些特性等待开发,开发团队从待开发的特性列表中,主动认领某些特性。这里强调“主动认领”,这个主动认领的行为,就是每位开发者对达成目标所做的承诺。认领了,就表示愿意承担这项工作,答应达成目标。


2.勇气

在讨论Scrum价值观之前,我们讨论了三个主题,在讨论第二个主题“Scrum能干什么?”的时候,我们讲到Scrum的定义。来,咱们一起复习一下:Scrum是一个框架,在这个框架中人们可以解决什么样的问题?是简单的问题吗?是繁杂的问题吗?对,是复杂的问题。我们了解到Scrum最适合用来处理复杂问题,指导创新型软件开发工作。在开发创新型产品的过程中,Scrum团队会遇到两类困难,需要回答两个问题。第一类困难是需求不确定,我们要“开发什么样的产品啊?”这是Scrum团队需要回答的第一个问题。我们用what来表示。第二类问题是方法不确定,我们要"怎么开发这个产品啊?用什么技术?用什么工具?团队怎么配合?都不确定。这是Scrum团队需要回答的第二个问题。我们用how来表示。创新型产品开发过程中,Scrum团队需要同时回答“what”和“how”这样两个问题。大家一边做一边学,从客户反馈中,从自己的经历中不断总结经验教训,探索出一条成功之路。Scrum团队需要面对这么多困难的问题,“向困难挑战的勇气”是必备的。反过来说,只愿意被动服从领导的安排,像棋子一样,推一步,动一步,遇到困难两手一摊,说"我已经尽力了"。这样的开发者,没有勇气。缺乏勇气的开发团队无法胜任创新型产品开发。


3.专

怎么理解专注?我拿一个孩子做作业的状态做比喻,大家一起来分析一下。

一个初中生,晚上做作业。他把数学、语文、外语、物理4门课的作业部堆在桌子上。看看数学,做了两道题,第三道题好像有点难,不会做。那就做语文吧,刚抄了一首古寺,又想起来英语明天要考试,抓起英语书背单词。背了一会儿,感到很烦,放下英语书,又打开物理作业本。就这样东一榔头、西一棒。一个小时过去了,哪门功课的作业也没做完。两个小时过去了,还是没有一门功课能够结束。3个小时过去了,这个学生趴在书桌上睡着了,4门功课的书、作业本仍旧乱七八糟地堆在桌子上。


我们看这个学生,他并不懒,对吧?他一直在学习。但他的学习效率怎么样?他专注吗?


再看一个学霸是怎么学习的。学霸把时间分成几段。第一节课做数学,第二节课背英语,第三节课做物理和语文。每节课40分钟,课间休息10分钟。一个晚上学习两个半小时,作业全部搞定。


我们看这个学霸,学习效率怎么样?他专注吗?


显而易见,学霸的专注在于他为自己设定了时间盒,每40分钟为一节课。对毎个时间盒,学霸为自己设定了明确的小目标。第一节课的目标是完成数学作业,第二节是背英语。在时间盒内,学霸全力向目标冲刺,即使遇到难题,也坚决搞定它!绝不分神。


这就是我们说的"专注"!


回到Scrum.价值观,“专注”指Scrum团队中的每个人,专注于当前冲刺的工作和Scrum团队的目标。咱们可以这样想,咱们Scrum团队中的每个人,都是学霸,都用学霸的学习方法,高效的进行开发工作。把时间分段,树立小目标,然后在时间盒内,褥除杂念,心无旁鹜,全力向目标冲刺!


4.开放

开放什么?对于开放的内容,我们要准确理解。


曾经有位年轻的开发者和我聊天。她说:“我觉得我是一个开放的人。我愿意和团队里的其他人分享很多事。但后来我感觉有些失望。”我就问:“你分享了什么?他们怎么让你失望了?”她就说:"我的兴趣、爱好,我和男朋友之间的烦恼。有些人并不愿和我分享他们的这些东西。”大家帮这位年轻人分析分析,什么地方出问题了?


我们说Scrum价值观里的开放,指对于工作内容和开展工作时遇到的所有挑战,对Scrum团队和所有干系人开放。例如,代码共有。任何一位开发者写的代码,其他人都可以看到。再例如,客户对上个版本的反馈意见,无论是肯定的,还是否定的意见,Scrum团队中的每个人都知情。


Scrum价值观中的开放,与人际沟通,心理学中的开放,所指内容不同。Scrum价值关中的开放,强调与工作有关的内容。刚才我说的那个例子中,那位年轻的开发者开放的内容是什么?兴趣、爱好、男朋友,这些与工作有关吗?没有关系。对于个人隐私,自己决定开放或者不开放,自己判断对哪些人开放,对哪些人不开放。对工作,比如说源代码,客户反馈意见,要对Scrum团队所有成员和干系人开放。


5.尊重

尊重是Scrum价值观中的最后一个,也是最容易理解的一个。我从事软件流程工作十几年来,和上百个开发团队打交道。我感到,在开发团队内部,尊重是开发者们做的最好的方面。软件开发者大多毕业于计算机系。多年工科院校的训练,使得开发者具有谦和、平等、理性等集体性格。开发者们在讨论技术问题时,很活跃,在给彼此提建议时,很客气,很温和。人人都懂得,一个团队中的同事,也是伙伴。

总结 

最后总结一下,第二讲我们一共讨论了4个主题。

一、Scrum是什么?

Scrum是一种"团队作为一个整体前进"的开发模式,是一种敏捷开发方法。


二、Scrum能干什么?

Scrum是一个框架,它最适合用来指导创新型产品的开发,帮忙我们交付高价值产品。


三、Scrum的理论基础是什么?

Scrum基于经验型流程控制理论,在经验型环境里做计划,要看一步,走一步,逐步演进。经验型流程有三大支柱透明、检视、调整。


四、Scrum的价值观是什么?

5点:承诺、勇气、专注、开放和尊重。

以上内容来自专辑
用户评论

    还没有评论,快来发表第一个评论!