返回
Kevin Riedl

11 分钟 阅读 · 2024年6月7日
最近审核

下一篇
图片在你的设备上生成,不连接 Instagram。文章链接会复制到剪贴板,供链接贴纸使用。

为什么软件外包项目会令人失望:基于证据的采购指南

外包软件项目可能出现预期落空、发布版本有缺陷、交付延误和账单争议。这些问题不能证明外包公司这个类别本身不好。有效的审查应区分某个供应商和项目的证据,以及对交付模式的假设。

结果取决于问题、供应商能力、客户决策、合同、依赖项、证据和运营环境。买方和供应商都可能制造或降低风险。本指南把这些因素转化为选型前和交付中可回答的问题。

正在做软件产品?

 检验你的产品

把约束用于规划对话,不要当成定律

时间、成本、范围和质量是有用的规划维度,但常见的三角或四角模型只是启发式工具,不是预测项目的公式。一项变更可能影响多个维度,但影响方向和大小取决于架构、顺序、能力、自动化、依赖项和风险。

时间、成本、范围和质量作为项目规划约束用它记录取舍:哪个日期固定?哪些结果必不可少?哪些质量属性的风险最关键?授权的预算范围和不确定性是什么?哪个假设改变时需要调整计划?不要承诺增加投入会自动提升质量,也不要承诺增加人员会自动挽回进度。

在比较供应商前定义结果和验收证据

描述用户或业务结果、当前基线、受影响用户、约束和负责人。然后定义每个增量的验收方式。证据可包括可运行的用户流程、自动化测试、安全发现、可访问性检查、性能结果、对账数据、运维手册和利益相关者批准。

英国政府当前的 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 服务描述了不同支持类型,但服务名称不能证明匹配度、结果、独立性或法律分类。要求方案说明范围、假设、团队、权限、定价、证据、风险、依赖项、移交和退出。

精选案例和客户评价是某些工作的证据,不是完整成功率数据集或保证。核实当前参考客户、相关经验、利益冲突、可用时间、安全实践,以及实际执行工作的人。

最终思考

外包公司这个标签不能预测软件项目是否成功。用可检查证据取代刻板印象:预期结果、验收标准、增量交付、基于风险的质量、估算不确定性、公平的风险分配、合适定价、可见变更、运营责任和退出路径。

买方和供应商共同影响结果。可信委托会公开假设、进展、决策、失败、成本、责任和停止条件。如果方案无法支持这种审查,不论供应商自称外包公司、工作室、咨询公司还是产品团队,买方都有具体理由暂停。

构建产品,而不只是 backlog

如果这篇文章对应的是一个真实产品决策,Wavect 可以用高级创始人级判断帮你界定范围、构建、加固或领导软件工作。

可选服务路径:

只收重要内容

关注与你相关的内容

每当我们发布新文章,你会收到一封简短邮件。你可以关注整个博客,也可以只选感兴趣的主题。

你希望接收哪些内容?
选择主题

免费、双重确认、不使用跟踪像素。

返回
Kevin Riedl

11 分钟 阅读 · 2024年6月7日
最近审核

下一篇

获取下一篇关于商业与监管的一线笔记

有新文章时发送一封简短邮件,不使用跟踪像素,也不发送填充内容。

免费、双重确认、不使用跟踪像素。