目前,软件公司越来越多,为了讨好客户,获得业务,许多软件公司都开展定制软件业务,即根据客户的需求开发软件。说实在的,这是一件技术难度特大的活,我以为是不适合一般的小公司做的,但一般的大公司却不屑于做这些吃力不讨好的事,就是做也是定价不菲。但一些小公司却仗自己人力资源成本低,往往能以比较低的报价拿到项目。尽管某些小公司人力资源成本低,但管理水平不高,培训不到位,人力资源水平也不尽如人意,结果项目做的跌跌爬爬,客户不满意,自己赚不到钱。
产生这种结果的原因太多,绝不是一两篇博文能说清楚,上一篇已经说了一个原因,那就是项目演示的问题,今天我再说另外一个原因。说的不对的请大家批评。
1
、项目遭遇客户内部矛盾时要坚决说“
NO
”。我遇到的一个很有才气的项目经理,是一名博士后,我很敬佩,从他那里我学到了太多太多的知识。但我认为他在一个失败的项目中仍由于不善于说“
NO
”而负有责任。本来这个项目是一个极具挑战性的前沿技术。客户也是一家颇具实力的公司。本来这种合作应该是珠联璧合的。但在项目初步完成的时候,客户更换了项目的使用人,就是客户进行了中层干部调动,本来这个调动是例行的,并不是针对这个项目的,但却对这个项目产生了极其不利的影响。
尽管项目已经在试用中,客户方面新的负责人重新提出了很多的要求,而且这些要求使项目的算法由非
NP
问题变成了
NP
问题。其实这些问题的提出的背景是客户新的项目负责人不希望沿着原有的路线图工作,他有自己的工作思路和工作方法,需要实现自己的政绩。在这之前,他已经另起炉灶在开发类似的项目,在借鉴了这个项目的部分资料后做了一些局部的工作。但我们的博士后项目经理并没有深刻的理解这个含义,结果想尽一切办法基本达成了这些要求。那段时间这位项目经理对我说,这几天他整夜不能眠,每天都掉很多头发。看着他本来就不多的头发,我感到项目经理真的很难很难。同时我也感到这时是他的高水平害了他,换成一般的人掉再多的头发也想不出解决办法,所以早就不想了。
但问题虽然解决了,项目却变得复杂了很多,系统运行速度也下降了。问题并没有结束,客户又提出了新的问题。这样做了很长时间总没有结束。最后没办法,这个项目经理只好走人,不来了。
说实在的,一开始我也没有意识到客户是不想采用新项目,而是迫于总经理的压力不能直接拒绝。这些我们也是事后分析出来的,但我们有一些更充分的依据。最后这个项目因为缺乏维护而停用了,但客户另外开发的一套也没有使用,或者根本没有开发出来。这个项目的最后没有赢家。
我想说的就是,如果碰到这类情况,项目不可能有赢家,但项目经理的及时止步可以使项目经理(及其所在的公司)少损失一些。项目经理当时能够采取的措施只能是果断退出,并和客户方总经理做一次全面的交谈,说明情况,等将来条件成熟了再做。我相信总经理虽然不一定认同你的说法,但一般是会尊重你的决定的,因为你的一切决定是有合同作为依据的。“两害相较取其轻”,才是唯一正确的选择。这是一个悲剧的结果,但现实中也不全部是喜剧。在项目过程中,一旦出现不可控的客户内部分歧,我们的项目经理只有及时(至少是暂时)撤退才是上策。
2
、项目经理对不能在规定时间内完成的要求要及时说“
NO
”。
定制项目不确定性很多,准确的确定完成时间很难。但我认为磨刀不误砍柴功夫,我们的项目经理值得花时间去事先弄清楚,否则你就有可能被套。
举一个很简单的例子,假如说你的项目是设计一个原材料采购工作流程。那么你想到的就不能仅是申报采购、审核、批准、采购这么简单。什么人可以申报?什么人可以审核?什么人可以批准?是一个人批准?还是几个人竞争审批?等等,需要考虑。这些也是设计者一开始就能想到的。那么再进一步,是所有的东西都是一个报、一个人批?还是要区别对待?如果要区别对待,那么客户能够给你一个明确的分类吗?如果客户将来要增加分类怎么办?原材料采购当然就涉及供应商和价格,那么价格和供应商要不要审批?供应商和价格的审批要不要分级分层?如果需要,客户对于供应商和价格的分类能否提够一个可以准确描述的依据?是否存在增加分类类型和重新分类的问题?如果项目经理一开始没有弄清楚原材料采购流程可能包括比这多得多的内容,而且有可能有些客户自己并没有确定或说不清楚的话,你就不能知道你这个项目要多长时间完成。说实在的,客户不是专家,一次性和你说清楚这些问题是不可能的。做过项目经理的人就应该知道,在这个时候,客户是牙膏,你挤一点他就说一点。其实这也不能怪客户,因为客户不可能还时间为你的项目策划,一是没有时间,二是真的不懂。
所以对不能在规定时间内完成的要求说“
NO
”的难点不在于说“
NO
”本身,而在于要知道完成客户的已经说出的要求和为了完成客户已经说出的要求还要完成哪些潜在的要求要清楚,并且要了解需要花多长时间。这需要项目经理对于项目有很强的把握能力,对业务十分精熟。
3
、对于客户的要求不能先说“
YES
”,再说“
NO
”。
有些项目经理对客户提出的要求开始漫不经心,满口答应,然后到做到中途才发现做不了。这种情况出现一次还可以原谅,出现多了恐怕问题就大了。客户对你的能力就产生了怀疑,进而就怀疑到你们公司的实力。一个好的项目经理应该一次也不出现这样的情况。
4
、不能对客户提出的细节要求说“
NO
”。如果某部分内容是承诺客户应该做的,那么客户要求的一些细节的修改,我认为不论多难,也应该满足。因为这些细节一般就是操作细节、操作习惯和操作效率之类的问题。如果某项大的功能你不做,客户充其量没得用,但如果某一个功能你做了,却没有做好,那么客户每用一次就会在心理对你反感一次,就等于你投入了精力在为自己做负面广告。你伤害的不仅是你自己的名声,还有你所在的公司的名声。
对于项目经理说“
NO
”的问题,可说的还很多,但我想也没必要说的太多,因为大多数都是很明白的,大家都知道的。比如项目经理不能对“
5S
”
说“
NO
”,等等。
对于我上面说的这些问题,我想分析一下其深层次的原因。之所以出现这些问题,主要有两个方面的原因:
首先,我们的一些软件公司管理不规范,人员素质低下。一般的国外的软件公司和大的软件公司是不会出现上面的这些问题,因为大公司管理规范,员工培训到位。不是到人力资源市场上随便招一个人来就能做项目经理的。项目经理需要经过严格的培训。而一些小的软件公司根本没有内部培训,就是培训也不知道培训什么。这样的公司如果不改进,不引进真正的人才,迟早会倒闭。如果客户和这样的公司签约,至少是项目效率低下,甚至项目失败,双方受伤。项目经理的培训是一个大课题,有时间我真想好好写写这方面的内容。
其次,我们的客户还不成熟,客户需要培养。客户希望付出少量的投入,获得更多的回报,结果这些不规范的小公司反而能拿到订单,而那些规范的大公司因为报价切合实际而过高,从而失去了订单。最后受到损失就包括我们的客户。还有一些客户在如何和软件公司沟通和合作上面还缺乏经验,这也是一个问题。客户的不成熟使得我们有的时候只有主动放弃一些订单,才能保全利益。关键是要练就一双识别客户的火眼金星。
总的来说,我不主张定制软件,应该将定制软件做成标准版本。做定制产品要求软件公司要在短时间内了解客户的所有业务流程和公司文化,这几乎是不可能的,所以定制软件的投入产出比一般不高。软件企业要有自己的产品,要靠自己的产品去生存和发展。软件公司可以将软件产品做成能够尽可能的通过简单的配置适应各种可能的情况,而不是临时再去设计软件。
但在目前的情况下,定制软件是不可避免的,而且这个市场还很大,值得去挖掘。因此,对于一些管理不够完善的小软件公司,练好内功,就能成就一番事业。