首页 全球FDE实战
GitHub

第3篇 交付FDE:从第一个问题到持续运行 · 第19章

每个客户都不同,产品怎样成长

设想这样一支团队:第一个客户愿意付钱,让大家兴奋。第二个客户提出相似需求,让团队觉得产品找到了方向。第三个客户上线时,工程师却发现自己又在复制代码、改字段、重新解释同一套规则。

这时,收入在增长,产品未必在成长。

一家提供 FDE 服务的公司,可以凭借优秀的人不断解决难题。但如果每一笔新收入都要求再投入一批同样优秀的人,管理层迟早要回答一个问题:公司究竟在积累可以继续使用的能力,还是在积累必须持续照顾的承诺?两种生意都可能成立,经济结构却不同。把第二种说成第一种,会同时误导客户、产品团队和投资者。

本章从这个分岔口出发。问题不是“要不要定制”,而是一次定制怎样成为下一次交付的帮助,以及什么时候应当承认,它就是一个特定客户的要求。

一个数字为什么还不够

Baseten 的 FDE 负责人 Vlad Shulman 在一篇最后更新于 2025 年 6 月 11 日的文章中,给过一个明确方向:让 FDE 所建工作的 70% 回到产品。这是团队的目标,不是经审计的实际达成率,也不是说每十行客户代码应当有七行直接并进公共产品。1

这个目标值得关心,是因为它把工作完成的地点往后推了一步。客户现场恢复正常,只完成了交付;公司随后是否少犯一次同样的错、少写一套重复代码,才开始回答产品问题。

但百分比本身不告诉我们有多少价值留下来。一段代码进入主仓库,可能从此无人维护。一个页面变成配置项,可能新增几十种难以测试的组合。相反,某次项目没有留下可复用代码,却证实一种产品假设行不通,及时停止了更昂贵的开发。这也可能是有价值的积累。

因此,管理者不能只问“并回了多少”,还要问:下一个项目具体少做了哪一步?维护这部分能力的人是谁?第二个客户是否真的愿意为它改变做法?这些问题比仓库里的归属更接近产品能否成长。

从客户困难走向产品:能看到什么

PagerDuty负责运行事件与告警协作。其工程人员Doug McClure在2026年3月24日回顾:2019年,他嵌入一家未具名广播媒体客户六个月,与产品经理合作扩展ServiceNow事件管理集成,改动当年进入正式产品。他在回忆中把它称为早期FDE项目,当时还没有这个名称。2

一次进入产品,并未自动成为可复制办法。同文回顾,后续服务团队在独立环境里不断构建客户定制,缺少统一值守和服务承诺,同类问题又为下一位客户重新解决。转向FDE组织后,团队进入产品开发体系,并让工程师加入功能团队,学习其代码、测试与发布规范。2 这是一位提供方的回顾,未公开逐客户成本;它仍揭示了真实代价:客户现场可以交付,维护者和产品规范却没有随之接上。

从中值得带走的,不是“把部门搬进研发就会成功”,而是接收方必须参与形成方案。现场工程师写完以后再要求公共产品接收,可能把本可提前发现的差异留到最后。这也为下面的产品材料提供了更严格的问题:能力不仅要进入公共入口,还要经得起旧客户继续使用。

Atlassian在2026年10月4日的FDE方法说明中,把客户共同建设的起点放在期望结果:工程师先追问参与者、相关系统、交接断点和权限,再编写代码、连接系统或调整流程。3 SAP则在10月13日描述自己的FDE模式:与客户共同开发特定能力,再把经验证的方案转为面向行业的软件能力。4 前者说明怎样找到值得解决的问题,后者说明现场成果可能怎样进入产品;两者都是提供方对工作方式的陈述,不证明某个改动已被其他客户采用或产生可计算的复用收益。

2026年9月17日,Wonderful的FDE负责人Boaz Francis描述了另一个片段:公司开放早期产品收集反馈后,FDE不仅报告问题,还直接提出并发性能问题的修复、改写不稳定的上传处理。文章同时强调,代码仍有负责人,修改仍需评审并符合工程标准。5 这份自述没有公开补丁或逐项合并结果,能够支持的是贡献方式发生变化,不能据此算出复用收益。

在这家公司描述的反馈过程中,问题报告开始直接带着供核心团队判断的修改方案。这并非现场工程师第一次能够贡献代码——第3章 Palantir的现场与产品已经介绍过更早的安排。这里值得观察的,是提交候选可以变得容易,产品团队仍须判断它是否只适合当前客户、会不会影响其他人、由谁继续维护。距离缩短,并不要求把发现问题、写代码与批准公共行为都交给同一个人。

Baseten 的 Chains 提供了一个可以观察到产品形态的例子。其介绍说明,公司在单模型部署工具 Truss 之外,面对了由多个模型和处理步骤组成的工作流。客户难以分别管理每一步的计算资源,容易把不同需求绑在一起。Chains 将步骤拆成可以组合的组件,让不同部分分别选择硬件和扩容方式。6

只看功能名,很容易把它理解成又一套编程工具。从使用者处境看,改变则更具体:某一步需要更强的计算设备,不必要求整条流程都使用同样昂贵的设备;某一步变忙,也不必把所有步骤同时扩大。

这是本书对该产品机制的解释。在从试用阶段(beta)走向正式可用(GA)的说明中,厂商列出进一步的变化:结果可以一边生成一边传给使用者,大块数据可以采用更适合程序直接处理的格式传送,不同流程可以共用组件,开发者也更方便检查和修改。这些变化不表示每家客户都已经使用,但能让人看到,产品化还要继续解决步骤之间怎样传递结果、怎样维护的问题。7

OpenAI的FDE负责人在2026年10月回顾另一个复用层次:团队先为一家未具名半导体客户的不同验证任务建设定制工具,后来把这些任务迁到以Codex为核心的共同运行框架,并将部分能力组织为可共享的技能和插件。8 这提供的是同一客户内从多个定制应用转向共同框架的厂商自述,不能证明维护总成本下降或已经在其他客户复用。扩展到新团队仍可能需要更换连接器,并为新任务建立评估。

这几份材料能支持“客户问题被表述为通用产品能力”,不能证明所有改进都由 FDE 独立发明,更不能据此计算 FDE 给公司创造的利润。公开文章没有提供足够的项目成本、内部决策记录和反事实比较。保留这个边界之后,案例仍然有用:它使“从客户回来做产品”不再只是一句组织口号,而能落到一个可讨论的变化上。

两个客户,真正相同的是什么

为了把判断过程展开,下面使用一个教学情境,企业、合同和功能要求均为假设。

一家设备服务商请团队建设维修派单系统。第一家客户要求系统读取报修单、识别设备类型、推荐工程师,由主管批准后派出。第二家客户也叫它“智能派单”,但要求轮值经理审批夜间任务,特殊区域必须由具备指定资质的人进入。

两个页面可能很像。若团队从界面开始抽象,很容易把“审批人”做成一个可配置字段,然后宣布已经支持两家客户。真正的差异却可能藏在决定的性质里:一家始终要求主管批准,另一家还要按地点、时间和人员资格判断。名单可配置,不等于规则已被正确表达。

产品团队首先要找的共同点,应当是稳定的业务动作。例如“根据当前条件判断是否需要批准”“记录批准对应的任务版本”“在任务条件改变后使旧批准失效”。这些动作可以复用。至于哪种资质适用于哪个区域,往往应由客户维护。

这样划分之后,产品卖的是一套表达和执行决定的能力,客户保留的是决定内容。FDE 的任务是识别两者之间的界线,并验证这条界线能否承受真实变化。

如果第二家客户只需要增加一条规则,分层可能有效。如果每次加规则都要改核心流程,所谓通用能力也许只是把第一个客户的习惯藏得更深。此时应当重新检查产品对业务规则的归纳:是否把第一家客户的特有规定误当成通用结构。问题未必在第二家客户“需求太特殊”。

复用至少有四种,不能混在一张图上

在这个情境里,可以留下来的东西并不处在同一层。

第一层是知识。团队知道报修描述经常缺设备编号,知道派单前必须确认工程师资格。知识帮助下一次更快问对问题,但它还不是可运行的产品。

第二层是工程组件。读取工单、识别重复请求、保存任务状态,可以成为下一次使用的代码。不过,换一个工单系统之后接口可能不同,组件必须说明输入、输出和失败条件。

第三层是工作流结构。提出建议、请求批准、执行任务、确认结果,可能在多家客户中都成立。这里可复用的是责任顺序,具体规则仍不同。

第四层是完整产品。另一支团队可以按文档部署、配置、升级和排错,原作者无需长期在场解释每一个细节。走到这一层,才更接近一种可以持续销售和维护的能力。

这四种积累都有价值,但下一次交付节省的成本不同。负责人说“这个项目沉淀了很多”,应当进一步说明沉淀在哪一层。否则,学到了一些行业知识也可能被登记成已经完成的标准产品,直到下一个客户到来才露出差距。

Palantir 的 Marketplace 文档呈现了产品分发与维护的一些实际机制:产品安装、更新、维护窗口和发布渠道等。它说明,复用一旦面向持续运行,就要处理“怎么送到下一个环境”和“怎么安全地变化”。文档本身并不证明某个客户应用已经成功推广,也不提供复用收益率。9

共同配置的范围也在改变。2026年10月6日,Palantir宣布Workshop的Ontology接口支持正式可用:多个业务对象类型可按共同属性和关系使用部分界面、工作流配置,不必分别搭建。公告同时列出尚不支持的组件,地图、透视表和甘特图仍待扩展。10 这增加了产品层面的复用入口;新增对象的业务含义、权限和未覆盖部分仍须逐项检查,实际少花多少交付工时还要另行测量。

第二次使用,是一次新的检验

第一次做成,很容易让团队高估通用性,因为需求解释、代码和操作习惯都出自同一批人。他们知道哪些地方不能碰,也知道出错后去问谁。许多依赖因此没有写出来。

把这个系统交给第二支团队,可以暴露这些隐藏条件。仍用前面的维修情境:在与真实派单系统隔离的测试环境里,准备一条已批准的白天普通区域工单。第二支团队将它改为夜间特殊区域,随后尝试派单。预期结果是旧批准失效,系统重新核对人员资质、请求轮值经理批准,并留下修改记录;若仍沿用原批准直接派出,就应回头修改任务版本与批准的关联设计。

第二支团队还应能依照文档把测试记录恢复到变更前状态,确认旧批准只适用于原任务条件。这是一项构造的检查,不涉及向客户真实生产系统注入故障。原作者可以观察,却不要提前把所有答案说出来。若团队只有在作者提示后才能找到恢复入口,就又发现了一处产品或文档需要补齐的依赖。

这还只检验了新客户。把第二家规则加进去以后,第一家能否照常工作,要放在同一张兼容表里。以下A、B均为上述教学客户;旧核心v1只支持A,新核心v2拟支持两家,表中是必须验证的预期,并非真实客户测试结果。

情况 旧核心v1 新核心v2必须做到
A,白天普通区,尚无主管批准 不派出 仍不派出;不能因白天而绕过A的规则
A,同一任务版本已有主管批准 可以派出 仍可派出,旧配置迁移后行为相同
B,夜间特殊区,资质有效且轮值经理已批准 不支持这一规则组合 核对当前任务版本后允许派出
B,缺资质或缺轮值批准 不支持 拒绝派出,并指出缺哪一项
B,缺时区,无法判断是否夜间 不支持 停在待核,不能默认为白天
任一客户,批准后改变时间或区域 原批准只适用于原任务 新任务版本不得复用旧批准

一次很容易漏掉的回归是:v2新增“白天免审批”的默认值,让A突然少了一道本来必须保留的判断。解决办法不是要求客户每次都记得改默认值,而是让升级过程明确选择客户策略,无法识别配置就停止迁移。教学安排中,公共派单产品组接收核心v2和这张兼容表;A、B的负责人分别确认策略,部署者保留原配置及对应版本,升级失败时恢复匹配的一组,不能只换回程序而留下新配置。

两客户兼容与迁移包提供已填矩阵、策略JSON和缺配置反例。读者可以先按A的旧行为判断v2,再测B的新要求;这比只展示第二家演示通过,更接近产品承诺的真实增加。

如果第二支团队频繁停下来问“这里为什么这样写”,问题可能在文档;如果他们必须重新定义业务对象,问题可能在抽象;如果他们知道该怎么做,却没有相应权限,问题在产品与客户组织的衔接。三种情况需要不同的改进,不能都归结为培训不足。

这种验证也需要成本。为了让一个仅出现过一次的要求成为公共功能,可能要设计配置、兼容旧版本、补充测试、训练支持人员。若它未来只服务一个客户,单独维护一个范围清楚的扩展,可能更合理。

产品化不是越早越好。太晚,重复劳动累积;太早,团队把尚未理解的差异固化进产品,以后每个客户都要付出绕开的代价。FDE 能贡献的,不只是提出功能,更是带回足够的使用条件,让产品团队判断何时值得承担这个长期承诺。

一个产品由多份软件组成时,还要检查它们能否一起安装。Palantir在2026年9月15日介绍 product groups;10月1日所读文档明确标为 Beta,可检查依赖环、缺少输入与不兼容版本,并保存包含版本和检查结果的不可变快照。11 这为前述教学兼容表提供了另一层工具:先确保组合能够安装,再确认A、B的业务规则仍然成立。安装检查不会替客户证明“夜间必须批准”被正确执行。

审查入口也在变化。9月17日的 Changes 界面把跨资源改动集中展示,但差异查看不覆盖 Workshop、Pipeline Builder 和 AIP Logic。12 负责人需要列明这些未覆盖的对象由谁另行检查。把提案集中在一页,减少的是查阅负担,不是让未显示的改动自动获得验收。

谁来付“通用”的那一笔钱

客户愿意为自己的问题付款,未必愿意承担供应商为下一百个客户建设平台的全部费用。供应商也不能承诺一个低价项目,然后要求现场工程师在加班中补出通用产品。

合理的讨论应当把交付必需部分和产品投资部分分开。假设当前客户只需要一种审批路径,产品团队判断未来需要一套可组合的审批能力。前者决定本次能否验收,后者属于公司的产品选择。两者可以同时进行,但责任人、范围和资源应明确。

否则会发生一种常见的沟通错位:销售以为已承诺一个功能,FDE 以为正在试验一个方向,核心研发以为只是客户定制,客户则认为它已经进入标准支持。等到系统升级,四种理解一起进入生产环境,争执往往比技术故障更难处理。

因此,功能从项目进入产品时,最好完成一次真正的责任转移。谁接受它、维护哪些行为、允许哪些变化、当前客户是否需要迁移,都应有明确答案。一个已经合并的代码变更,如果仍只能由现场那个人解释,组织转移就还没有结束。

这里也存在另一种选择:企业可以明确做高质量的定制服务。只要价格覆盖维护、合同表达清楚、客户理解退出条件,它没有必要为了显得更像软件公司而强行包装复用。最危险的是同时许诺定制的灵活性与标准产品的低维护成本,却不给任何一方足够资源。

不是所有反馈都应该变成功能

现场最响亮的请求,往往有明确的提出者和紧迫的时间。尚未购买产品的人、操作系统的一线员工、以后接手维护的人,声音通常小得多。如果产品路线只按请求的音量排列,团队会越来越擅长满足当前最有权力的人,却不一定越来越接近目标用户。

这并不意味着拒绝大客户的要求。它意味着把请求重新写成问题:谁在什么条件下无法完成什么动作?现在的替代办法有什么代价?这个困难在别处是否存在?新增能力会使哪些现有用户更难理解产品?

还应保留一种更难拒绝的请求:合法、能够实现,客户也愿意付款,却未必值得成为公共产品。教学客户A希望维修派单同步打印到一台旧设备,要求专用纸张位置、内部编号和经常变化的版式。它不要求越权,也没有技术上的根本障碍;问题是其他客户没有同样需求,公共核心若承担每次版式变化,就要长期维护一组只有A使用的行为。

本例的产品决定是保留标准导出接口,把打印做成有单独维护负责人和费用的客户扩展。若A不接受持续维护条件,则继续现有人工打印,不承诺合入公共核心。以后若更多客户出现相同需求,可以重看是否值得增加标准模板机制。拒绝这次公共产品化,不等于拒绝帮助客户;它让“谁为未来变化付款”有了清楚答案。

有些反馈最好变成文档修正,有些变成部署诊断,有些要求调整报价或服务范围。只有一部分适合写进产品。将这些处理方式都视为积极响应,现场团队才不必用“新增功能”证明自己重视客户。

产品变强之后,FDE应当更闲吗

若某类问题已经被产品稳定解决,继续派最有经验的人反复处理它,并不能证明客户关系好。产品成长理应使一部分现场工作消失,或者交给成本和职责更合适的支持方式。

但总工作量可能不会下降,因为团队会进入此前无法服务的新客户、新任务或更复杂的场景。管理层应分开看两件事:同一种任务是否越来越容易,以及公司是否主动接受了更难的任务。若只看 FDE 人数与收入的同步增长,既可能错把探索投入看成低效,也可能错把重复劳动看成拓展。

一个有用的复盘问题是:如果明天把当前最熟悉的三名工程师调走,哪些客户仍能稳定使用,哪些能力会马上退回手工作业?答案能帮助公司看见,增长依靠的是已经留下来的产品,还是仍在现场的人。

FDE 与核心研发之间最有价值的联系,最终不只是一条反馈通道。它应该使公司的承诺越来越准确:知道哪些问题可以直接交付,哪些需要共同探索,哪些应当拒绝。这样的产品未必功能最多,却更清楚自己能持续承担什么。

  1. Vlad Shulman,Forward deployed engineering on the frontier of AI,页面标记最后更新 2025-06-11;70% 为目标。文中对该指标的局限及经营解释为本书分析。 ↩

  2. Doug McClure,PagerDuty,2026-03-24,From Embedded to Everywhere,The First Embedding、Innovation Services、The Org Chart Moment,第108—165行;访问日期:2026-09-26。2019年项目身份为2026年回溯命名,客户匿名;没有据部门演变推定所有历史项目都叫FDE,也未把提供方自述当作独立效果审计。 ↩ ↩2

  3. Atlassian,Forward Deployed Engineering Playbook,2026-10-04;2026-11-04读取第254–286行。上次截止日前的历史补证;仅采用其自述的业务结果、系统、交接与权限工作方法,不采用未经独立核实的客户效果数字。 ↩

  4. SAP News,Industry AI: Deep Industry Knowledge, Forward-Deployed Engineering, Measurable Value,2026-10-13;2026-11-04读取第16–25行。SAP对FDE共建及行业软件产品化的自述;不据此断言文中每个客户案例均由FDE交付或独立证明效益。 ↩

  5. Wonderful / Boaz Francis,Let the Field Build the Product,2026-09-17,反馈渠道、代码贡献与评审责任段,2026-09-27读取。团队负责人自述,不是对应代码变更的独立验收;未据此宣称补丁已经跨客户复用。 ↩

  6. Baseten,Introducing Baseten Chains,读取客户需求、Truss 与组件资源配置段落;2026-09-22 为页面最后更新日,正文仍介绍试用阶段。该日期不作为首次发布日,也不能与正式可用说明的页面更新时间拼成发布日期顺序。 ↩

  7. Baseten,Baseten Chains is now GA for production compound AI systems,读取机制与试用阶段之后的变化,包括流式输出、Binary IO 与开发工具。页面最后更新 2026-02-27,首次正式可用的日期未据此确定;未采用未经独立验证的性能倍数。 ↩

  8. Colin Jarvis / OpenAI,What FDE means at OpenAI,2026-10-22;2026-11-04读取第38–45、66–101行。未具名客户及共同框架的做法为供应方自述;未披露可独立核对的成本、代码口径或跨客户效果。 ↩

  9. Palantir,Marketplace overview,2026-09-25 访问的持续更新文档;仅据其说明产品安装与维护机制。 ↩

  10. Palantir,2026年10月公告,2026-10-06“Use ontology interfaces in Workshop”125–156行,2026-10-08读取。产品公告,无客户工时或净收益验证。 ↩

  11. Palantir,Product groups,Beta、验证及快照段,2026-10-01读取;9月月报独立条目署期2026-09-15。检查安装兼容性,非业务验收。 ↩

  12. Palantir,Global Branching application,Proposal page与不支持资源段,2026-10-01读取;9月17日公告证明该界面发布时间。 ↩

发现错漏或不同意见,欢迎反馈。可先选中一段原文,再点击“反馈本页”,前往 GitHub 填写 Issue;提交需登录 GitHub。

《全球FDE实战》· 2026年11月修订候选 · 资料截止 2026-11-04。书中区分来源陈述、研究判断与教学示例。
原创内容采用 CC BY-SA 4.0,署名、注明修改,并以相同许可分享;第三方材料权利归原权利人。