公司已经有一个比较成熟的产品了,而且销售情况也不错。现在作的项目是该产品的后续产品,但是并不是简单的升级,如果仅仅是用.net来把以前的VB作的东西来实现一遍,就没有什么实际的意义了。由于要和先前的产品相比有质的飞跃,所以从结构和业务上几乎都是重新设计,但是由于新的架构的实现难度比较大,造成现有的人力和技术实力无法完成具体的实现。形成了一种高不成,低不就的情况,一方面,目标太高,达不到,另一方面,如果调整目标,前面作的很多工作都要推倒重来。最终,项目变成了“鸡肋”,高层也不关心,把精力都放到了赚钱的项目上,但是由于前期投入了大量的人力物力,在一些方面作了很多的探索,放弃又不甘心。但是实际的情况是,如果不作调整,砍掉一些不切实际的功能,那么只能是越走越远,最后只有失败一个结果。
所以,我觉得:
1.定位很重要,在项目启动前明确这个软件到底是什么,一个升级版本?一个新的产品?他的价值是什么,不要说启动就启动。
2.这个软件的核心功能应该是什么,在架构上实现的难点是什么,可行性如何,这些部分对其它部分的影响有多大。 如果风险太高,就砍掉,用其它的简化的办法来代替。
3.在开发中放弃对一些不切实际的功能。一些需求有可能会出现,但是在实际中几乎不会出现或出现的机率很小,更重要的是 实现它的难度较高,要耗费大量的人力,时间,而且还有可能影响到其它部分的设计。
4.在开发过程中对管理层提出的新的功能要更加谨慎。管理层有时提出一个新的功能需求不是经过深思熟虑的,但是你一时还 找不到理由来反驳他,因为他说的也有道理。但是,因为这些需求,你不得不一再调整计划,同时修改现有的东西来兼容。 到最后你却发现这个东西根本就没什么用或者向第三点所说的,提高了项目的风险,得不偿失。虽然现在都在说“拥抱变化”, 但是“拥抱”前先看看代价。
写了这么多,还是言不达意。
总结一下:从真正的实际出发,放弃对完美的追求。