客户需求何时休?

我想看到这样的标题,对于每个搞软件的朋友来说,肯定是很有兴趣的。因为这已经成为每个软件开发者的心头大患,客户需求在软件这个独特的行业里,体现着最独特的含义,因为需求是软件项目存在的意义所在,而需求的变化让软件最后撵手不着,我们大家都会有“客户需求何时休?”的体会。

软件是服务于业务需求的,没有业务需求的软件肯定是没有价值的,国内的软件业普遍现象是:软件项目远远大于软件产品。这也是国内软件所面临的一个严重问题,国内软件好象在死亡线上挣扎,项目成为软件企业生存的唯一依赖,而项目恰恰是最难于伺候的。

软件公司在积累一定的项目经验基础上,应该形成具有自我产权核心的技术与经验,把这经验总结与汇集成产品,才有可能大踏步的前进。然而这说来简单啊,本以为一个个的项目可以为以后的产品积累资金与经验,然而每个项目的需求不断变化,无休止的修改与维护,利润趋向于零;人才也“超市场规律”的流失,经验也“人去楼空”。

软件项目非常强调客户需求,而国内软件业好象对客户需求不够重视,不管是新上任的项目负责人还是有经验的项目负责人,好象都重技术,轻需求。中国的软件人员们都在追求高技术,好象技术好就是老大,21世纪谁最红----软件技术高手。你看看一个个软件技术高手,在网上听到的都是“大哥”“大侠”“高手”,这过分的崇拜技术也是导致轻视客户需求的一个原因,软件不是技术的积累,不是技术好就能设计软件,技术是可以解决软件开发中的一些问题,但它只是解决软件怎样实现,而不能解决软件如何去做。

项目开始了,设计者们都把了解客户需求作为软件的需求,把客户的要求拿回来后看看就着手DB设计,然后系统架构,接着开发,这也可以理解,因为我相信中国的软件项目好象没有一个不是急的。问问IT的同行们“项目急吗”,十有八九说“急啊,急死人了”。没办法啊,需求看着那么简单,报价自然便宜了,结果问题却很多很多,再不抓紧就是亏老本的事了。

最后呢,客户验收的周期远远大于开发周期,很简单,客户需求被低估了,验收时客户常会说:

这里的关系不是这样的,应该是那样那样

我们的流程不是这样走的,应该是那样那样

这里不是一一对应的,而是一对多的关系

要是这里删除了,那里怎么会出错呢

这个最好做成可维护的,我随时需要添加

这时你的心肯定是拔凉拔凉的,问题是越改越多了,一方面是因为软件设计时确实误解了客户的意思,二是客户也是在使用时才想起来应该那样那样。有时客户初期说的和后来说的是矛盾的,可以理解,客户天生就没有这么强的逻辑性的,但作为软件开发,你又能把客户如何?他才是上帝,你难道非要让客户承认错误,承认不承认你都得改,平不了自己的气还要得罪客户,还是认命吧。这修改需求啊,就跟任贤齐说的:“一个还没过去,一个又来侵袭”。

其实问题出在开头,客户需求只是软件需求分析的一部分,虽然是比较重要的一部分,但也不要只是去记客户的需求,而是要把客户的需求进行分析,分析什么?

客户本身是不怎么懂技术的,客户只知道自己的业务需求,而在软件设计时,是在把业务需求抽象到系统中实现的,把业务转变为逻辑时,一切都应该符合逻辑的,但客户的业务思想有时候在软件系统实现时会有问题的,这就需要分析时分析出来的。少了分析,问题也会在后面的开发中暴露出来,到时可就更麻烦了。

还有客户的需求本身会有矛盾(这矛盾是指在逻辑角度来讲),客户本身是意识不到的,只有在分析设计时,才会分析出这里的矛盾,而这些问题,如果在期初时,软件负责人不分析,而是纯粹的“听从”客户要求去做,当暴露这些问题时,你怪客户也没用啊。

因此,很简单,在了解客户需求时,不要不动脑子,不要一味的点头说“I C”,其实在表面的业务里面可能包含着N多的细节,这些细节是需要你反问客户的,只有当你提的问题越多,最终获取的需求最具体,才能让项目越顺利。而且有很多问题,都是在你的反问中,客户也才开始思考本来没思考过的问题,客户也会找到一种合理的需求给你,有人会觉得这样了解客户需求未免太麻烦了。至于一些在技术上会遇到问题的地方,也要告诉客户,别以为到时候再说,客户是不关心你的技术细节的,但你如果给他解释的话,他也会试着理解的。

项目就算急,也不能急在需求分析上,软件再小,需求再简单,我想不可少的就是需求分析。在需求分析阶段解决问题的代价是最小的,越往后就成次方级递增。因此,要让你的项目能顺利下去,不要再追求技术了,冷静的先分析一下客户需求才是最关键的。

客户的需求本身是无休止,因为他们本身也在变,但当你期初的分析合理,后面的变动也将在逻辑上变动,相信代价已经不会那么大了。这其实也体现了系统的扩展性。

别指望着客户需求会停止,我想大家都有这方面的体验,当然了,也不是说客户的需求分析出来后都要去做,由于项目的价格,在软件设计时还是要分析哪些应该实现,哪些应该放弃,因为做项目跟做产品完全不一样,要对客户的需求进行合理的分析,该舍的还是要舍。但有一点可以相信,当系统最后表结构出问题,逻辑上不符合业务时,那肯定是需求分析没做好。要记得下次需求分析时多问问清楚了。

其实这些道理大家都知道,但在实践中却往往被忽略了,以此文章只是想让大家引起注意,客户的需求虽然不可能休止,但我们可以把代价压缩的尽可能小。

听棠 2005-12-2



2005-12-02 21:42 by bincoding

一直关注听棠,句句中肯。
支持!

2005-12-02 21:50 by kasafuma

是有道理,但是现在的小公司是做不到的,那些通过CMM3以上的公司有时候都不理这套啊

2005-12-02 23:45 by smdxi

怎么觉得软件就只是项目了?有些可悲

2005-12-03 08:57 by Cavingdeep

听棠也赶快提倡XP吧,我们都不知道提醒大伙多少回了!^_^

2005-12-03 10:21 by HCHAO

把项目当成是做产品,感觉会好点,产品可以复用赚钱,而且成本一次比一次低,人家提需求就是对产品的完善,是为你好,所以你实际上应该感谢人家!

2005-12-03 11:41 by 听棠.NET

其实我不是说软件只有项目,我非常支持软件公司要发展自主知识产权的软件产品与技术核心,这才是软件企业的可持续发展之路,但其实我们不得不面对现实,国内目前的很多软件企业都是以软件项目在维持的。不信你看身边的软件企业就知道了。
而且根本不可能把软件项目当作产品来做的,因为那代价是绝对太大的,我本来也想追求“最好”,把软件做成产品一样,但软件产品面对象的“可能性”要远远大于项目需求,而且国内目前的软件项目价格都偏低,有几家能把项目当产品来开发的。
哈哈,我就是感觉到理想与现实有很大的距离。我真的不知道国内有多少软件产品可以拿出来自豪的。

2005-12-03 16:43 by 小 陆

产品的需求,更难!

Contributors: FHL