本文内容
为什么软件外包项目会令人失望:基于证据的采购指南
外包软件项目可能出现预期落空、发布版本有缺陷、交付延误和账单争议。这些问题不能证明外包公司这个类别本身不好。有效的审查应区分某个供应商和项目的证据,以及对交付模式的假设。
结果取决于问题、供应商能力、客户决策、合同、依赖项、证据和运营环境。买方和供应商都可能制造或降低风险。本指南把这些因素转化为选型前和交付中可回答的问题。
正在做软件产品?
检验你的产品把约束用于规划对话,不要当成定律
时间、成本、范围和质量是有用的规划维度,但常见的三角或四角模型只是启发式工具,不是预测项目的公式。一项变更可能影响多个维度,但影响方向和大小取决于架构、顺序、能力、自动化、依赖项和风险。
用它记录取舍:哪个日期固定?哪些结果必不可少?哪些质量属性的风险最关键?授权的预算范围和不确定性是什么?哪个假设改变时需要调整计划?不要承诺增加投入会自动提升质量,也不要承诺增加人员会自动挽回进度。
在比较供应商前定义结果和验收证据
描述用户或业务结果、当前基线、受影响用户、约束和负责人。然后定义每个增量的验收方式。证据可包括可运行的用户流程、自动化测试、安全发现、可访问性检查、性能结果、对账数据、运维手册和利益相关者批准。
英国政府当前的 Sourcing Playbook 建议公共服务采购采用基于结果的规格、早期市场沟通、应有成本建模、测试、试点、风险分配和绩效衡量。它不是通用合同模板,但其问题对商业软件买方同样有用。
让进展能够通过小增量审查
状态报告不等于可用软件的证据。约定与项目风险和交付形态匹配的审查节奏,展示可运行增量、决策、受阻依赖项、预测变化、缺陷和验收结果,而不是机械地每周执行一次。
美国政府问责局将敏捷开发描述为对功能、质量和客户满意度进行持续评估的增量式开发。其 Agile Assessment Guide 用于政府评估,但也支持频繁审查和客户反馈这一更广泛的原则。增量交付可以降低某些风险,但不保证进度、预算或产品成功。
把质量当作风险决策
增加测试不会必然产生通用的指数成本曲线,也不能仅根据工时推断缺陷更少。验证效果取决于需求、设计、测试选择、环境、自动化、审查质量、威胁暴露和运营反馈。
定义产品需要的质量属性:正确性、安全、隐私、可访问性、性能、韧性、可维护性和可恢复性。低影响内部工具与涉及安全、金融、身份或权利的软件需要不同证据。不要把航空、Web3 或其他行业视为统一的风险类别。
NIST 的 Secure Software Development Framework 以结果为导向,并明确要求根据业务需求、风险容忍度和资源调整。它建议考虑风险、成本、可行性和适用性,而不是原样照搬一份清单。安全验证只是质量的一部分,不能证明产品整体适用。
估算不确定性,而不是隐藏它
估算应说明范围、假设、排除项、依赖项、方法、置信度和更新条件。将估算工作量、已识别风险暴露,以及管理层对额外资金的决策分开。不要假设每个项目都必须划分为三个预算桶,也不要假设增加储备金会降低底层技术风险。
NASA 的 Cost Estimating Handbook 为 NASA 项目设计,不是针对普通软件外包项目。它仍然是记录估算依据、风险、不确定性、范围和更新方式的权威参考。应根据项目规模调整方法,不要全盘复制航天治理。
把风险分配给最有能力管理的一方
在定价前建立风险分配矩阵。对每个重大风险记录原因、后果、早期信号、负责人、缓解措施、剩余暴露、决策权和商业处理。某些风险应由供应商承担,某些应由买方承担,还有一些需要共同控制。在合同中转移风险并不会让某一方实际拥有控制权。
英国政府当前的 Risk Allocation and Pricing Approaches 指南说明,风险应由最有能力管理的一方承担,定价应区分输入、输出和结果。供应商绩效指标应客观,并仅限于供应商能影响的结果。实际委托应适用当地采购和合同法律。
根据不确定性和控制结构选择定价
按时间、固定价、里程碑、封顶和结果挂钩的安排会以不同方式分配不确定性。没有一种模式天然更诚实、高效或利益一致。如果输出和验收足够稳定,固定价可以适用。如果支出、优先级和停止规则保持透明,按时间计费可适合探索或范围变动的工作。按结果定价需要可衡量结果,并公平考虑供应商无法控制的依赖项。
在相同范围和证据基础上比较方案。询问包含、排除、假设、变更控制、保修、支持、许可和移交内容。还要建模买方内部工作、第三方费用、云服务、安全审查、数据迁移、运营和退出,而不只看供应商账单。
让变更控制有用,而不是用于惩罚
软件探索会改变团队对问题的认知。良好的变更记录应说明触发原因、受影响需求、选项、对证据的影响、成本和进度范围、决策负责人和批准。它在保留基线的同时允许有意识地变更。
不要把每次澄清都视为应计费的范围扩张,也不要把每个新请求都视为已包含。约定如何区分缺陷、验收缺失、法规变化、依赖故障和新产品范围。应将累计变更与业务案例对照,而不是缺少整体视角地逐一批准。
要求明确运营责任和退出路径
如果没有人能运营、保护、支持和修改系统,交付就不完整。定义代码库、访问权、环境、部署、可观测性、事件响应、备份、恢复、数据导出、文档、许可、凭证、供应商依赖和知识转移。
明确设置权限。谁验收工作、改变优先级、批准生产访问、接受剩余风险,并可以停止发布?资深顾问、产品负责人、工程负责人或分时高管可以帮忙,但任何头衔都不会自动使激励一致。合同分类和雇佣身份取决于真实工作安排和法域,不是营销标签。
买方应检查什么?
| 领域 | 签约前的证据 | 交付期间的证据 |
|---|---|---|
| 结果 | 基线、目标、负责人、排除项 | 已验收的用户或业务结果 |
| 范围 | 流程、接口、假设、依赖项 | 基线和已批准变更记录 |
| 质量 | 基于风险的属性和验收计划 | 测试、审查、发现、事件 |
| 估算 | 方法、范围、置信度、不确定性 | 预测、实际值、剩余不确定性 |
| 商业 | 定价单位、风险分配、第三方成本 | 发票可追溯性和决策日志 |
| 治理 | 角色、权限、升级、节奏 | 决策、阻塞、行动、负责人 |
| 运营 | 服务、安全、支持、恢复、退出 | 运维手册、演练、访问和移交 |
警示信号需要结合背景
- 方案在没有假设、探索或置信度的情况下给出精确成本或日期。
- 验收依赖主观满意度,缺少可观察标准。
- 供应商无法展示可运行增量、失败或预测变化。
- 重要风险在合同中转移给无法控制它的一方。
- 在相关情况下缺少安全、隐私、可访问性、数据迁移、运营或退出。
- 买方没有获得授权的负责人管理优先级、验收、依赖项和决策。
这些是尽职调查问题,不是供应商不合适的证明。要求补充缺失的证据,并根据项目风险评估回应。
应如何评估 Wavect 的模式?
用同一框架评估 Wavect。我们的定制软件开发和 Fractional CTO 服务描述了不同支持类型,但服务名称不能证明匹配度、结果、独立性或法律分类。要求方案说明范围、假设、团队、权限、定价、证据、风险、依赖项、移交和退出。
精选案例和客户评价是某些工作的证据,不是完整成功率数据集或保证。核实当前参考客户、相关经验、利益冲突、可用时间、安全实践,以及实际执行工作的人。
最终思考
外包公司这个标签不能预测软件项目是否成功。用可检查证据取代刻板印象:预期结果、验收标准、增量交付、基于风险的质量、估算不确定性、公平的风险分配、合适定价、可见变更、运营责任和退出路径。
买方和供应商共同影响结果。可信委托会公开假设、进展、决策、失败、成本、责任和停止条件。如果方案无法支持这种审查,不论供应商自称外包公司、工作室、咨询公司还是产品团队,买方都有具体理由暂停。
