Salesforce 集成几乎从来不是败在协议上。认证是已经解决的问题,写入一条记录也是已经解决的问题。真正把项目拖垮的,是每天的请求配额和数据模型的形状,而这两件事通常要等到上线大约三周之后才被发现,那时夜间作业开始返回错误,却没有人说得清它在测试环境里为什么是好的。 这个模式一致到可以预测。开发者对着一个 Developer Edition 组织开发,一切通过,客户签字验收。随后这套代码遇上的,是一个已经住着营销连接器、数据仓库抽取作业和一个 2019 年就在跑的 Apex 触发器的生产组织,而那份看起来很宽裕的请求预算,其实是别人早已在花的一口共用的锅。 这篇文章把意外提前摊开来讲:你应该用哪个 API、配额是怎么算的、当你的...
定制软件开发
关于定制软件开发的文章、指南和教程,为开发者和企业提供实用知识与技巧。附实用要点。
软件源代码托管,也就是把源代码交给中立的第三方保管(英文称为 software escrow),回应的是一种完全合理的担忧:为你构建并运维关键系统的供应商倒闭了,而你手上留下的,是一个自己离不开、却又维护不了的东西。托管协议把源代码存放在第三方那里,一旦真的发生这种情况,第三方就把它交付给你。 这种担忧是站得住脚的。问题在于这项工具经常被误解,而两者之间的落差催生出一类协议:每年都在花钱,真到需要它的那一天却帮不上忙。 签字之前应该先问的那个不舒服的问题: 如果明天就把代码交到你手上,你这边真的有人跑得起来吗?一份没有构建说明、没有基础设施定义、没有它所调用的第三方服务凭据、也没有数据的源代码托管,不是业务连续性方案。那只是一个文件...
在固定价格合同和按工时计费之间做选择,通常被描述成一次关于风险的选择。这个说法本身没错,但紧接着就被处理错了,因为双方都默认风险会消失,而不是只从一方转到另一方身上。 风险不会消失。在固定价格的安排里,供应商承担估算出错的风险,并把这份风险提前算进报出的数字里。在按工时计费的安排里,承担风险的是客户。真正的问题从来不是哪一种方式能消除不确定性,而是哪一方更有条件去管理它,以及为转移风险付出的代价值不值得。 能预判哪种方式管用的检验: 你能不能把“完成”写下来,写到两个人对是否已经达到这个状态能给出一致判断的细致程度?如果能,固定价格是你可以用的选项,而且多半是合理的。如果写不出来,固定价格合同并不会消除模糊,它只是把将来每一次分歧从...
软件 RFP,也就是需求建议书,本来的作用是让不同的供应商变得可以互相比较。可现实中大多数文件恰好起了反作用:它们把解决方案写得足够细,细到把答案的空间捆死,却偏偏漏掉了任何人报价时都需要的那些信息。结果就是五份报价,彼此相差一个数量级,形式上每一份都回应了要求,但没有任何两份在测量同一件事。 常见的解释是供应商在打太极。偶尔确实如此。但更常见的情况是,文件要了一个从它自身内容里根本推不出来的数字,于是每家供应商都用各自不同的假设去填补空白。假设不同,价格自然不同,这里并不存在诚不诚实的问题。 判断你的 RFP 是否有效的检验方法: 两家不同的供应商读完之后,能不能得出实质上相同的范围?如果文件里只写了“用户管理”,没有说明有多少种...
软件维护成本,就是那个把一个成功项目在十八个月之后变成一场难堪谈话的数字。开发阶段有预算、有审批、也如期交付了。可上线之后会发生什么,被一句「支持服务」轻轻带过,然后配上一个有人凭感觉给出的金额,而那个金额几乎每一次都太小。 原因出在结构上,不是谁不上心。开发有一个可以定价的范围。维护没有范围,因为决定它的是还没有发生的事情:某个依赖库爆出漏洞,某个供应商改掉了自己的接口,某个用户碰上了当初谁都没想到的情形。 人人都在引用的经验法则是每年按开发成本的 15 到 20 个百分点计算,而它之所以危险,恰恰是因为它离正确答案不远。 它对的次数多到让人放心,错的时候又总是朝同一个方向错:它低估了缺陷集中冒出来的第一年,而在有合规义务或者外部...
技术尽职调查不是一场代码质量比赛,而为它做准备的团队,往往把时间花在了完全不重要的地方。没有哪个买家是为了给你的抽象层打分才来收购公司的。买方想弄清楚的只有两件事:持有这套系统要花多少钱,以及在钱易手之后,事情可能糟糕到什么程度。 这个视角的转换很重要,因为它会改变你应该优先修哪里。丑陋但能跑、团队看得懂、可以安全修改的代码,只是一条轻微的发现。相反,写得优雅却只有一个人看得懂的代码,是一条严重的发现,而真正会让价格发生变化的,恰恰是后者。 所有问题背后的那个问题: 如果创始工程师在交割后的第二周离职,这套系统还能继续运行、并且继续被修改吗?几乎每一条压低报价的发现,都是对这个问题的具体回答。知识集中在一个人的脑子里、没有文档的部署...
金融科技软件开发在报价和排期上,和普通软件开发没有任何区别,直到有人问出那句话:到底谁有资格持有这笔钱。从那一刻起,项目就不再是一道工程题,而变成一道带着工程成分的监管题,你脑中原本的时间表也不再成立。 技术很少是难点。搬运资金是一个已经解决的问题,市场上有成熟的服务商、有文档齐全的接口,还有第一天就能用起来的测试环境。真正拖长金融科技项目的,是牌照上的身份、面向审计要拿得出的留痕义务,以及好几个架构决定其实早已由持牌方替你做完了。 决定你时间表的问题: 你自己持牌,还是以代理身份挂在别人的牌照下运营,抑或完全避开受监管业务?这三个答案会产生长度完全不同的项目,而差距是用等待的月数衡量的,不是用开发的周数衡量的。在做任何范围规划之...
MVP 软件开发出问题的地方是范围会议,不是开发过程本身。有人说出「最小可行产品」这几个字,大家点头认可,接着送来的功能清单里却写着用户账号、后台管理面板、计费、通知、仪表板,还有一个移动应用。那不是最小可行产品。那是一个完整的产品,而它花掉的时间会是你心里那个数字的三倍。 真正造成损害的词是「可行」。多数团队把它读成「好到可以卖给所有人」,可它的本意是「刚好够用来判断到底有没有人想要这个东西」。 最省钱的范围测试: 对每一项功能,问问自己会因为答案不同而做出什么不一样的事。如果一项功能改变不了任何决定,它就不属于 MVP。后台管理面板不会告诉你人们是否想要这个产品;它只会告诉你,等人们想要之后,这个产品会更好管理。把它放到第二步再...
在英国做医疗软件开发,比其他任何行业的同等工作都更贵、更慢,原因并不是代码更难写。原因是预算中相当大的一部分花在证据而不是功能上:临床风险文档、信息治理,以及买方在还没试用产品之前就会索取的合规材料。 在别处做过软件的团队一直低估这一点。他们给应用报价、拿下项目,然后才发现合规这一层不是收尾阶段,而是必须从第一天就开始的并行工作流,因为它会约束那些日后修改代价高昂的架构决策。 真正推高成本的东西: 一个英国医疗项目大约四分之一到三分之一的预算花在临床安全、信息治理和合规证据上,而不是功能。决定性的问题不是你的应用有多复杂,而是它是否接触患者数据、是否影响临床决策、以及买方是不是 NHS。每一项都会各自增加一条独立且无法省略的工作流。...
凡是按端点数量来估算定制 API 开发成本的人,几乎都会算错,而且通常差三倍。端点本身是整件事里最便宜的部分:十来个端点,只是读写你手里已经有的数据,对一位称职的后端开发者来说不过是两周的活。 真正花钱的,是把这些端点变成另一家公司愿意把生意押上去的东西所需要的一切:经得起安全评审的认证、让你日后还能改主意的版本管理、好到没人需要给你发邮件的文档,以及能告诉你哪个客户今天早上过得不顺的运维装置。有一个 API,和有一个别人依赖着做生意的 API,两者之间的那道落差,才是预算真正的去处。 价格区间速览: 只被你自己的应用调用的内部 API,通常花费 10,000 到 30,000 英镑。由少数几家指定集成方使用的合作伙伴 API,一般...