快速导航: 首页   论坛   海归宣言   导航   个人空间   实用查询   博客首页
 
用户名: 密码: 忘记密码? 自动登陆 博客列表

Archive for November 2nd, 2003

进化的终结 — i2佚事( 九)

Sunday, November 2nd, 2003

作软件开发的人都知道软件开发过程管理的重要性。小型的软件无所谓,两三个人很容易相互协调。但大型软件的开发就必须有科学的管理过程。没有这种严格的过程,开发人员的能力再强也没用。Apple公司的System7操作系统的开发就是一个失败的典型。 在RCP的初期,开发部门的开发过程管理可以说是一塌糊涂。我印象最深的是我在刚进RCP不久作的第一个release。在原程序冻结的那天,一个主要的功能竟然还没开发出来。这让我着实吃了一惊。我不明白当时的开发计划是怎么制订的。当时最倒酶的是QA。开发部门不仅拖延开发时间,而且交给QA的产品也是bug一大堆。QA总是给逼得加班加点儿地干。所以QA的manager坚决不干了。 在开发过程的上游部分,问题也是巨多。在这方面,有两件事让我记忆犹新。当时开发部门和产品管理部门总是打架。开发部门抱怨产品管理的产品要求写得不清楚,甚至在产品开发快完成的时候再提新的要求。为了解决这个矛盾,当时的开发部门的大老板说:“假如产品开发的人在走廊里遇到产品管理的人。产品管理的人提出产品要求,应有产品开发的人记录下产品要求。”这让我觉得不可思议。另一件事是产品管理部门写的产品要求。一次,一个同事邀请我参加设计讨论。讨论之前给了我产品要求。产品要求写在一份Excel spreadsheet里。十个需要开发的功能用十行就写完了。我不明白这两个部门是怎么交流的。RCP的产品居然就这样开发下来,这也算是个奇迹。有一次,RCP的一个开发部门的manager在闲聊时问我知不知道什么是CMM。我一听,觉得非常可笑。心想RCP的这样的开发过程还能提什么CMM。 由於缺乏良好的开发管理过程,RCP部门也吃了不少苦头。顾客抱怨得很多。i2的高层管理人员对此也非常恼火。但是,尽管如此,真正有效的开发管理过程却始终没有得到推行。有的部门的开发过程稍好一些,但这些好的措施并没有推广到整个RCP部门。RCP部门后来开发过程的改进当然是大家共同努力的结果。但在这方面,苏力和我作了很多工作。 在RCP的所有的管开发的manager当中,苏力无疑是最能干的。否则的话也不会把他提升为director。苏力接管过RCP的核心部分以后,争取把开发过程规范化。他首先把每次开发的范围控制起来。在这方面,他与产品管理部门进行过不少争吵。最后产品管理部门也开始逐渐地变得有条理了。开发范围的控制是朝开发过程规范化迈出的一大步。以前RCP的很多问题都是由此引起。苏力同时也鼓励开发人员作切合实际的开发估计,不鼓励他们作太乐观的估计。 以此保证在计划的时间范围内完成能作的任务。他又不鼓励在工作以外的时间继续工作。他提倡效率,而不鼓励增加工作时间。 在我们这个部门承担越来越多的任务后,苏力一个人忙不过来。於是我开始帮他管理协调开发方面的工作。 当时,尽管开发过程有所改进,但仍有许多不足的地方。产品管理与开发部门的矛盾依然存在。矛盾主要是在产品要求上。产品管理总是不能在开发开始时将产品要求写清楚。他们总是在开发部门作了一段时间以后又提出修改。开发人员因此非常恼火。让他们写产品要求。他们又借故推脱。为了治他们,我提议作设计评审。开发人员根据他们对产品要求的理解写出产品设计。开发人员与产品管理一起开会作设计评审。如果产品管理没意见,那么开发部门就以此进行开发。既然大家都同意这个设计,产品管理以后也不好再提异议。 除了设计评审的提议以外,我又提议将设计文件标准化。在此之前的设计文件各式各样。不仅读起来费劲,而且质量差别很大。经过讨论后,我们把格式定了下来。每一份设计文件都包括必须的部分。这大大提高了开发部门的整体设计水平。 我推行的另一个改进是进行产品缺陷(bug)的分析。以往每个release作完之后,也不进行项目总结。所以以前犯的错误以后还犯。在这些问题当中,bug的数量一直是个问题。每次作完一个release之后,也不知道这次是不是比以往作得更好一些。为了解决这个问题,在每个release之后,我都对这次release中的bug进行分析。分析的结果使大家进一步提高了质量意识。在开始这样的分析之后,bug的数量逐渐开始减少。这个方法的另一个好处是了解QA的工作的质量。谁发现的bug的数量多,质量高,看得一清二楚。当时,产品管理有一个印度人。经常声称发现bug。但大部分都是他自己的错误, 不是产品的问题。但每次开发人员还得化时间研究他发现的bug是不是真的问题。他因此一直是我们的pain in the butt。我开始作缺陷分析后,数据表明他的QA的成绩最差。他於是成了大家的laugh butt。他以后在这方面小心多了。 在我们的这个部门所有人的努力下,我们的开发过程逐渐变得非常规范化。每次release的开发都能在计划的时间内按时完成。产品的质量也不断地提高。遗憾的是,就在我们不断改进的同时,internet的泡沫开始破裂。i2的生意也越来越差。最后,RCP也坚持不下去了。不管产品作得多好,市场上没人要。商品的使用价值转换不了商业价值。不仅创造不了剩余利润,连必要利润都保证不了。那么雇员的结果就可想而知了。 里的世外高人司马徽称孔明,“虽得其主,不得其时”。我在i2时的情况倒与此有些相似。我当然不敢自比孔明,但没赶上好时候这倒是真的。经过我与RCP同事们的共同努力,我们不仅建立起了一个良好的开发过程,而且也建立起了一个优秀的开发队伍。假如我们不作RCP这个产品,而作其它的软件,我坚信我们也一定能开发出非常好的产品。但就在我们能够有所作为的时候,我们被解散了。真成了出师未捷身先死。时至今天,我依然不甘心。但也没办法了。只能偶尔感叹一番。然后再长叹一声:“他奶奶的!” i2佚事系列 

网站首页 | 关于我们 | 广告服务 | 联系我们
copyright @ 2005-2020 haiguinet.com all right reserved