- 网站或 App 的价格,是您所做选择的总和:页面、平台、要对接的系统、语言,以及上线后由谁维护。
- 同一个项目的两份报价不同,是因为每家公司对需求的理解不同,包含的条目也不同。
- 第一天用不到的部分可以砍,但测试、安全和源代码的权利不能砍。
- 把需求写成一页,发给每一家公司同一页,报价才能放在一起比较。
价格是您可以自己决定的各项选择之和
问建筑商盖一栋房子要多少钱,对方会反问:几个房间、几层、用什么材料。"做网站要多少钱""开发 App 要多少钱"也是一样。名字相同的项目,规模可能相差很大。您能掌控的,是构成价格的每一个决定。
全文反复出现的一个词是范围(Scope):系统必须做到的事情,以及不包含的事情。好的报价单,就是每一行都标了价格的范围。
影响价格的十个因素
页面与流程 最大的因素。一个点餐 App 有菜单、购物车、付款和订单追踪,每个页面背后都有管理后台和异常处理,例如顾客刚付完款店铺就打烊了。每次都必须正确的流程,比只显示信息的页面更贵。
平台 网站、Web 应用、iOS、Android 或 LINE Mini App。用一套代码同时支持两个系统的跨平台开发,比分开做便宜,但依赖设备硬件的功能除外。
设计水平 用标准页面套件换上您的颜色和标志,比每个页面从头设计并加上动画便宜。设计投入放在顾客每天使用的页面上就够了。
要对接的系统(系统集成) ERP、库存、POS、会员系统、支付网关、LINE Login、物流,以及泰国的电子税务发票(e-Tax Invoice)。大部分成本在页面上看不到(见文末写给开发团队的说明)。
AI 功能 聊天助手、识别泰文文件的 OCR、商品推荐。除了开发工作,还会带来按用量计费的月度费用,以及用贵公司真实业务例子进行的测试。
内容与语言 由谁撰写文字、拍摄照片、准备商品数据。双语页面要设计和测试两遍,因为两种语言的文字长度不同。
安全与个人数据 处理受泰国《个人数据保护法》(PDPA)保护的个人数据的系统,需要同意页面、应要求删除数据、加密和渗透测试。
上线后的维护 服务器费用、随 iOS 和 Android 更新而做的适配、修复 Bug。第一天的价格只是系统整个生命周期总拥有成本(TCO)的一部分。
工期压力 比工作实际所需更短的期限,意味着要加人,价格上升,质量通常下降。
团队类型 自由职业者、把开发外包出去的代理公司,或拥有自己的设计、开发和测试团队的软件公司(Software House)。价格不同,是因为包含的内容不同,其中也包括两年后还能打电话找到的人。
| 因素 | 推高价格的情况 | 降低价格的做法 | 应该问开发方的问题 |
|---|---|---|---|
| 页面与流程 | 不能出错的流程,例如付款 | 先去掉还没人用的页面 | 这份报价算了多少个页面和流程? |
| 平台 | iOS 和 Android 分开写代码 | 跨平台,或先做一个平台 | 我们的大多数客户用哪个平台? |
| 设计水平 | 每页从头设计、加动画 | 标准页面套件 | 哪些页面定制设计,哪些用标准? |
| 要对接的系统 | 没有 API 或测试环境的旧系统 | 第一阶段用文件批量传送 | 对方系统宕机时,App 怎么处理? |
| AI 功能 | 没有人工审核、每次都必须准确 | AI 起草,人工审核后发送 | AI 的月度费用按什么计算? |
| 内容与语言 | 第一天就要多种语言 | 由您的团队准备内容,先做一种语言 | 文字、照片和商品数据由谁准备? |
| 安全与 PDPA | 金融或健康数据 | 只收集必要的数据 | 是否包含同意页面和数据删除? |
| 上线后的维护 | 没有计划,每次修改都是新项目 | 写明范围的维护计划 | 第二年要付哪些费用? |
| 工期 | 期限短于实际所需 | 先上线已准备好的部分 | 如果延后期限,价格会变吗? |
| 团队类型 | 包含测试、文档和质保 | 小项目找自由职业者 | 谁实际做事?系统出问题时谁接电话? |
逐行阅读报价单
最好读的报价单往往最危险:三行字,一个价格。没写出来的,就是您以后要另外付钱的。一份完整的报价单通常包括需求整理和原型、设计、开发、管理后台、每个系统的对接、测试与用户验收测试(UAT)、服务器部署或应用商店上架、文档与源代码、培训,以及维护计划。
逐行阅读报价单
- 第 1 步 区分交付物和工作内容 在属于"东西"的行下面画线,例如上架的 App 或文档。只写着"开发""维护"的行,要问清楚能拿到什么。
- 第 2 步 找出缺少的行 与上面的清单对照。最常缺的是管理后台、测试和文档。问清楚是不包含,还是写在别的行里。
- 第 3 步 找出前提假设 例如由您准备内容,或现有系统已有可用的 API。假设不成立,就会变成额外工作。
- 第 4 步 读懂变更条款 中途增加页面怎么计价、谁批准、对交付日期有什么影响。
- 第 5 步 把付款和看得见的成果挂钩 与可点击的原型或可试用的系统挂钩的付款节点,比与日期挂钩的更稳妥。
- 第 6 步 把问题发回去 每份报价不超过十个问题。回答清楚又迅速的那一家,就是接下来几个月要一起工作的团队。
为什么同一个项目的两份报价差这么多
需求写得不清楚时,每家公司都会用自己的假设填补空白。对一家来说,"会员系统"是用邮箱注册;对另一家来说,是带等级和积分的 LINE Login。一份报价包含管理后台、测试和文档,另一份只有 App 本身。测试异常情况、写出别人能接手的代码的团队,需要更多时间;便宜的团队省下的部分,常常在第二年以技术债务的形式回来。此外,固定价格里包含了确定性的成本,按小时计费则把风险转到了您这边。
模拟案例
暖武里的一家化妆品公司(名称和细节均为虚构)想做一个与门店 POS 对接的积分 App。老板把一段简短的需求发给两家公司。第一份报价来自自由职业团队,只有三行:iOS 和 Android App、会员系统、通知。第二份来自一家软件公司,有十四行,价格高出不少。老板差点当场选了第一家。
把两份并排放在一起,第一份没有管理后台,每次做促销都要请开发者添加;没有对接 POS,积分只能手工录入;也没有符合 PDPA 的同意页面。老板把需求重写成一页,发给两家。第一家增加了条目,价格随之上调;第二家提议第一阶段先在一个平台上线。差距缩小了,最后由一个问题决定:POS 对接出问题时,由谁负责?
哪些可以砍,哪些不该砍
价格超出预算时,先砍掉第一天用不到的部分,同时保住必需部分的质量。
可以砍:第二个平台、还没有客户的语言、动画、还没人用的后台功能、暂时可以用批量文件代替的对接,以及还没有足够数据来测试的 AI 功能。
不该砍:测试与 UAT、安全与同意页面、数据备份、主数据的管理后台、与正式环境分开的预发布环境、文档,以及在合同里写清楚的源代码所有权。砍掉这些,今天会便宜一些,但您会一直依赖同一家开发方,这就是供应商锁定。
询价之前,把这些写在一页纸上
- 用户是谁、分几类,每类在第一天必须能做什么
- 按重要性排序的核心任务,以及暂时不需要的功能
- 大多数客户实际使用的平台
- 要对接的系统、是否有 API、各系统由谁负责
- 要保存哪些数据,是否包含个人数据或敏感数据
- 第一天需要的语言,以及由谁准备内容
- 上线后由您的团队还是开发方维护
- 交付期限、定这个期限的原因,以及衡量成功的指标
分阶段开发,为已经证明的部分付费
第一阶段是马上能带来收入或减少工作的流程。上线、衡量,再根据真实数据决定下一阶段。这和 MVP 是同一个思路,例子见 7 天从想法到试验产品。每个阶段都要有自己的范围和价格,先做的部分要能直接扩展,不必推倒重来。签约之前,问清楚"第二阶段"是已经包含在价格里,还是另行报价。
如果需求还没有清楚到可以写成范围,请读聘请 AI 开发公司之前要准备什么;想确认这个项目是否值得投入,请读您的企业每月在人工作业上花掉多少钱?
写给开发团队 · "系统对接"这一行里有哪些工作
"对接系统 X"这一行里至少有六部分工作。Auth:API Key、OAuth 或 Service Account,密钥轮换和最小权限。Error Handling:Timeout、不会造成重复交易的 Retry(Idempotency),以及存放发送失败条目的队列。Data Mapping:名称相同但含义不同的字段、单位、商品编码和泰文编码。Environment:泰国很多旧系统没有 Sandbox。Rate Limit:对方限制调用次数时分批发送。Reconciliation:每天核对两个系统是否一致的对账报告。请按这六部分估算;只数 API Endpoint 的数量,结果总会偏低。
我们如何在开工前把价格说清楚
决定价格的信息,在贵公司同事的脑子里。销售知道客户怎么下单,财务知道单据应该是什么样子,IT 知道旧系统能对接到什么程度。DNA Maker 先听这些同事讲,把内容整理成页面、流程和要对接的系统,并在任何工作开始之前固定范围和价格。
接着我们做出可以点击的原型,请贵公司团队试用,原型确认后才开始开发。团队全部是我们自己的成员,不转包;您每周都能看到演示,并按范围拿到源代码。大型项目我们会先提出一个可以独立上线的第一阶段。我们的提案书是什么样子,可以在提案样例查看。想知道您的需求大概需要多少费用,可以告诉 Dream,几分钟内就能得到答复;也可以看看 AI 网站开发和 AI 应用开发服务页面。我们已完成 500 多个项目,其中包括为泰国的银行、医院和大型企业集团所做的工作。
SOFTWARE ENGINEERING GLOSSARY
软件工程术语表
| 术语 | 是什么 | 通俗示例 | 高管应问开发团队的问题 |
|---|---|---|---|
| 范围(Scope) | 系统必须做到的事情和不包含的事情的清单 | "可以用 LINE 注册,但暂不包含会员等级" | 我们今天提的要求里,哪些在范围之外? |
| 原型 | 写代码之前做出的可点击页面 | 销售团队试着下单,发现缺少确认页面 | 开始开发之前,我们能先试用原型吗? |
| 系统集成 | 让新系统与现有系统互相传递数据 | App 每五分钟从 POS 读取一次库存 | 对方系统宕机时,用户会看到什么? |
| 源代码所有权 | 交付之后代码归谁所有的约定 | 公司拿到完整的代码和文档,可以请别的团队继续修改 | 付完最后一期款后,代码归我们吗?存放在哪里? |
| 供应商锁定 | 因为没有代码、文档或权限而无法更换开发方的状态 | 域名和开发者账号都登记在承包方名下 | 如果明天终止合作,我们能自己继续运营吗? |
