第一篇 外包接单经验谈-寻找客户:
https://blog.csdn.net/hjc1984117/article/details/116752120
第二篇 软件外包接单经验谈-需求篇:
https://blog.csdn.net/hjc1984117/article/details/118068403
上篇讨论了需求沟通的事情,这篇就来说估算工期、报价、签订合同的事情。
估算工期还是需要依据之前和客户沟通后的需求来定的。先根据自己的经验先给出一个总体的开发时间。其实有很多理论方法可以用于估算工期。例如敏捷开发中可以把功能点全部列出来,然后让大家选一个开发工期的时间单位为5,也就是在所有功能点中开发时间为最中间值的一个功能点。然后把其他功能点和它比较,采用的时间单位可以选1,3,5,8,10这么几个。最终会把所有功能点都给出一个具体的时间单位值。
至于这个时间单位是1天还是1周就看项目的具体情况了。采用这种方式评估工期有几个前提条件。1、开发团队比较固定,技术水平相当来说比较平均,没有太差的拖后腿。2、中小型项目。3、客户没有预先给出明确的时间周期。开发团队比较固定就意味着大家经常在一个干事情,相互之间比较了解,这样在评估时间单位的时候比较能达成共识,评估结果也就相对准确一些。项目体量太大了,这种评估方式误差就会比较大。大的项目,例如开发周期超过半年的或者金额超过80万的,还是要采用类似RUP这样的方法论,从中裁剪出合适具体项目的一些过程。
这个不在我们的讨论范围,这系列文章主要是讨论中小外包项目的。事实上我自己就在2012年考过了PMP,这玩意儿我最大的体会就是老外在这方面真的还是牛逼,把项目管理中能量化的地方都量化了,学习这一整套下来在脑中还是形成了一套如何去管理项目的方方面面。但是类似PMP或者RUP这样的方法论最大的问题就是流程和过程文档太多了,例如和客户沟通还要写一份沟通计划,风险分析还有有风险定性和定量相关的过程文档,等等等等不一而足。我在近15年的软件生涯中重来没有哪一个项目是完全按照这些方法论来的,因为不现实。没那么多时间给你去慢慢准备。不过有这个精力和金钱的话,还是建议大家去考一个PMP,可以系统的学习一下先进的项目管理理论还是有好处的,另外有些时候也可以装装逼。
话说回来我在接到外包项目的时候,很多时候我自己会首先评估一个时间出来,这主要是依靠经验。这么说可能太虚无缥缈了,你们可能会问什么经验,总不能拍脑袋吧。这种所谓的经验其实就是你项目做的多了,你就会发现当你接到一个新的项目,在和客户的无数次沟通后形式了比较全面的需求后,你大脑自觉的就会在之前做过的项目中搜索出一个和眼前这个新项目最匹配的一个,于是大差不差的你就能在第一时间大概得出这个新项目的开发时间,当然这个不能作为最终给可以承诺的时间。下一步我会采用上文说到的敏捷开发方式中的评估方式,当面召集所有人来评估一次。得到评估结果后我会把自己评估的时间做比较,其实每次都差不太多的。另外老实说我会在这个时间基础上,再加上1/2的测试时间和冗余时间。测试时间不必解释,包含冗余时间是因为几乎所有的项目都有各种原因,会偏离你的预先设定。例如在开发过程中,突然发现有些地方还有再次和客户当面沟通确认,但是客户可能在出差、可能工作比较忙要几天或者一周后才有时间。等等类似这样的情况都会耽误开发进度。
最终我得出一个开发周期后,就会和客户再确认一次。有些时侯客户会同意,有时候客户会讨价还价要求缩短时间,这个时候你就要用你的能力去说服客户,告诉他你定的交付周期是怎么来的,你怎么考虑的。其实这真的是处于对客户负责也是对自己负责,不然我早点交付给你早点拿到钱,何乐而不为呢。怕就怕有的外包团队顶不住客户对缩短时间的压力最后没有系统的进行测试,交付后各种BUG客户天天各种责问。这时客户可不管那么多时间是你承诺的,你真的是哑巴吃黄连,有苦说不出了。
报价和签订合同也是一门学问,几乎所有的客户在报价上都会讨价还价。有部分客户在心中都有一个预期价格。就是不管功能复不复杂他自己心中认为开发这样的一个系统就是这么多钱,任凭你给他讲再多也没用。遇到这种类型的客户,你不必和他争执。你要站在一个更高的维度就思考问题。如果你评估这个客户不是一次性买卖,后续还有更多的机会,那么这单生意不赚钱也可以考虑接了。如果你现在生意差,需要流水养开发那也接了吧。保证流水不断是更重要的事情。当然一切的前提是你觉得这个客户,或者这个项目不会让你”后患无穷“。
除了这类客户外,大多数客户还是愿意听你报价的理由,只要你不是太过分。一般都是在你报价的基础上喊你打个8,9折的。毕竟客户也不傻,在和你接触之前一般也和其他几家外包商接触过,心里还是有谱的。不过能经过前面的需求沟通走到报价的阶段,说明对你还是很认同的。这里具体的利润因人而异因时而异,不好具体讨论。我自己接项目一般保证有3成的利润就可以。因为你还要把给国家交的税,账期,和可能收不到尾款的风险考虑进去。所以我要保证最低3成的利润。
合同的拟定有2种情况。一种是你自己根据自己的模板改好后发给客户,客户修改后再发给你。这种情况一般没什么问题,因为总价和付款节点以及每个节点要交付的东西都提前商量好了。最怕的就是那种大公司,有自己的法务部门的。他们都不接受你的合同模板,都是他们的法务部拟定一份合同发给你,让你确认。这个时间你可要睁大你的眼睛,因为里面坑巨多!我遇到过几次这种情况,合同里面写明延迟交付一天就赔偿总金额1%、要求免费维护期3年、交付上线后1个月内出现3次BUG就无偿退还所有开发费用等等。每一条这种无理要求,你都要据理力争。有时候我会和对方的法务部门来回交锋数次甚至数十次之多。双方来来回回的讨价还价,甚至差点项目泡汤。当然你要想办法把业务方拉到你这边,让他去协助你和法务部交涉。因为法务部他的职责就是最大限度的保证己方的安全,降低己方的风险,他自己不会主动去管业务方的需求是否紧迫,所以一般业务方也会多多少少的帮你一些。
另外还有一种情况也要特别注意,就是签订背靠背的合同。所谓背靠背就是你开发的系统不是给你的直接客户使用,而是你客户的客户。也就是说你是二包,客户和你签订合同的时候,要求他们收到他们客户的款项后再给你打款。这时你一定要在合同中加上一条,就是最迟在交付后某个时间范围内,要付清所有款项。我现在就遇到一个客户,和他签的背靠背。当时没有经验没有加上最迟付款时间点。因为考虑到他的客户是一家大国企,不会不付款。结果现在系统上线都快1年了,还有四成款项没收回来。他的客户就是各种理由不给他付款,现在都在收集证据准备打官司了,我的钱真不晓得好久才能收回来。
报价完成了,合同签订了,这个项目才算真正的拿下了。在项目进行中,隔一段时间要自己主动的给客户汇报一下进度,能有演示的界面就尽量早点给客户演示,免得客户又有需求上的变更或者理解上的偏差,导致你返工。对了,在开票的问题上再补充一句。我自己的公司是小规模纳税人,现在因为疫情的原因,国家有税收减免政策。如果客户要专票(增值税专用发票)我一般都是给客户开一个点的税,客户一般也都同意。有些客户就要普票,那当然更好你不用交营业税了。开票的时候买个好点的打印机,你会节省很多时间的,这都是我的教训,之前我买了一个二手的,打10张发票,我打费了20张。搞了我一个通宵,不是位置不正就是打印出来的文字超出框框太多。如果你钱够多,请个行政当然也可以。我自己小公司这些小活都是自己干,财务上找了一家代理记账的公司帮我处理。以后如果公司做大一些了,我还是想找个专职的人员。
这个系列文章已经写了3集了,与其说是写给别人看的,不如说是我自己对将近两年的外包接单生涯的阶段性总结。如果您看到这个系列文章,有什么想咨询或者沟通的,可以随时给我留言,大家一起交流。