Scrum在大型游戏团队中的应用

来源:互联网 发布:python思想 编辑:程序博客网 时间:2024/05/08 10:59

当游戏遇到了Scrum

编辑段落  Scrum并不是什么高深的管理方法,Scrum的科学原理中,没有什么是值得被拿出来,放在学术界讨论的东西,就连其估算方法,也是使用了看似游戏一般的扑克牌估算法,实在是难登大雅之堂。Scrum的指导原则很简单,没有把软件开发中的所有的事情都详细的规定,或许可以说,Scrum只明确阐述了极少数的几个问题,Scrum容忍混乱,甚至是一种对于混乱的妥协。但是Scrum成功了,在很多领域中都获得了巨大的成功,究其原因,在于Scrum抓住了软件开发中最终要的因素:人的管理。不同于传统的开发方法集中于对过程的探索与执著,Scrum完全抛开了繁琐的过程,把软件开发重新放在了人的身上,Scrum妥协,容忍混乱,不使用复杂高深的管理方法,就是在于他要将人凝聚成一个团队,让团队来完成软件,而不是让规则、标准、过程和文档来完成软件。

我的Scrum和游戏开发管理经验来自于我的工作,我所在的公司是一家软件研发管理工具供应商,帮助全世界的游戏公司管理其开发过程,也包括了中国的游戏公司。我所深入接触过的十余家大型游戏公司,全部对敏捷开发表示了强烈的兴趣,我也亲自帮助其中的部分游戏公司的多个游戏项目组实践了敏捷开发,并取得了良好的成绩。

我在今年早些时候或了的Scrum联盟授予的Scrum Master认证,在参加认证课程的过程中,引发了我对于Scrum和游戏开发的深入的反思。

共同的核心价值

看了Scrum的科学原理和游戏项目开发遇到的问题,我们不难发现他们之间存在着很多相

似的价值观。

Scrum希望能够在最短的时间里完成最高价值的功能,游戏也是如此,策划们会提出海量的需求,永远不可能做完,又要在规定的时间上线,这就使得游戏开发团队不得不在规定的时加内,完成最高价值的需求

Scrum拥抱变化,不做完美的需求文档,而是在每个Sprint结束后,对产品Backlog重新进行一番审视,主动地去接受变更,改变产品Backlog,以确保能在下一个Sprint内开发出最重要的内容。游戏团队开发也是如此,策划人员需要不停的根据玩家反馈、市场变化等因素来调整游戏的策划案,开发团队需要以一种积极应对的方式来处理策划变更。

Scrum不做完美的开发计划,多变更的环境中,没有任何一个计划能被良好的执行,如果我们不能执行一个既定的计划,那么我们不如不制定这种计划,而是用另外的方式,基于承诺的方式来完成开发工作。有过游戏开发经验的人都知道,游戏开发根本不能按照既定的计划进行,但是不计划又没法管,而Scrum正式提出这种非计划驱动型的研发管理方式。

游戏中很多文档的价值很低,如功能分析与设计文档,当产品被制作好以后,这些文档便没有了任何价值,一个功能和其他功能的关联,也都在策划文档中有详细的记录,因此在开发过程中,根本不会尊寻传统软件开发中的先文档再开发的方法。同属于敏捷开发的Scrum方法也坚持交付有价值的功能,从而尽可能减少不必要的文档,这也正和游戏开发的做法完全吻合。

游戏对于产品质量有极高的要求,普遍高于一般的软件,传统的开发方法,不论是瀑布、RUP,总是会在开发后期时间内出现Bug大爆发,团队疲于奔命的应付Bug的局面,对于功能高耦合度的游戏而言,这简直是致命的。Scrum倡导风险前移,对于“完成”的概念有明确的定义,每个Sprint都以产品演示和评审作为结束标志,这对于提高产品质量,起到了关键的作用。

从以上这几点来看,Scrum的价值观和游戏开发管理价值观完全的吻合,Scrum完全可以运用到游戏开发过程当中。

然而,当游戏团队的项目经理们阅读了敏捷开发、Scrum的一大堆经典著作之后,大都提Scrum倡导弱分工,小团队应用。在强分工和大团队的游戏开发项目中,Scrum是否已经失去了它的立足的根基?

出了一个相同的疑问:

Scrum意味着改变
编辑段落

实施敏捷,尤其是要实施Scrum,就意味着我们要彻底改变传统的,计划驱动型的开发方法,这个改变不但包括了项目管理思路上的转变,对于团队的划分、项目流程,乃至工作方式,都要发生改变。同时改变也是双向的,开发者在改变的同时,Scrum也要根据游戏公司的实际环境发生相应的改变。Scrum实施成功的关键,就是做好从传统向敏捷的转变,Scrum实施的最大的风险,就是Scrum But,意思是说,虽然我们实施了Scrum,但是我们却没有遵守Scrum的核心要求做事情,也就是说没有做好彻底的转变。Scrum But导致了大量尝试Scrum的团队失败,并严重的误解了敏捷与Scrum

在接下来的文章中,会详细说明团队在使用Scrum中所作出的改变,以及这些改变的出发点及其重要性。

T公司的老纪和他的项目组
编辑段落

很抱歉,因为商业保密问题,在这篇文章中,我不能说明任何一家我所接触过的游戏公司的实际管理方法,连公司及其中的任何人员的名字等信息也不能使用,所以在下面的文章中,我会使用T公司来代表我所接触过的全部游戏公司,在下文中所使用的公司、项目、人员名称以及时间点均为虚构,请勿对号。

T公司是国内一家网络游戏开发、运营公司,有自己的开发、运营团队,T公司在游戏开发领域经营多年,有丰富的游戏开发经验。从去年开始,T公司开始正式在其中一个项目组中尝试使用敏捷开发方法,在这之前,T公司也一直尝试着在其开发方法中融入敏捷因素,但是一直没有正式的使用纯粹的敏捷方法。

该项目是一个新的网络游戏研发项目,项目经理是老纪,老纪虽说叫老纪,其实年龄并不算大,资历确实很深,曾经当过很长一段时间程序员,后来领导过两个个游戏项目,都取得了不错的成果,老纪并不是敏捷开发的忠实拥护者,对于敏捷开发的了解也是在实践敏捷的过程中逐渐积累起来的。但是他很乐意接受敏捷和Scrum能够带来的好处,因此在我们的帮助下,他很快的在他的项目组中实践了Scrum,并获得了良好的结果。

下面我们以T公司中老纪的项目组实践敏捷开发的故事来说说Scrum是如何被运用的。在下面的实践中,你可能会发现我们对传统的Scrum作了大量的改变,但是我们依然把握了Scrum的最核心本质,Scrum的团队构架,还有Scrum的最重要的实践活动