水曜日, 12月 17, 2008

Chapter 04

老实说,一开始我并不喜欢Scrum。

当然现在也不是很喜欢。最初,我觉得这是一种防止开发团队无所事事——虽然它的目的的确如此——而强加于上的花样,就好像搬新居后给猫爪子涂的黄油。意义不大,但能让你且折腾。在此之前,激励队伍提高效率的方法简单而没有成效,要么就是威逼利诱,要么就是夸大其词,无非就是动员宣讲胡萝卜大棒那一套,空虚而无聊。有时候他们会找一个洋人——多半也是洋人,他们身居要职——走上前来,感谢每一个人难以置信的努力,告诉他们所有人都是不可或缺的——其中一两个听众攥着别的公司发来的聘用信琢磨着在被开除之前找个更好的下家。听得多了你就会发现,那些关于洋人的说法多半都是些道听途说。他们也不是什么道德情操皆高尚的圣人君子,他们也会说囫囵的官话打哈哈,拿车轱辘话先忽悠住你在说。明白了这一点后,动员讲话就变得越来越不起作用了,这个时候不知道谁提出来搞Scrum。

据我所知在Scrum之前IT业也好,普通白领企业也好,都在寻行之有效,甚至是放之四海而皆准的管理方法:这就很像那些初入行的理想主义者,想一劳永逸地找一个至少相对而言比较完美的解决之道。从前我们使用的是所谓基于瀑布式开发的管理,单向、从上至下、常常返工。但是这种方法最终被演变成一种形式主义,很多时候负责人会跳进来横插一脚,大声地嚷嚷着说这个不行,那个也不行,你们都是一班废物,然后撂下剩下一半看都不看一眼,夺门而去。大家面面相觑,不知道该怎么办才好:剩下的东西还等着检阅通过呢,拿主意的人就这么爆走了。于是后来就出现了很奇妙的事情:助理制作人和团队干部事先检阅,揣摩上峰的意思,优先拿过得去的东西给他们看,并且祈祷他们尽可能晚地暴怒槽。用完成度高的部分来稳住人心,讨好他们的心情,随后希望能在负责人最终发怒之前看完整个项目的内容并至少做一些可供参考的批示,以便能够进一步地继续后来的开发。听上去和国营企业的管理方式不乏相似之处不是么?很显然,经历了几次这样的弯路,人们发现这么干对以后并没有什么好处,于是他们开始使用Scrum。

从这种开发方式的几个明显特征来看,我觉得它过分强调自主性而显得带有一些监视色彩。团队被划分成小部分,他们每天在一块白板前站十几分钟,每个人都要说出自己昨天干了什么、接下来要干些什么、以及是什么妨碍了他们所干的事情,然后所有人严格遵循事先订下的计划和工作量,谁都不允许横插一脚。假如你想跑进来说三道四,最起码得先走一个程序上不算简单的流程:提交一个任务,让团队进行工作量和重要性的估算,指定相关的负责人员并监督……基本上都得在第二天的会议上提出并通过。听上去就像小学老师把人一个个拎起来教督导课,或是每天的董事例会。我直觉上觉得这种方式除了流露出不信任感和很多程式化的过场以外,还不利于创造性思维的展开。任务并非由实际开发者所提出,而是由最高的负责人提纲挈领:游戏设计师或者是内容总监。按照我们同事的话来说,就是一个大脑袋带着一帮整合人呼啦呼啦地干:大脑袋负责提供点子和构思,底下的一干小弟就把东西整合进引擎里,完活!既安全,又不会有人背黑锅,负责任的和监督的他就是同一个人,只要按着上头的意思干哪儿有不通过的道理?皆大欢喜皆大欢喜!

按理说,Scrum提倡站着开会,每次会议不超过十五分钟,与会人数不要过多以免造成时间上的冗长,这些都是防止工作人员在枯燥的会议中昏昏欲睡的手段。然而一旦到了估点会——负责人和团队成员遍历下一个进程需要做的任务,为每一个任务估算理想的任务点——好了,你的这三四个钟头就算折进去了。更要命的是,这种会议每两个星期(视乎你们的进程长度)就要开那么一次,而且多半是在快要周末的时候。每到那时,人们都会有“这是周五么?”的错觉。因为只有在周五,惦记着大好周末的时候,大家才会这么拼命地把手头的活儿都结了,无事一身轻地休息。开着这种会,我总会想起Volition的招聘宣传词:瞧,你就像我们这儿的哥们儿一样,爱做游戏,但不只是爱做游戏。你想和富有创意,有些极品但不无才能的人们共事,同时也有自己的生活。也许你想贷个款买个房,上班路上绝对别超过一刻钟,平时可以有时间宅一宅,晚上和家人或相好的一块儿过。星期五晚上坐在酒吧外头拿着瓶凉的瞧西洋景,管他什么3DMax还是Perforce。反差啊,我的朋友们!总之这种星期五我是没有过过。

不过,假如你就像我所提到过的,能够学会乐观思考,那么整个事情其实也不是那么难熬。开那么一两次每日例会以后,我发现这个揭皇榜式的工作模式特别具有漫画喜感。大负责人每个进程开始天把大把的任务写在巴掌见方的纸上,吧唧吧唧地贴一白板。群众们熙熙攘攘地拥过来,七嘴八舌:我能做这个,他能做那个……一边说一边把任务拿下来,放到“进行中”一栏里。有时候那些做好任务的人,则把“进行中”属于他们的任务从磁吸或者透明胶下面拿出来,贴到“终了”那一栏,随后拽着相关的责任人验收,就差没有领赏头了。这种仪式每天举行,周而复始,像极了一群为生计所困的勇者在村子的公告板前面接支线任务。你这么一想,很没劲的工作就会变得滑稽起来。而且它还带着一种方法论的荒谬:本来能够电子化的工作流程,偏偏要搬到纸上来,为的就是更方便监督鞭促,按照同事的话来说:“这个东西会让你变得更有效率,努力工作,不为什么,凭的就是你的羞耻感。”好一个羞耻感!但不无讽刺的是,虽然在提高工作能效上的确卓有成效,但是其方法本身则比以前更花时间,而且违背了一度甚为提倡的无纸办公——我们每个进程两周,每次一个组提交的任务不下两打,平均每个任务的执行人都要在白板上贴一张属于自己的签单。三四个组两周工作下来,扎成捆的废纸得从货运电梯走。

原本是有电子化的程序可以搞定这一切的。Scrum原本就是为了迎合敏捷开发而产生的一种方式,你用一个叫做Effective的东西就能简单地做到跟踪和监控各路人马,看谁没有好好地把屁股揿在自己的凳子上好好干活。但是我们已经有够多乱七八糟的玩具了:除去引擎不算,Google Sketchup、Perforce、Adobe Breeze……还没算上程序自己写的,用来得引擎版本的各种插件和自定义软件。再者说了,采用Scrum的本意就是让大家动起来——虽然这一点咱们做的不是特别好,大部分人还是喜欢懒在自己屁股下的凳子上——你忘记了还有什么东西要做,或者什么东西是急着要的,或者干脆想不起来自己要干什么了,再好不过!站起来,朝白得刺眼的那一大块径直走过去,查看一下你想要知道的信息,不管能够转换心情放松疲惫的身心,还能够理清思路。听上去有些言过其实,但是相信我,经过长期脑力劳动,尤其是盯着显示器上论坛刷开心网什么的,无论你干什么,哪怕是对着双20寸DELL显示器,你的身体也不会因此而减少一丝疲惫。而从是我们这一行的,那可是说要多懒就有多懒。就算你扛着一挺火箭炮对着我们的同事,他的反应可能也仅仅是瞟你一眼,不紧不慢地嘟囔着“给我带瓶喝的吧,钱上来给你……”因此在抽大家鞭子这一点上,我还是比较赞同Scrum的。只是这种理论概念式的东西,很难让人有一个理性的理解,就好像基金证券或者股指期货。它是什么?某种license么?靠贵得离谱的版权来弥补财政支出么?它是一种软件捆绑的方式方法论么?它的盈利依附于软件零售么?对那些一无所知,又很难有直观了解的东西,避而远之一向是我们与生俱来的本能。只不过当后来我了解到,敏捷软件一部分是靠卖它那些个看上去不能再普通,但价格令人咋舌的扑克儿来赚零花的时候,我只能表示哭笑不得。这些扑克用来在给任务估点的时候出价,就像小型的竞标道具。我们倒是买了挺多,但大多数时候大家都不会严格遵守规则去用,最近更是因为低点数的牌不够,直接在多出来的那些个100点上拿油性笔改个数字。是的,你也看出来了,只要你愿意,这些小道具也能自制,没什么不可以的。但是,嘿,那样不是显得不够专业么?!还有那些认证的Scrum讲师,总让人想起IT业里持着一大叠证书却让人完全不明白他究竟能干些什么的角色。好吧,你可以说我持有偏见,也许它并不是最适合于游戏开发。不管怎么说,最后略带官僚主义作风的Scrum还是被我们私底下潜规则了。有些不是那么花时间的任务,大多数基本上只是举手之劳,你会发现有个人匆匆地走过来,手上拿着一张纸,啪地贴在白板上。两分钟以后还是他,还是那张纸,从“进行中”直接贴到“完成”栏,随便找个知情的人签字验收。有时候连这些步骤都省了,不甚重要的工作量又回到了以前私人手工作坊的打黑工模式。模型忘记把Max文件按正确的格式导出了,算了算了,我帮他弄好了上传,不然我的工作都没法儿继续;GPP的数据传不上去了,我这儿帮他在本机改一下上传;甚至说,想要打印任务详细没纸了,打印机连不上了,磁吸不够用了,我活儿都干完了,于是想想自己心里有数就可以了,也未必就会认认真真地朝大白板子一一汇报自己的工作情况。按照老一辈无产阶级革命家的较真劲儿来说,我们这就叫做工作态度不认真,缺乏责任感,精神面貌涣散。虽然表面上看来不会有什么的大问题,但总有一天鸿毳沉舟,追悔莫及云云……

树挪死人挪活这句话,总归是有道理的。