关于软件开发流程的争论
在回公司的路上,大家都一反常态地各自想着心事。快到公司的时候,Franco叫住关毅:“关毅,能和我单独聊一会吗?”
“什么事,Franco?”关毅问道。
“我没别的意思,只是我一直在想你刚才说的,如果时间允许,我们可以在瀑布式开发的基础上多做几次Milestone版本。有一点我想问你,你说的Milestone版本是个什么样的版本?是能给公司上层演示的?还是可以给用户试用的呢?我觉得这个想法很好啊!你们以前是不是就是这样做的?现在几乎所有的公司为了提高市场占有率,都尽可能地缩短开发周期,节省成本,但是结果也显而易见——产品质量无法保证,补丁一个接着一个。唉,想起来这些我都替那些公司心烦啊!”
关毅注视着Franco,心情有点复杂。不过他倒是很有兴趣和Franco进一步探讨,把自己的经验教训告诉Franco。
“Franco,你说传统软件开发模式的经验是从哪里借鉴来的?”关毅尽量压低音量,以免引起别人的注意。
“这个嘛,我们常说的开发模式其实来自于软件工程研究的一部分。在学校的软件工程课上老师也教过,为了避免软件危机、提高软件生产率及质量,从而引入了传统工业中的工程管理学,一举打破了软件开发一直局限于手工作坊的局面。对了,你可以把开发软件想象成建筑工程,从需求、设计到施工,就是这么回事。”Franco讲得兴起。
关毅微笑着点了点头,“咱们就说建筑这行,你家装修过吗?”
Franco说:“装修过,记得那次可把我累死了,装修是一个典型的项目。”
关毅接着说:“太好了,我也正要买房呢,最近常在网上看买房和装修的经验。以后还要向你请教。我想问的是,你在装修的时候是怎么做的呢?是先花大量的时间做需求分析吗?”
Franco有点明白关毅的意思了,他摇摇头:“当然不是,一开始我们也想不到那么细,只能照一个大概的设计方案来施工。”
关毅笑着说:“对,没错,装修到一半的时候你也许会发现卧室插座的位置不方便,餐厅的墙面应该换一种颜色,还有很多诸如此类的问题。”
Franco点点头:“的确。可是这和软件开发一样吗?”
关毅说:“软件开发比装修还要复杂的多!”
关毅继续向Franco倾诉:“Franco,你猜得没错。我在X公司时,那里的软件开发流程的确是以一个瀑布开发周期为一个迭代周期,准备至少迭代3次,每个迭代完成后都会发布。第1个作为Demo版,会给所有的战略伙伴演示;第2个作为Beta版,给已有用户试用;正式的发布就是第3版。听起来如何?”
关毅不等Franco开口,就又继续讲道:“在产品真正发布前,我们做了3次需求分析,每次都力求完美。”
“这不是挺好的吗?是X的哪个产品啊?有机会我一定要见识一下。”Franco有些迫不及待了。
“F4!”关毅说。
“F4?我怎么没听说过呀!”Franco显然无法相信,X公司费这么大力气开发的产品,一定是惊世骇俗的,自己怎么可能没听说过呢?这绝不可能!
“是啊,估计除了做过F4的,别人都不会知道。这个产品是秘密研发的,已经做了三年了,我离开的时候Beta版算是完成了,距离Release的目标可以说进了一大步啊!”
“啊……”听了关毅的话,Franco惊诧得下巴都快掉到地上了,“怎么会这样!这三年你们都干什么去了?”
“客户需求的调研、分析,业务逻辑的设计、论证,前前后后就拖了两年。在这两年里,开发和测试部门十分清闲。这些前期工作完成之后,如果开发和测试再花上一、两年,谁能保证Release的产品是用户所要的?这样,横竖也是落后了市场好几年,何谈竞争力啊!而现在的用户,需求基本上都是一天一个样。如果现在用户提出要追加一个大的功能模块,你该怎么办?暂缓开发,继续提需求、做设计?或者一边开发一边修改需求和设计?好像都不合适吧!这样的话,在开发之前进行的那一套调研、分析、设计、写文档的流程又得重来一遍,好些工作等于白做。凭心而论,如果按照传统的开发模式,所谓的需求要尽量做到充分,可能永远都只是一句空话。”
Franco陷入了沉思。这时,他的心里就像打翻了五味瓶,什么滋味都有——有不服、有无奈,而更多的则是疑惑。要真是这样,X公司岂不是很危险?虽然这个极端的例子比较有说服力,但Franco还是觉得敏捷开发仿佛是另一种极端——和小作坊式的开发没有什么区别。
关毅回到自己的座位上,思绪久久不能平静。与Franco的争执让他开始重新思考自己在X公司的经历和目前应该如何面对E公司的新工作。关毅觉得,其实最重要的还是信心。
Agile开发模式到底能不能保证新产品开发的顺利进行?遇到阻力的时候应该怎么办?Agile是解决问题的灵丹妙药吗?况且,连Franco那样的牛人都在怀疑。
关毅脑子里一直在思考着这些问题,一时间,他有些手足无措,不知道该干什么了。
徐天发现关毅从午饭回来后就有点心不在焉,完全没有了上午的精神头。到底发生了什么?天知道。不过可以确定的一点是,这样下去肯定是不行的。身为经理,就有责任解决自己团队成员的各种问题——无论是工作上的,还是生活上的。
为了不让关毅感觉到压力,徐天给他发了封E-mail。
Hi,小关!
如果这两天有什么不习惯、不满意的地方,不要觉得难为情,只管告诉我,看我能不能帮助你。如果心里有什么疙瘩,或者有什么疑问,咱们可以找个时间好好谈谈,你看行吗?
徐天
读完这封E-mail后,关毅心里充满了感激。于是,他毅然决然地做出了一个决定——在给徐天的回复中,他把自己的博客地址发给了徐天,说不定徐天真的能给自己一个答案。而且,就算没有答案也没关系,至少让徐天深入了解一下自己的背景也行。
做完了这些,关毅深深地吸了一口气。