接外包项目如何报价
任何项目的报价都隐含着报价者的经验。受小圆桌开发小组的委托,在此分享外包报价的一些考虑因素,希望能对接单经验不足的同学有所启发,富有经验的外包接包方可自动忽略。
报价之前,乃至决定接项目之前,都应该了解外包的风险,小圆桌@大圣同学有《创业外包的风险》系列文章,推荐阅读。
首先,报价之所以重要是因为只有甲乙双方的出价存在重叠空间,项目才有合作的可能。一般而言,甲乙双方能接受的价格都是一个范围。以重叠区域为协议空间,项目的最终定价由双方博弈最终确定。
作为接包方,报价工作可分四大部分。我将报价工作整理成了一个更加详细的思维导图,有需要可以点此下载。
一、确定理论的价格范围根据成本、风险、收益及税费等因素的评估来确定能接受的价格范围,一般的计算方式是成本乘以风险因素,再加上预期收益,整体作为理论上的税前报价范围。如果需要开发票,则再额外考虑税点。
理论价格范围的评估一般需要进行以下工作。
1.成本评估1.1实现成本明确工作范围——一个外包项目,以APP为例,需要产品设计、交互设计、UI设计、开发、测试、交付、上线、维护等工作
分解需求——将外包项目尽可能详细的按照工作模块进行划分
评估工作量——以接包方自身能力为依据,评估出完成每一模块所需要的人天数
评估实现成本——以接包方自身的市场薪资水平为依据(月薪=20人天),将总人天数折成总结算成本
1.2管理成本接包方在评估成本的时候往往只关注实现成本而忽略了管理成本。事实上项目外包过程中与甲方的协作会花费乙方非常多的时间,如若遇上沟通不畅的甲方和项目,成本非常高。管理成本包括沟通成本和培训成本。
沟通成本——需求沟通、进度沟通、测试沟通、交付沟通等
培训成本——对甲方做实现过程的知识培训、对甲方相关人员的培训、交付培训等
2.风险评估风险评估的最终结果是得出风险影响因子,需要考虑多个要素,不一一展开。
2.1需求变化的风险需求本身随时间变化甲方的需求表达不明确乙方对需求的理解有偏差甲乙双方对结果的预期不一致2.2项目实现的风险技术难度工作量与乙方可投入时间需要甲方协作,甲方的配合程度2.2甲方的风险甲方的角色(个人、团队或者公司,风险依次降低)甲方的经济能力甲方对项目的认知程度(认为很容易完成的,风险高)3.预期收益预期收益就是说就是扣除人员工资还想挣多少钱。外包公司的收益率从20%-100%不等,50%是正常值。当然接包方如果是个人或团队,收益率会相应降低,但可作为一个参考值。
4.税费非公司接包方一般无法提供发票,如果甲方需要,可谨慎寻找第三方代开票,通常会因此额外收取甲方3%-10%的税费。需要注意的是,税费是按照项目合同总额计算的。
二、通过一定的策略了解对方的价格范围1.让甲方先报价一般的项目报价中,不优先出价都作为一个好的报价策略。
2.通过意向报价筛选甲方以接包方个人能接受的最低价报出意向价,如果甲方给的价格不超过这个意向价,那就没有继续谈的必要,应尽快放弃项目。
3.尽可能了解甲方的预算范围通过询问甲方能接受的价格上下限、甲方预期的时间等了解甲方的预算范围。
三、给出报价以上第一部分工作是接包方自身确定的一个理论报价范围。然而这只是接包方报价的一个基础依据,最终报出的价格,还会有其他影响因素,例如:
1.项目来源熟人的项目熟人介绍的项目陌生人的项目2.接项目的意愿2.1意愿高除金钱收益外还有其他收益已有的积累能让项目成本低于市场成本急需要钱2.2意愿低对项目或者甲方不感兴趣项目风险过高四、协议定价项目报价的最后一步是接包方与甲方进行最终价格的商定,形成写入合同的报价。这一步工作除了接包方通过多接触一些项目积累经验外没有什么意见可以参考。事实上,虽然报价需要考虑很多个因素,但项目接触多之后,接包方逐渐会形成自己的经验,许多因素已经固化在经验里,不再需哟一意考虑。这就是为何说报价是一门艺术的原因。
软件项目开发报价指南
公司一直以来都在接新开发的,定制化的解决方案开发项目,在和客户取得了互信以后,首先会遇到的问题就是:多少钱?报个价吧。往往,我们的销售经理就蔫吧了,具体研发需要多少钱?我得去问问项目经理,那项目经理又是如何预估研发费用呢?
公司近期有好几个人都在问我这个问题,以下为我的经验之谈。
首先,估计研发成本1
开发成本就是从零开始开发这么一套软件的研发费用。一般来讲,如果报价低于研发成本,那么公司就赔钱了,因为这个数目的钱大致会支付给研发工程师,公司又收不回这么多钱,公司就赔钱了。
一个解决方案,可以用其包含的功能的多少作为一个复杂度的度量,这里介绍功能预估成本法。
功能预估成本法也就是把所有的功能需求列出来,估计出所需要的研发时间,再根据人员费用计算出成本的方法。
举例来讲,如果一个方案,包含了100个具体的功能需求,每个需求的粒度大致需要1个工程师1天完成,那么就是100人日,我们按一个工程师1万每月的人员费用来计算,需要100/20*1=5万元,20就是每月20个工作日,即这个方案的开发,研发成本为5万元。
等等,这么成本这么低,会不会有问题?从开发阶段来看,又分成需求分析,系统设计,开发实现,测试,部署等多个环节。除了功能,我们还需要做性能,还需要做UI,这些东西都没有算进去呢!
是的,实际的工作量应该在上面的100人日的基础上直接乘以2.5,也就是(100*2.5/20)*1=12.5万。这里的2.5是一个系数,是一个外籍大牛在某书籍里写出来的,具体哪本书我都忘记了,不过这么多年我都是用这个系数,感觉还是比较准确的。
最后,重复一下公式:研发成本=工作量(人日)乘以2.5 乘以研发人员平均月薪除以20
其次,估计研发成本2
在上面的公式中,我们成本是否准确,最大影响是对工作量的估计,可是,实际上很多项目最不好估计的就是工作量,如果要将工作量能估计到人日,也是需要大量的分析工作的。因此我们这里介绍更加快捷的参考成本估计方法。
参考成本估计方法也就是参考团队过去开发所消耗的时间,来估计同类型的项目可能花掉的时间。
例如,平台科做的水务项目后台,人力成本消耗可以大致评估为4个人9个月,这个项目里有如下几大要素:表计,网关,多租户,接口,报表,也可以理解成有5大模块,那么每个模块的工作量约为:4*9/5=7.2人月。
那么假设新的解决方案有4大模块,那么可以预估为7.2*4=428.8人月,成本估计为7.2*4*1=28.8万。
最后,重复一下公式:研发成本=当前生产率(7.2)乘以模块数乘以研发人员平均费用
第三,估计研发成本3
我最常听到的一句话是,“客户的需求很简单”,哦,对了,如果有功能很难实现,那个是要加钱的哦!上面只是对于没有难点的常规开发的估计公式。对于像“需要支持千万设备在线”这样的需求,我们要保持敏感性,这个一般人是做不到的,好吧。
不要因为大家都在用微信了,就觉得微信很好做,对于国内大部分的研发团队,是没有能力独立做一个微信,或者淘宝的后台的。(当然随着技术的发展,可以借用其他公司的技术和服务来开发)
这里只表述一件事情:量变会引起质变,用户规模的扩大会导致架构的变化,架构的变化会导致研发工具,研发模式的变化,需要的人的素质也不是一个层次的了。
另外,上述的基于要素的估计方法忽视了要素之间的关联,N个要素之间有N*N/2个连接,在系统要素增多,或者在分布式场景下,这个连接带来的开发量就指数级地增长了。
总之,如果系统的体量上了量级,那么开放工作量也会上量级。经验地,我们可以将解决方案分成小型(50万用户/设备),中型(500万用户/设备),大型(5000万用户/设备),所需要的工作量分别在之前的工作量上乘以1,乘以4(4中有一个2是给工作量的,一个2是给人员成本的),乘以16。
以上面的例子,假设解决方案有4大模块,那么可以预估为7.2*4=428.8人月,成本估计为7.2*4*1=28.8万。如果要做成中型系统,那么成本估计为28.8*4=115.2万,如果要做成大型系统,那么成本估计为460.8万。
对工作量的估计需要落实到纸面上
一个物联网方案,大多都涉及到端,中间件,云好多层,一个要注意的事项就是要把需求落实到纸面上。
以一个例子作为解释,将用户的需求落到纸面上是多么重要:
例如近期的一个定位跟踪项目中和后台相关的只有一个需求:“可通过远程配置电源,使电源利用最大化”,单看这个需求,就会得出“特别简单”,容易有平台派一个兄弟弄一天,应该就能搞定了的想法。可是一天真搞不定的。我最终给出功能分解如下:评估为20人日完成。对应研发成本为1万元,这个评估中还没有包括App的开发,只是纯后台的开发。
把各个方面的需求落到纸面上,跟客户面对需求来谈价格,客户比较能能接收,价格也会比较公道。
项目的服务器端开发部分功能与评估如下:
远程功能设置(Remotefeatureset)
可通过远程配置电源,使电源利用最大化(Powersupplyviaremoteconfiguration,tomaximizepowerutilization)
项目服务器端功能:
建立一个BS服务器端,用户可以通过浏览器访问服务用户登录用户手动新建Tag信息记录用户查询Tag的状态用户下发对Tag电量的配置
手机APP接口,服务器端提供接口支持手机App的如下功能:
手机可以通过App登录,查询Tag列表为每个Tag配置电源使用参数
网关接口
网关登录网关更新Tag状态信息
最后,研发报价中的一些法则
边际成本为零的法则
这个原则是说,如果开发出来的软件可以重复卖给无穷多的人,那么边际开发成本为零,所以,我们考虑软件成本的时候,还可以考虑下,这套东西能否再卖给另外一家;或者我们在和客户谈研发成本的时候,发现这套东西还适用于其他客户,那么报价可以便宜一点,适用的客户越多,就可以越便宜。当然,我们要跟客户讲好,这个价格,并不包含软件产品的所有权,甚至不会给出源码。
如果用户需要的方案可以在以前的方案的基础上改,那么也是可以降低方案的价格的,但是,具体情况就得具体分析了。
最优报价不是最低报价
这个法则是说,软件产品报价最低的那位,往往是软件产品质量最差的那位,因此性价比并不高,现在国内使用正版软件的思想已经被越来越多地被接收,好的软件能提高生产率,能更快地赚钱,或者更多地节约成本,因此在软件市场里,最优报价并不是最低报价。
那最优报价是多少呢?个人认为是在成本价格的150%到200%区间内,这个价格是客户可以将这个方案外包出去的价格,一般的外包承包商也是也是在这个区间报价的。也就是说,如果我们的报价高于这个价格,客户会想,我外包给一个外包公司更划算。这个区间进行报价,能够使得我们赚取尽可能多的研发利润。
时间缩短一半,成本增加一倍的原则
这个法则是说,在我们设定的时间点的基础上,如果要求提前交付,这个也是额外的成本,我们可能不得不逼迫员工加班,或者临时招聘,或者部分工作外包,因此意味着成本的增加。
从客户的角度来讲,产品研发也存在时间成本,如果他自己开发需要6个月的时间,50万,而目前我们直接能提供同样的产品,价格也是50万,那么客户更倾向于购买我们的产品,因为多出来的这6个月的时间,可以为他在市场上占有先机
市场价值影响
某些产品的研发成本可能很低,但是市场价值可能很高,非常典型的如hao123,最终卖了1千万人名币。所以软件产品的报价,还需要参考市场价值。
市场价值在于产品创意带来的价值,产品外围给客户带来的价值,同类产品的参考价值等。通常市场价值高的产品,我们在报价的时候应该适当上调。