关于如何预估软件项目的时程与成本,比起许多做研究的人来说,我应该可以算得上是个权威。因为我曾经看过业务人员如何进行报价,也曾经在我的手上,估计出不少项目的时程。许多提供各式各样数学模型的人,从来没有实际地做过任何与报价有关的工作。
对于一个没有经验的人来说,项目的成本,大概可以用这样的一句话来表示:
项目的成本 = 客户打算花在这个案子上的预算
当然,项目的时程复杂的多了,否则怎幺会有办法估计出绝大多数都会落后的时程呢?所以这需要非常繁复的计算。原则上,需要等到项目的成本经过上述公式估计出来以后,再透过详细的分析与计算,才可以估算出正确的时程。这种繁复的程序,经过佳化之后,可以透过下列的方法计算出来:
项目所需耗费的人月 = 项目的成本 / 每个人月的平均成本
项目的时程 = 项目所需耗费的人月 / 要排在这个项目里的人头数量
当然,对于一个专家来说,这简直是太过低估这项工作的困难程度,也忽略了软件工程学中,针对这个问题所写出数以万计的论文。根据我非凡的智力以及超高的经验值所得到的结论,我觉得预估项目的预算与时程少还包含下面几项困难度超高的工作项目:
在客户的部门中,建立良好的内线,以掌握客户的预算以及实际竞争厂商的报价
依据实际竞争厂商的报价,调整报价或是替内线建立一套为何要把项目给我们时,可以在内部自圆其说的说辞
推荐适合的陪榜厂商,以及建议适当的规格标以进行绑标,其实是在争取项目进来之前应该要做的功课。在通过资格审查之前,应该在客户的部门中,建立起适当的内线;不管是透过同学的同学,朋友的朋友,还是透过酒店小姐的帮忙,都得要与承办人员或是客户部门具有影响力的主管建立起一种休戚与共的关系。
然而在通过资格审查之后,业务人员重要的工作,是要帮辛辛苦苦建立起来的内线,准备一套说辞,以证明把项目交给我们来做,是合理的解释。这件事实在是太重要了,所以在此我大概列举几个常用的思考方向:
首先是要确定,要怎幺样导引客户的想法。当你具有合约总价上的优势时,建议客户从成本的观念来考量;如果你的金额比竞争对手高时,你可以先把项目的单价降低,然后把维护部分的成本提高,接着在合约里面藏着一些陷阱,让客户一定要买你的维护服务,接着再建议客户从成本的观念来考量;或是把维护合约的成本降得非常非常低,建议客户从总持有成本的观念来思考,然后在合约中暗藏几个陷阱,让维护合约适用的范围变得非常非常小,以降低会受到的伤害。
当你的客户拥有非常精明的老板,以至于你根本不敢在金额方面玩花样时,或是当金额上可以做的手脚都做完了,总价还是高人一等时,这时候应该强调你的科技、品质、相关领域的经验与知识…任何你觉得可以赢过竞争厂商的地方。
如果你在金额上毫无竞争力,各个领域又与竞争厂商没有办法相比时,这时候整个说帖的重心,则在于诉诸形而上的东西,例如我们比较用心,我们比较脚踏实地、我们拥有比较高的服务热忱…这种没有办法评量的东西。
如果你在导引客户想法的部分失败的话,后一招是散布不实的谣言,这时候的重点,从如何引导客户的想法,转而变成要怎幺样才能把客户骗死。几个比较常见的说法是,听说XX公司目前面临很严重的财务危机,公司可能会面临倒闭、听说XX公司目前人力资源严重不足,所有的人手都被调去支持更重要的案子、听说XX公司先前做过的OO项目,速度超级慢、听说先前做过的OO项目,delay了快要两年,到现在还没有结案…
当你绞尽脑汁再也想不出什幺说帖来的时候,这个时候,需要比较建设性的方法,例如下面的做法:
白烂公司想要建立一个Enterprise Portal,经过了漫长的资格审查,目前只剩下两家厂商,目前正在进行商议价格的阶段。本田与威尔刚好是分属两家不同公司的业务员,只是白烂公司不知道的是,本田的高中同学,刚好是威尔的大学同学。在双方共同朋友的签线之下,本田安排了一个秘密的会面。
本田:听说你们正在标白烂公司的Enterprise Portal。
威尔:嗯哼。
本田:我知道你们少已经花了三十万去巴结他们课长,老实说,我们也花了五十万在他们部经理上。不过我知道我们的报价会比你高,我们技术能力又比你们差…
威尔:所以呢?我们会得标啊。
本田:我知道他们的预算是一千五百万,他们现在收了我们的钱,却想玩两手策略,把总价压下去;他们一方面,拿你们的价钱,来压我们的价钱;一方面,又拿我们的价钱,来压你们的价钱。
威尔:你们可以不要降价啊?
本田:现在景气这幺差,实在是赔本也想做。我知道他们的课长想这样搞下去,他想要用七百万成交,老实说,这对你们来说没有赚头;我们也没赚头。
威尔:你有什幺建议?
本田:你们先前报价一千三百万,我们现在则是报出了一千两百万,我看他们还想继续玩下去。花了那幺多钱买关系,结果两家公司斗下去,却都赚不了什幺钱,这一点意义也没有。我找你,是想建议我们两家公司合作。要嘛,我们不降价,这个案子给你们,然后你们付我们一百五十万顾问费还是咨询费,名目我们可以再商量,我们找合作的公司开发票给你们;不然是我们用九百万当你们的下包商;再不然这个案子我们来做,看你们要抽多少。你觉得怎幺样?
……
与竞争厂商商量好,大家把合约价格拉高之后,会有可以操作的地方。当然前提是要能够一网打尽全部进入安全名单中的厂商,以及客户拥有不做不行的压力。个中运用之巧妙,存乎一心了。
关于如何为项目进行报价,有些人会倾向于采用将工作先进行详细的切割,将每项工作的人月列出来以后,加上一定的缓冲,再加上一定的毛利,才进行报价。这种成本毛利定价法,已经被新一代的行销观念改变了,这也算一种典范转移(paradigm shift)。也是说,我们应该针对客户对于产品价值的认知,而非成本来进行报价,如果客户对于产品价值毫无概念,那应该想尽办法把客户骗死。如果客户有三千万的预算,只报一千万根本是一种罪恶,这会降低资本社会财富重分配的速度。
当然,当项目真正要发包时,还会有许多场面话得要交代。也是说,要从客户愿意支付的价格,来反向推导出运用成本毛利法的各项工作。因为所有的客户都只想付你每个人工作的工钱,不虚报人月,根本没赚头。
客户的信息人员通常会要求提供更详细的项目规划,例如会要求提供工作说明书(Statement of Work, SOW),还是要求细部的项目时程规划,总会有还没有被收买的使用者,会想了解估价的基础与方法…
这是项目经理可以发挥效用的地方了。通常他有两个选择:
依据科学的方法与先前项目统计资料的分析,以数学模型提供一个较为精确的预测。
随他高兴,随便乱估。
在台湾做项目,关于项目范围的叙述,通常都十分模糊。要拿着这幺模糊的说明预测未来是不可能的事情。如果能够精确预测未来的人会去买股票,当华伦巴菲特第二好了,不用当项目经理。依据统计,本书读者刚好可以预测未来的机率应该是趋近于零,所以第一种方法可以不用考虑。
更不用提大部分的公司根本没有收集任何项目统计资料,以及要以数学模式预测未来,得要做多少苦工了。