敏捷无敌之橄榄球与软件开发(9)

橄榄球与软件开发 (9)

本文摘自《敏捷无敌》一书

 阿捷满怀希望地问了很多人,可是最终没有人能够解决他的问题,也没有人知道如何找到敏捷圣贤,甚至大多数人都没听说过论坛里有这么一个ID!几经周折,阿捷终于在论坛早期的精华帖中找到了一个E-mail地址,据帖子主人说,曾经有一个叫做“敏捷圣贤”的朋友通过这个E-mail地址和他讨论了很多软件工程方面的问题,由此促使他写下了这篇帖子。
阿捷怀着死马当活马医的心态,用这个电子邮件地址给传说中的“敏捷圣贤”发了一份电子邮件。

敏捷圣贤:


你好!别人都这么称呼你!我也只好这么称呼你了。   
我现在遇到一些很棘手的问题,我在论坛里发了很多帖子,但是没有人能够帮助我。有人告诉我,可能只有你才能帮助我!  
我是Agile公司的一名项目经理,之前我们采用的传统软件开发模式已经不能满足现在的需要。我想采用敏捷的方式来帮助我们进行开发。
我看过《人月神话》,我知道对于目前的软件开发,还没有什么“银弹”,但我还是希望从你那里获得什么“铜蛋”,或者“糖衣炮弹”也行,只要能解决我的问题!
如果方便,可以回邮件或者加我MSN吗?我的MSN是agilejie@msn.com。   
盼复!极其盼复。    
阿捷

时间一天天过去,白天上班的时候阿捷还要和大民阿朱他们一起为了项目早日Release而浴血奋战,晚上则依旧是一周两次和美国总部那边开Conference Meeting。在其他的时间里,阿捷已经没有时间再去练习CS的枪法,而是如饥似渴地学着敏捷的知识。阿捷有一种预感,如果世间还有一种方法可以帮助他们按时Release Agile OSS 5.0的TD-SCDMA产品,能够帮助中国的销售团队拿到中国移动的TD订单,那就是“敏捷开发”。阿捷还有一种预感,那就是敏捷圣贤一定会给他回信。阿捷每天下班回到家第一件事情就是去查自己的MSN上有没有新加入朋友的请求,而每次的结果都让阿捷很失望。渐渐地,阿捷的心已经有点凉了,自己有时候也在找借口安慰自己:“反正项目Delay也不是TD一个项目组的事情,周小小和Rob他们两个组的进度更慢。
还是在周五晚上,时钟已经指到了凌晨2点,小黑早就已经回到自己的小窝里打着小呼噜了,而阿捷还在开着这周的Conference meeting,情况都不容乐观,不仅中国这三个组,美国那边的开发情况也都不乐观,项目Delay已经成为板上钉钉的事情了。Release Manager甚至建议将开发计划延迟到2008年的5月份。在一阵悲观情绪之中,阿捷结束了这周的Conference Meeting。突然间,MSN弹出一个让阿捷怦然心动的窗口,“Hi,阿捷,请加我。”这个人的签名居然是“敏捷圣贤”!   
阿捷一阵激动,赶紧通过“敏捷圣贤”的请求!那边已经发过来了信息! 

 

敏捷圣贤:你好,阿捷?
阿捷:圣贤你好!我是阿捷。
敏捷圣贤:你是怎么知道我的?
阿捷:嗯,是猴子告诉我的,我们上学的时候住一个宿舍!
敏捷圣贤:哪个猴子?Sorry,我已经没印象了。我知道你说的那个中文的敏捷论坛网站,不过我已经很久没有登录去看了,那里真正有价值的东西太少。
阿捷大致把现在他的项目背景、开发方式、项目管理的方法和工具,以及目前遇到的问题等一股脑讲给敏捷圣贤。他本以为敏捷圣贤会很惊讶于Agile公司系统的庞大和繁杂,却没想到敏捷圣贤对他说:“你之前所说的问题,其实是当前大型软件公司开发的通病,我一点也不惊讶。既然你想用敏捷开发来改变现状,那么我想知道,关于敏捷软件开发,你又了解多少呢?”
阿捷:嗯,我知道TDD,FDD,结对编程……
阿捷把这些天学来的敏捷开发词汇全都敲了出来。
敏捷圣贤:嗯!这都是一些具体的开发模式,对于提高你们的编程效率是有帮助的。但对于项目的整体改善,效果不大,你需要改善项目整体管理方式才行!
阿捷:奥!是什么样的管理方式? 
敏捷圣贤:如果你想使用一个轻量级、能很快取得巨大成效且流程简单容易使用的东西,那就是Scrum!
阿捷:Scrum?这是什么的缩写?
敏捷圣贤:Scrum不是什么缩写,就是一个单词!你看过橄榄球吧? 
阿捷:在电视里看过!橄榄球分为英式和美式,英式不穿防护服和不戴头盔;美式都要带,而且比较野蛮。其实橄榄球起源就在英国,美式橄榄球是后来由移民带到美洲后演变发展而来的。我觉得,共同点是将球送到对方的阵区内,本质区别是英式玩球,美式玩人。但橄榄球跟软件开发有什么关系?
喜欢体育的阿捷从前寒假的时候都会在家里看美国超级碗的转播。 
敏捷圣贤:有关系!你看电视比赛时,当比赛出现小的犯规或因为队员受伤等原因中断的时候,怎么处理的?
阿捷:争球!双方各三名前锋队员相互搂抱,半蹲顶架在一起。由有球权的队投球。投球队员投球后,双方队员互相顶推,中间的队员抢球。投球队员绕到球队的后面将球捡起,可以传球或带球跑,比赛继续进行。
敏捷圣贤:嗯!差不多!你知道在橄榄球中这个术语叫什么吗?
阿捷:国内都叫司克兰。
敏捷圣贤:嗯,英文就是Scrum!意思是密集争球!实际上,我想说的Scrum这个敏捷项目管理方式,寓意就来自于“密集争球(scrum)”,寓指整个团队攒足力量,为了一个共同的目标,一起向前快跑!
阿捷没想到这软件开发还跟橄榄球扯上了,马上输入:呵呵,这个比喻很贴切。
敏捷圣贤:根据我的实践,Scrum是目前最符合敏捷开发模式的敏捷项目管理方式,能带来很多好处。
阿捷马上问道:最初是谁提出的这个思想?都有哪些公司在用?
敏捷圣贤:Scrum是在十多年前由Ken Schwaber和Jeff Sutherland博士共同提出的,现在此方式已被众多大、中、小型企业使用,其中包括Yahoo!,Microsoft,Google,Lockheed Martin,Motorola,SAP,Cisco,GE Medical,CapitalOne和US Federal Reserve。许多使用Scrum的团队都取得了重大的改进,其中更有个别在生产效率和职业道德方面得到了彻底的改革。
阿捷:这么多大公司都在用,看来不错。我们该怎么使用它?到底如何做才算是“Scrum”?
敏捷圣贤:Scrum其实仅仅定义了一个开发框架(Framework),具体的编程实践,完全取决于每个团队,并且是完全基于常识进行管理的。首先,我们来看看Scrum是如何符合我们所熟知的敏捷开发原则的。
阿捷没有马上回答,等着敏捷圣贤把剩下的话说完。 
敏捷圣贤:保持简单:Scrum本身就是很简单轻量级的流程,它能简化我们的开发流程。
接受变化:Scrum鼓励将工作细分成小块。它关注的是一小段一小段时间,但是只有在这些时间段的中间,我们才可以重新调整工作的优先级。
不断迭代:Scrum需要在小于30天的一次次迭代中构建应用程序。
不断的反馈和改善:在每一次迭代的末尾,Scrum流程要求我们回顾以前是怎么做的,并且思考我们下次可以做哪些不同的事来改善流程。
协作:Scrum强烈鼓励团队成员的协作和沟通。如果没有这些,Scrum就一点用都没有。
减少浪费:Scrum帮助我们识别做那些只对客户或者团队有价值的事情。
阿捷:嗯,这些原则真的很实用。那具体的Scrum的流程又是什么样的呢?
敏捷圣贤:在讲流程之前,我先给你讲几个关键的定义。
“产品订单”(Product Backlog):这是你构建一个产品所需做的所有事情的一个高层次的列表,并按优先级排列,这样可以保证你总是工作在最重要的任务上。比如对于整个Agile OSS 5.0产品套件,你的TD-SCDMA就是其中的一个Product Backlog,而且是比较重要的Backlog,要是我,就绝不会让这个Backlog Block整整两个月没有进展。  
“冲刺”(Sprint):一个Sprint就是一次为完成特定目标的迭代,一般是2~4周。 
“冲刺订单”(Sprint Backlog):是Sprint的工作任务列表。一个“冲刺”订单来自于产品订单上最高优先级的一些任务,以及产生的附加任务,每一个任务都应该有一个明确的“完成(Done)”的定义。比如对于你的TD项目组,在每一个开发的版本上都要列出优先的开发任务。  
“产品负责人”(Product Owner):这个人负责维护产品订单内容和优先级。 
阿捷:这些新名词还真的需要时间慢慢习惯才行。那流程到底是怎样的呢?
敏捷圣贤:它是一个非常轻量级的流程。简单讲是先建立一个产品“订单”(Backlog),做一个短期“冲刺”(Sprint)计划,执行这个计划,每天开会讨论计划中的问题和进展,计划完成后演示工作成果,再对该阶段的工作做回顾、反思,接着不断重复以上流程。
阿捷:就这样简单吗?有点太粗略了,你能不能讲得更细一些? 
敏捷圣贤:我可以给你一些细的指导,可是时间不允许!我现在正在San Francisco的机场,等着转机去东京呢!马上要登机了。你在北京?北京好像现在已经很晚了吧?  
阿捷:啊?我这里快凌晨3点了,别管我时间了。赶紧教教我在这个流程中的每一步都该做哪些事情好吗? 
敏捷圣贤:嗯,那我得简短些! 
敏捷圣贤:当你构建产品订单时,要创建一个按优先级排列的所有功能的列表,把最重要的功能放在列表的最前面。 
阿捷有点发傻:如果需要把所有的事情都放进去,不就和敏捷的简单原则相悖吗? 
敏捷圣贤:最初的计划是非常非常高层次的,仅仅是我们对客户从今天开始想要的那些功能的粗略的认识。一旦认识发生变化,就要及时调整。下一步做Sprint“冲刺”计划。你要从产品订单拿出一些优先级最高的任务,制订一个2~4周的计划,决定如何完成这些任务。然后开始执行这个计划。 
阿捷有点明白了:好的。那其他的呢? 
敏捷圣贤补充着:每天开一次短会,检查Sprint中每个任务的进展状况,对未完成的任务,要求任务所有人给出新的剩余工作量的估算。 
阿捷:啊?每天都开一次碰头会,那得浪费多少时间啊! 
敏捷圣贤:所以你作为Scrum Master要让会议开得很短,对于你现在的TD项目组来说,5个人,我觉得只要花10分钟就够了。在Sprint完成之后,大家聚在一起,展示一下工作成果,这时候一定要让产品负责人知道已经完成了哪些工作。   
阿捷:好的,然后再开一次回顾会议?我们以前项目做完后,都会搞一次的。
敏捷圣贤:对,一个Sprint结束后,做一次反省。从团队的角度来审视哪里做得好,并继续保持,找出不好的地方,并寻求改善方法。
阿捷:这个流程真的很简单。不错。 
敏捷圣贤:还有,在一个Sprint做完之后,你要重新调整一次产品订单,然后再做计划,开始下一个Sprint。 
阿捷:好的。呵呵,听起来Scrum还不错。我想下周一就开始,我的项目团队做一个两周的Sprint,看看效果如何。你觉得好吗?
敏捷圣贤:呵呵,不会吧,阿捷,这么着急?你是我遇到的第一个刚听了Scrum,马上就要实施的人!可是你真的准备好了吗?
阿捷很有信心:差不多吧!Scrum这玩艺儿听你讲起来挺简单的!我在网上再找点资料。   
敏捷圣贤:这么有信心!祝你成功!我得走了,已经开始通知旅客登机了! 
阿捷:哈哈,好的。谢谢你!祝你旅途愉快!再见! 
敏捷圣贤:再见! 
阿捷突然又想到一件事情,赶紧和敏捷圣贤说:等一下,还有一个问题。我们原来实行的是CMM/CMMI那套,后来又是六西格玛,现在是ISO 9000,每周的开发都要和美国那边做汇报,现在大家都还在采用传统的瀑布开发模式,要是就我一个组采用Scrum,能跟其他组融合吗?会不会相互冲突?如果冲突怎么办?而我又该如何向我的Manager解释这些呢?

 


当阿捷敲完这长长的一串时,敏捷圣贤的头像已经变成灰色,他已经下线了。阿捷有点发呆地看着电脑屏幕,看来这些问题只能依靠自己解决了。

敏捷无敌封面

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值