当您委托开发软件时,迟早会被问到希望如何付费。两种经典答案是:整个项目一口价,或者随着工作进行按工时和材料付费。每一种都被当作安全的选择来推销。如果用在了错误类型的项目上,每一种都可能严重出问题。我在这两种方式下都工作过多年,在谈判桌的双方都待过,只要提出正确的问题,正确的选择几乎总是显而易见的。

每种模型究竟是什么

固定价格是指供应商同意以约定金额交付明确界定的范围。工作耗时超出预期的风险由供应商承担。作为交换,供应商需要范围明确,并会抵制对范围的更改。

工时和材料计费是指您按实际投入的工作量付费,通常按小时、天或月计算,另加第三方许可证等直接成本。工作耗时更长的风险由您承担。作为交换,您获得灵活性:可以改变方向、增加功能,也可以放弃最终证明不重要的功能。

第三种安排是专职开发者或按月合作,与工时和材料计费十分相近:您每月预留一定量的开发者时间,并自行安排其用途。我们在专职开发者页面中对此有介绍。

固定价格的承诺,及其失效之处

固定价格让人安心,因为它给了您一个可以写进预算的数字。当以下情况成立时,这种安心是真实的:

  • 需求清晰、已书面化,并且不太可能变化。
  • 技术成熟,风险较低。
  • 您可以事先描述将如何判断这项工作已经完成。

在这些条件下,固定价格是高效的。每个人都清楚要开发什么、成本是多少。

麻烦出在这些条件不满足的时候,而这很常见。设想一个需求模糊的项目。被要求报固定价格的供应商有两种诚实的选择:一是加上一大笔余量来覆盖未知因素,这样您就要为可能永远不会发生的风险付费;二是报价很紧,然后通过对每个模糊之处做最狭义的解释来保护自己。两种做法都会带来摩擦。最终您会为某件事是否“在范围内”而争论,而本应讨论的是它是否有用。

还有一个更隐蔽的问题。当供应商承担风险时,自然会有动力在您不易察觉的地方偷工减料:更少的测试、更单薄的文档、更快但更难维护的方案。好的供应商不会这样做,但合同的结构会让人有此诱惑,这一点值得了解。

按工时计费的承诺,及其失效之处

按工时计费如实反映了软件的本质:对问题最好的理解是在开发过程中获得的。它让您可以更早开始,在真实使用中学习并调整。当想法仍在形成时,它往往能带来更好的产品。

它的风险恰恰相反。缺乏纪律,预算就没有上限,项目也没有自然的终点。您需要信任供应商会高效工作并如实告知进展。您也需要做好自己的部分,即确定优先级,因为您每增加一个功能都要多花钱。

通过一些简单的习惯,您可以大幅降低这种风险:

  • 约定一个预估区间,并将其视为规划数字,而不是承诺。
  • 以短期里程碑推进,每个里程碑结束时都有可以查看和测试的成果。
  • 要求提供按每项工作统计所用时间的定期报告。
  • 设置一个审查节点,在该节点由您决定继续、调整方向还是停止。
  • 维护一份按优先级排序的待办列表,确保始终先做最有价值的工作。

一种简单的选择方式

请就您的项目问自己这些问题。

我今天能多清楚地描述最终产品?如果您把一份书面规格交给三家供应商,预期能得到相近的结果,那么固定价格是合理的;如果不能,则不合理。

我改变主意的可能性有多大?请坦诚评估。大多数人在看到可运行的软件后都会有新的认识。如果您预计会调整计划,按工时和材料计费更合适。

技术或问题有多新?不熟悉的领域,例如新的集成或 AI 功能,存在一些未知因素,与其藏在报价里,不如双方共同分担。

这项工作有多大?小而边界清晰的任务,例如某份报表、一个简单集成或一项明确的修复,适合固定价格。大型、长期的项目更适合分阶段,每个阶段单独约定。

相比灵活性,我有多看重预算的确定性?有些机构的采购规定要求给出固定金额。这是合理的限制,也有办法满足,详见下文。

通常效果最好的混合方案

实际上,最好的安排往往是混合方式。

先付费调研,再固定价格。先用一个简短的付费阶段(一到两周)产出书面范围、原型或针对最大风险点的技术验证。然后根据该范围确定开发的固定价格。您以较小的、限定时间的投入换取确定性。

按里程碑固定价格。将项目划分为若干阶段,每个阶段有明确的交付物和固定价格,并在上一阶段完成后再商定下一阶段。您既能在小步推进中获得可预期性,也能在阶段之间保持调整的自由。

带上限的工时和材料计费。按工时和材料计费,但约定一个未经您批准不得超出的上限。供应商不必承担无限定的范围,您也不必承担无上限的费用。

按月合作。对于变更持续不断的长期产品,按约定的开发者工时收取固定月费,预算简单,运行也简单。

变更以及合同如何处理变更

无论选择哪种模式,项目都会发生变化,合同应当说明如何处理。固定价格模式下,应有书面的变更请求流程:描述变更、估算影响、批准后再执行。按工时和材料计费时,变更通过重新排定优先级来实现,唯一的问题是总费用是否仍在预算之内。如果合同对变更只字未提,那么争议在所难免。

其他值得记录的事项

无论采用哪种定价模式,请确保协议涵盖几个要点:

  • 所有权。工作款项付清后,代码和知识产权应归您所有,代码应存放在由您控制的仓库中。
  • 验收。您将如何判断交付物已完成?通过测试、演示还是检查清单?
  • 保密。如果您的信息比较敏感,可签署保密协议(NDA)。
  • 质保与支持。上线后一周出现缺陷时怎么办?
  • 终止合作。双方如何终止合作,以及终止后您可获得什么。

我的建议

如果您能清楚描述项目,就要求固定价格,并期待优秀的供应商给出报价,且范围清晰、有变更流程。如果不能,不要勉强。可以先从简短的付费探索阶段,或设有上限的按时间和材料计费阶段开始,对已明确的部分再转为固定价格。

IT Labs India 提供以上所有模式,并在免费初次咨询之后再推荐合适的模式,因为正确的选择取决于您的项目,而不是取决于什么更方便我们开票。每项合作都从书面估价开始。如果您正在考虑该提出什么要求,我们那篇关于定制软件成本由什么决定的文章可供参考,您也可以在我们的工作方式页面了解我们如何开展项目。准备好之后,请向我们介绍您的项目。