上周帮一个做宠物食品的客户看外包合同,对方报了42万,工期4个月。需求文档我数了一下,11页,其中两页是公司介绍和团队照片。
我问他这42万怎么构成的,他说不知道,对方就报了个总价。这太常见了,我经手过大概20份软件外包报价单,能主动按人天拆开报的不到三分之一,剩下的都是拍脑袋给个数字,然后等你砍。
所以这篇不写「怎么选外包公司」那种正确的废话,就聊报价单上那些能算清楚的数字。
先说人天单价,这个是有行情的
2024年国内软件外包的人天价格,大概这么个区间:一线城市(北上广深)初级开发1200到1600,中级1800到2500,高级或架构师2800到4000。成都、武汉、西安、郑州这一类,基本乘个0.6到0.7。再往下走,东南亚团队报800到1200的也有,但时区、语言、需求理解这三样你得自己兜着。
这个数字不算玄学,你去BOSS直聘搜「Java外包」就能倒推出来。一个25K月薪的中级,甲方真实成本大概是月薪的1.6到1.8倍,社保、工位、管理摊销都在里面,折到21.75个工作日,一天差不多1900到2100。外包公司再加20%到30%毛利,就到报价了。
低于1000人天的我基本不看。要么是刚毕业的学生在接私活练手,要么是把一个人拆成三个人报,要么就是前期低价进场、后期靠变更找回来。这三种情况我都吃过亏,最贵的是第二种,你以为是三个人并行,其实代码是拼的。
但单价真不是最贵的部分
我核过一个社区团购小程序的账。甲方最初预算25万,最后实际付了41万。多出来的16万,单价一分没涨,合同写死了中级2200一人天,从头到尾都是这个数。
那16万去哪了,我拉了明细:8.5万是需求变更,中途加了三个营销玩法(拼团返现、团长等级、限时秒杀),外包每个按25到30人天报,一共78人天;4万是工期顺延,甲方UI设计稿拖了5周才交付,外包那5周的人还得养着,按50%计费;剩下3.5万是后台导出返工,运营要的格式和开发理解的完全不是一个东西,改了三轮。
所以砍单价是最没意义的谈判动作。你把2200砍到1800,省了18%,听着挺爽,但只要来一次需求变更,全还回去,还得倒贴工期。
真正该抠的是三件事
第一,要WBS,不要需求文档。 需求文档写「用户可查看订单列表」,这是文字。WBS写「订单列表页UI开发3人天、接口联调2人天、空状态和异常态1.5人天」,这是钱。让外包把每个模块拆到0.5人天粒度,谁拆不出来,大概率他自己也没想清楚。我见过一份拆到287人天的WBS,最后结算只差9人天,这就是把账算在前面的价值。
第二,合同里必须写变更单价。 我见过写得最狠的一份:变更按原人天单价的1.3倍计,单次超过15人天要重新签补充协议。别觉得这是甲方占便宜,这条其实保护双方,外包也知道边界在哪,不会瞎报,甲方内部提需求的人也会收敛一点。
第三,验收标准写成测试用例。 「符合预期」这四个字是外包纠纷里出现频率最高的。换成这样:订单列表4G网络下2秒内加载完成、并发500用户无报错、iOS14以上机型不闪退、后台导出10万行数据不超过30秒。可执行、可复现、可截图,吵架的时候直接跑一遍就行。尾款我一般建议留15%,分两次付,上线后一个月再付最后那5%。
我2019年自己踩过的一个坑
那年我给一家杭州的母婴电商做甲方技术顾问。项目走到第三周,他们原来的产品负责人离职了,新来的那位对会员体系有完全不同的想法,整个积分和等级逻辑推倒重做。外包团队其实没毛病,活干得挺利索,bug率也低,但那一轮改完,预算超了60%,工期多了两个月。
最后结算大家都很客气,吃饭的时候对方项目经理还说下次再合作。但我心里清楚,这钱不是外包赚走的,是我们自己内部折腾掉的。外包只承接了我方决策的混乱,然后按人天收费而已。
所以外包到底买的是什么
不是代码。代码是交付物,不是商品本身。你买的是一段确定性的时间——在某几个月里,有一批人稳定地把这件事往前推。
这件事成立的前提是你内部得有一个人能拍板。需求冲突了谁能定、UI改到第几版截止、这个功能要不要砍,得有人当天给答复。没这个人,多少钱都是白花,而且花得特别快,因为等待也是按人天算的。
所以现在有人问我软件外包怎么挑,我一般先反问一句:你们公司这个项目谁拍板?答不上来的,我建议先别谈外包,先把人定了,再把需求写到能拆WBS的程度,最后才谈钱。顺序反了,你在单价上省下的每一分,都会在变更单上翻倍还回去。