一个项目失败的总结
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一个总成本花费100W的失败项目的小小反省这个项目开始到几个月前基本暂停,总共差不多花费100人月,总成本应该也差不多是100W吧。
在几个月收获的产品只有一堆中间代码。当然,参与成员对某些技术还是有进步的。
我稍微对项目作一些总结吧。要想不好了伤疤忘了疼,需要总结经验,不管是成功还是失败的经验,成功是一个模式,(失败就是反模式)。
没有开始的开始,一个噩梦的开始
前期没有任何固定的严格项目可行性分析
老板指哪儿打哪儿,就算是老板一种模糊的感觉,下属只能全力以赴了。这在我们这类企业里面应该算是很普遍的。当一次回头看,这100W算是做了一个可行性的探讨。
风险管理,尤其当你使用一个有新的/先进/陌生的技术,使用一个陌生技术,风险是很多的,不管宣称它有多先进。
如果在项目初期没有进行风险的管理探讨,最后,这些风险不会凭空消失,一部分会出来,Block你的项目,毁了你前面做的工作,最后毁了你的项目。
需求,没有远景,没有边界
当项目走了很远的时候,当需求好像无穷无尽的时候。经验丰富的领导总算想起要做一个边界定义了。
如果没有一个边界,需求是做不完的,满天的麻雀,都想要抓,团队的人力物力是非常有限的,对于一个产品来说,市场也是不会等人的,必须要在规定的时间内出来的软件,才有可能成为一个成功的软件。
需求,脱离用户的需求
当需求只是凭空猜测的需求,自然会让人觉得无穷尽,因为人类想象力总还是比我们能做到的要多的。但是,这带来的可能不仅仅是没有尽头,脱离用户的需求,仿佛就是在修炼屠龙绝技。修炼出来是没有市场的。
需求,隔靴搔痒的需求
如果软件的最终用户是经过培训、积极配合软件开发过程的,这个软件的成功机率大概可以提高好几成。可惜的是,我所看到的很多一部分都不是这样的。(项目自己尚且对过程没有什么控制,谈何对用户代表做出要求呢)。我所见到的是,用户代表往往仿佛一开始就是等着验收软件,不想参与详细需求的制定,大部分都是靠需求采集人员的猜想,猜想往往和实际有差距,往往只能像挤牙膏那样从用户那里得到一些提示,或者片言只语的判断。往往是经过无数次的往返交流,需求还是雾里看花。需求采集人员在繁琐中失去耐心,索性天马行空猜测一番了事,不再去麻烦用户。
走到一个陌生的行业/领域,需要勇气和资源
走到一个陌生的行业/领域,有时候是必须的,就像众多企业的多元化之路。非常不巧的是,也是众多企业的多元化之路一样,软件要想进入一个陌生的行业领域,也是一条艰辛之路。需要的不仅仅是勇气,还需要机遇,所谓东风是也。但是还需要资源作为支持。如果低估了艰辛程度,可能就低估里所需的资源。没有必要的资源,也许你走了90%的路
了,你要走不完剩下的路,也许你从沙漠中央走到了离沙漠边界只有数里之遥的边界,没有了那最后的补给,你还是出不了沙漠。任何风吹草动都可能成为压垮你的最后稻草。
没有结束的结束
没有人会承认失败,尤其当没有人要求你这么多的时候。我们的项目也是,我们几乎听不到有人出来说项目失败了,我们听到的是延期、暂停、取消等等形容词,但是其实,我们其实应该承认,我们有做了一个失败的项目。
过程,没有过程,没有积累
从开始到结束,没有开始的开始到没有结束的结束,整个过程一切都在我们脑海中,剩下几个残缺的需求文档和无法投入使用的中间代码。
或许过不了多久,一切的记忆都会从我们脑海消失,尤其像这种失败的记忆,我们会自然选择一种选择性失忆。只不过,我们并没有得到该有教训,花了钱,还是没有买到教训。如果我们有过程记录,也许我们可以知道,哪一条路径是走不通的。我们不需要走一条失败的老路。
项目的成败是变数多多,既有技术的,也有管理的,也有关系的,既有自身的,也有客户的,但是只要我们把我们可以控制的做好了,至少这个项目成功了一半。
项目的需要变化是肯定有的,而且变化一般都很频繁,我们怎么应对客户的这种需求变化呢,以不变应万变。首先在前期的需求调研要做好,尽可能的替用户考虑,达到功能质量满足最大化。需求调研前期的《目标与范围》和需求调研末期的《功能规格说明书》都要跟客户签字确认,这样既能保证我们所理解的需求就是客户所要的,也使得项目末期跟客户验收时有据可依。根据我自己做项目的经验,由于客户一般对计算机不是很了解,和他们交流用我们行业的话,他们根本就不懂,如果用文档也很难把需求写的那么明白,而且文
档很多的话,客户都看烦了,很不直观。如果让客户一看就可以看出这个就是他们想要的,我个人认为最好的方式就是做系统原形。系统原形应该在需求分析的时候开发人员在分析师的指导下完成真实环境中的开发,当然开发只是界面的功能模拟,没有底层代码的实现。这样做的目的有三个好处,一是客户很直观的看到他们的系统是什么样子的以及怎么操作,二是这些开发的成果是可以二次利用的,三是可以更好的激发客户的需求。
在项目中期是发生需求变更是很常见的,这时要做好需求变更管理流程。需求变更表,小的变更自己掌握,客户要求的变更有开发人员和设计人员共同商讨后提交项目经理,项目经理预估变更损耗工程时间,在一定阶段一起提交给客户,大的变更直接提交客户,并且要把需求变更对项目产生的影响让客户知道,把球尽可能的踢给客户,让客户在进度、功能、资源三者中取舍出一个平衡来。对需求进行分类评级,关键部分不能改动的做特别确认(如系统架构等,如果改变等于从头再来)。同时完成客户签字确认,当然如果能将这部分写成合同细节中去是最好,但国内的合同好像都是在打单时是基本上都承诺,也不会到细节,在合同签订后启动后才发现问题。但合同中可以写明如果需求变更什么级别的怎么样,多少钱等;签订合同也是一个很高的技巧,建议把系统的边界及功能范围和解决方案与合同一起签署,这样客户提出的新功能就可以暂且搁置。当然这就需要项目经理很高的经验和技巧了,不是光通过学习就能掌握的。
下面我结合我的项目开发经验说下在项目开发中的失败原因:
一、需求调研阶段我们做的不够细,调研的时候几乎是一个单位半天的时间,收集一些报表,根本就没有了解用户的需求。
二、对客户现有系统分析和研究重视不够,我们开发的系统是客户已有的系统,他们已经用了多年,在使用的过程中他们已形成了自己的习惯。而且他们的老系统也有他存在的优点,也是在使用的过程中逐步完善的,可是我们在开发过程中完全忽略了老系统的存在。
三、签订合同也是非常重要的,具体内容我在上面已说过了。