准备Scrum之旅 之 回家的故事 ——《轻松Scrum之旅》(11)

敏捷开发培训——回家的故事

 

    时间过得很快,关毅刚刚适应了新公司的工作环境和氛围,新鲜和兴奋劲儿还没过去,参加Agile培训的日子就到了。
    培训那天,他特意起了个大早,找到培训地点后,挑了个前排的座位坐下,打开电脑,又从兜里掏出了MP3准备录音。
    旁边的一位同事看见了,打趣地说:“哥们儿,装备真够全的啊,就差DV了。”
    “呵呵,听说是大牛嘛,还不得好好瞻仰一下。”关毅笑道。


    话音没落,就看见一位大胡子老外走了进来。首先是一番惯例的自我介绍,一连串英文单词不停地从他嘴里蹦出来,关毅赶紧打起精神仔细听,一边暗自庆幸,还好带了MP3。
    老外叫David,从上世纪90年代末就开始研究敏捷开发了,有很丰富的敏捷开发经验。他自称很喜欢中国文化,还给自己取了个中文名叫张大卫。
    介绍完自己,David接着说:“我知道你们中国有个重要的节日——春节。在这个节日里,所有的人不管在哪里都要回到家乡,对吗?”
    大家对老外同志突然提起中国的传统节日感到好奇,纷纷答Yes。
    David接着说:“那各位都是采取什么方式回家的呢?”
    他得到的回答自然五花八门,有的乘火车,有的乘飞机,有的自驾车,还有人甚至要把几乎所有的交通工具都换个遍才能到家。
    David显然对最后这种需要耗费极大人力物力财力的方式感到很好奇,但是他没有忘记自己的初衷,接着说道:“我想知道那些选择自驾车的朋友们,在驾车回家乡的途中有没有遇到过意外情况,从而延误了你们的行程呢?”
    这下课堂里可炸了锅了,大家都想起2008年的大雪,事先谁也没有料到会发展成雪灾——很多开车回家的人都被大雪堵在了半路,进退不能;很多趟火车也晚点好多个小时,甚至好多天……
    David一直笑眯眯地看着乱成一锅粥的课堂,过了好一会儿才说:“哪位能给大家仔细说说你开车回家时遇到过的意外情况呢?”
    一位同事站起来说:“我的老家在江苏,我每次开车回家都要经过南京。南京这些年发展得很快,几乎每年路过都会有意想不到的情况,有时是我习惯走的地方在修路,有时是在修建新的大桥。由于我对南京不熟悉,每次这些情况发生时总要绕很多路才能回到家。”
    他刚坐下,另外一位同事也站了起来:“就说发生雪灾的那年吧。那时我还在哈尔滨,而我家在江西南昌。哈尔滨没有直达南昌的火车,所以我一直是先坐火车到北京,然后从北京坐一趟走京广线的火车到南昌。谁知那年湖南暴雪,走京广线的列车全被堵在半路……后来我才知道,当时京九线的情况还不错,如果我选择这条线路也许就能按时到家了。”
    大家七嘴八舌地发着言,关毅倒没有说什么,他看着David,觉得自己好像有点隐约明白David的用意了。
    David听完大家的发言,笑着说:“对呀,大城市里最容易发生状况了——修路、堵车、车祸,你事先设定好的路线计划往往都赶不上实际情况的变化。如果遇到这些情况的时候,你仍旧要坚持以前制定的计划,一定要按计划好的路线行驶的话,那必定会延误你的行程,花费更多的代价,甚至到不了你的目的地。”
    然后,David转身在白板上画了张草图(如图3-1所示)。

 

图3-1  传统的瀑布软件开发效果示意图

    David说:“传统的软件开发流程,比如瀑布流程,就像我画的这张图(如图3-1所示)一样。从需求、设计,到开发、测试和部署,是一环套一环的,结束一个环节才能开始下一个,中间过程很长,且不允许有变更,等到交付的时候才发现已经与客户的目标相差太远了。这时,要想弥补就要付出巨大的代价,很多工作需要重来,从而产生了巨大的浪费。”
    David接着转身又在白板上画了一个草图(如图3-2所示)。 

 
图3-2  敏捷软件开发效果示意图

    这下大家都明白了,敏捷开发的每一个迭代就相当于David画的第2张草图(如图3-2所示)中的一个小箭头,由于开发工作能够根据需求的变化不断调整,所以整个过程中浪费很少。
    David说:“春节回家,一般情况下,大家都会在出发前制定一个大概的计划,明确你家所在的城市这一最高目标,然后顺应情况不断调整行程计划。”
    他又接着说:“好了,假设你们之中有几个人是老乡,现在结伴开车回家,旅途中还有什么是比较重要的?”
    “因为通常我会告诉家人我大概到达的时间,所以我想时间很重要。”一位同事回答。
    “很好,到达时间!我们需要根据已有的经验判断我们行驶的速度,算出最终到达的大概时间。我们今天上课的内容是讲敏捷开发,你提到你的家人关注你到达的时间,实际上,你的家人就相当于我们软件开发中的利益相关者(Stakeholders)。我们所有的目标都是为了实现利益相关者的利益。”David说。
    “如果路上时间很长的话,我们一定要找点事做,比如打牌或者玩PSP。”另一位同事回答。
    “很好!打牌和玩游戏实际上是为了避免旅途太过枯燥。在一个团队里也需要不断的自我激励,以保持一种高昂的士气。敏捷开发强调尽可能让每个成员都做自己认为有趣的事情。还有吗?”
    “旅途中需要经常休息吧?”
    “太好了!这正好说到了团队开发中非常重要的一点,就是保持一个可持续的进度(Sustainable Pace),绝不能太累了。事实证明,软件开发团队过度疲劳会严重影响生产率,降低产品质量,得不偿失。疲劳驾驶可是要出车祸的。还有吗?”David接着问。
    “大家在旅途中遇到问题实际上都是要互相商量的……”
    “很好,这实际上说明我们是一个自我管理的团队。”
    David说,“谢谢大家的踊跃发言,刚才谈到的几点非常重要。你们结伴同行的人实际上就组成了一个敏捷团队,一个成功的敏捷软件开发项目就恰恰具有刚才所说的那些特质。看见了吗,很多敏捷的思想都来源于生活。”

你可能感兴趣的:(图书连载)