装修队的师傅端着两本图册问你:客厅的沙发,是买现成的,还是按你家户型定做?成品沙发今天下单明天就到,款式大众、尺寸固定;定制沙发要先量房、出图纸、等上几十天,但能和你的墙脚严丝合缝,颜色面料任你挑。技术选型中的“开源 vs 自研”,本质上就是这么一对“成品家具”和“定制家具”的选择。开源软件像成品家具,代码公开、社区共同维护,拿来即用,但要搬进你的业务户型,往往得削足适履;自研软件像定做家具,从地基开始按你的业务逻辑搭建,贴合度最高,但工期和成本全压在自家团队身上。这篇指南,就是带你走完一次完整的“装修决策”:从概念辨析、评估维度、成本核算,到技术债务、混合策略和落地流程,让你在真实的选型会议上,既能算清账,也能说服人。

岗位关联

掌握这套开源 vs 自研的决策框架,你将能用四维评分、TCO 核算和 PoC 验证支撑每一次技术选型,在架构师和团队负责人岗位上做出更理性、更可辩护的决策。

目录
  1. 可视化演示
  2. 核心概念辨析
  3. 评估维度框架
  4. 成本收益模型
  5. 技术债务管理
  6. 混合策略选择
  7. 决策流程落地
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

\u901a\u8fc7\u591a\u7ef4\u5ea6\u5bf9\u6bd4\u3001\u6df7\u5408\u7b56\u7565\u67b6\u6784\u4e0e\u6210\u672c\u6f14\u8fdb\u66f2\u7ebf\uff0c\u4ea4\u4e92\u5f0f\u5c55\u793a\u5f00\u6e90\u4e0e\u81ea\u7814\u7684\u6743\u8861\u51b3\u7b56\u6846\u67b6\u3002

本节配有交互动效(进入视口后自动加载,约 3KB)。

\u7ef4\u5ea6\u5bf9\u6bd4\uff1a\u5f00\u6e90vs\u81ea\u7814 \u81ea\u7814\uff1a\u9ad8\u63a7\u5236\u529b\u9ad8\u6210\u672c \u5f00\u6e90\uff1a\u4f4e\u6210\u672c\u4f4e\u63a7\u5236 score = \u03a3(wi \u00d7 di) \u6ed1\u5757\u8c03\u8282\u4e1a\u52a1\u6838\u5fc3\u6027\u6743\u91cd

核心概念辨析

装修队的师傅端着两本图册问你:客厅的沙发,是买现成的,还是按你家户型定做?成品沙发今天下单明天就能送到,但尺寸走大众款,风格也随大流;定制沙发要先量房、出图纸、等上几十天,却能严丝合缝地嵌进你家墙脚。技术选型中的开源与自研,就是这对“成品家具”和“定制家具”的抉择。

开源软件像成品家具——源码公开在仓库里,社区共同维护,谁都能下载、使用和修改,但把它搬进你的业务户型,往往要削足适履,还得忍受“家具风格”被上游设计左右。自研软件像定做——从地基开始按你的业务逻辑搭建,贴合度最高,但工期和成本全部压在自家团队身上。选择之前,先分清这两者的本质差异:开源买的是“别人帮你做好的通用件”,自研买的是“完全按你图纸施工的专属件”。

引入开源还有一个常被忽略的细节:许可证。MIT、Apache-2.0 像“图纸随便看、随便改”,GPL 则要求“你改动后的图纸也必须开源”。这相当于买家具时附带一份改造协议,返工前必须读懂条款。判断适用场景时也有共性规律:日志、缓存、消息队列这类通用需求,直接买成品更高效;而决定你产品差异化的核心功能,更值得量身定做。用一张最简单的净收益公式,可以把两种选择的比较浓缩起来:

所以别急着签“装修合同”。先回家算一笔账:这套成品家具搬进来要加几个垫脚、改几块木板;那套定制家具多花的工期,是否真的能换来业务上的回报。净收益更大的那一边,才是此刻更聪明的选择。

Δ=(Vopen−Copen)−(Vcustom−Ccustom)\Delta = (V_{\text{open}} - C_{\text{open}}) - (V_{\text{custom}} - C_{\text{custom}})
该公式把开源和自研各看成一笔生意:收益减去成本后的“净收益”谁更大,谁就更值得选。Δ 大于 0 偏向开源,小于 0 偏向自研。
  1. 开源收益开源方案给业务带来的全部功能与效率价值,是公式里的“收入侧”。
    VopenV_{\text{open}}
  2. 开源成本引入开源后的适配、运维、学习与合规成本,是“支出侧”。
    CopenC_{\text{open}}
  3. 自研净收益自研方案同样有收益与成本,不能只盯着开发费,还要算维护账。
    Vcustom−CcustomV_{\text{custom}} - C_{\text{custom}}
  4. 整体差值判据两边的净收益相减,得到选型倾向的量化信号。
    Δ=(Vopen−Copen)−(Vcustom−Ccustom)\Delta = (V_{\text{open}} - C_{\text{open}}) - (V_{\text{custom}} - C_{\text{custom}})

评估维度框架

定做家具前,设计师一定会问四件事:预算多少、多久入住、物业允不允许改结构、家里人的生活习惯是什么。技术选型也一样,评估开源还是自研,不能只看功能列表,而要同时看四个维度。

成本投入是最显性的一维,但它远不止标价;时间周期决定你能不能赶上业务窗口,晚交付一个月,再好的方案也可能失去意义;团队能力决定自研这条路走不走得动,一个五人小团队去自研数据库,等于让两个木工师傅去造一套全屋实木家具;生态社区则像小区物业——社区活跃的开源项目,出问题时有人响应,半死不活的项目,等于买回一套没人保修的家具。这四个维度合起来,构成选型的完整视野。

很多团队做选型时列一张对比表,把功能逐行打勾,这其实只完成了“看款式”这一步。更要紧的是给四个维度分配权重:初创公司赶上线时间,时间维度的权重就高;成熟平台追求稳定和总成本,成本与风险的权重自然上调。权重不是拍脑袋,而是需求的映射。

把四个维度变成公式,评分就落地了:总分高的方案未必是功能最多的,而是最贴合你“装修预算”的。下次选型会上,与其争论“哪个框更多”,不如先讨论“哪个维度权重更该高”。

S=∑i=14wi si,∑i=14wi=1,si∈[1,5]S = \sum_{i=1}^{4} w_i\,s_i,\quad \sum_{i=1}^{4} w_i = 1,\quad s_i\in[1,5]
这是加权评分公式:每个方案在每个维度上打 1~5 分,再乘以该维度的权重求和。总分代表着方案对你业务的综合适配度,而不是它自身的功能多寡。
  1. 四个评估维度成本、时间、团队能力、生态社区,构成了公式的四个项目。
    i=1,2,3,4i = 1,2,3,4
  2. 权重按业务优先级给每个维度分配比重,全部权重之和必须为 1,代表预算有限。
    wi,∑i=14wi=1w_i,\quad \sum_{i=1}^{4} w_i = 1
  3. 单项得分每个方案在各维度的表现打 1~5 分,来自团队对标或 PoC 实测数据。
    si∈[1,5]s_i \in [1,5]
  4. 加权求和将各维度得分乘以权重后累加,得到方案总分。
    S=∑i=14wi siS = \sum_{i=1}^{4} w_i\,s_i

成本收益模型

装修报价单上写着“地板 2 万”,入住后才发现还要防潮垫、踢脚线、搬运上楼费。低估隐性成本,是装修超支的第一大原因,也是技术选型翻车的第一大原因。

只看“开源免费、自研要养团队”是最初级的算法。真正的总拥有成本(TCO)要覆盖从方案进场到退场的全生命周期。开源方案的隐形账单包括:企业版授权费(很多开源项目靠企业版盈利)、云资源消耗、团队学习曲线、以及将来迁移替换的成本。自研方案的账单则主要是人力、基础设施和长期维护,而且这些成本会在前期集中爆发。两者都别忘了风险成本:上游项目停止维护怎么办、核心技术骨干离职怎么办——这些都要折算成钱。

把成本模型拆开,可以得到一个 TCO 分解式。它提醒你:报价单上最贵的部分,往往不是真正吃掉预算的部分。一个看似免费的社区版,可能因为反复适配而消耗掉三个工程师的半年时间;一个前期投入巨大的自研系统,可能在五年后开始摊薄成本、释放收益。

把装修总账摊到十年里看:成品家具可能换了三套,定制家具只换一次沙发套。TCO 不是比较谁的标价低,而是比较谁在完整生命周期里花得更少、赚得更多。

TCO=Clic+Cinfra+Cteam+CriskTCO = C_{\text{lic}} + C_{\text{infra}} + C_{\text{team}} + C_{\text{risk}}
TCO 由四部分组成:许可证与订阅费、基础设施费、人力维护费、风险与合规成本。分别估算并加总,才能看到方案的“全程装修总价”。
  1. 许可证与订阅费开源生态中的企业版授权、商用订阅,以及合规审计费用。
    ClicC_{\text{lic}}
  2. 基础设施费服务器、云资源、带宽、存储等运行底座开销。
    CinfraC_{\text{infra}}
  3. 人力维护费团队学习、二次开发、日常运维和排障的人工成本。
    CteamC_{\text{team}}
  4. 风险与合规成本项目停更、许可证纠纷、安全漏洞等隐性风险的折现金额。
    CriskC_{\text{risk}}
  5. 四者加总把四类成本相加,得到方案在全生命周期中的真实总成本。
    TCO=Clic+Cinfra+Cteam+CriskTCO = C_{\text{lic}} + C_{\text{infra}} + C_{\text{team}} + C_{\text{risk}}

技术债务管理

装修最怕什么?插座位置没规划好。住进去才发现书房没网口、厨房没插座,只能拖出一圈排插——排插就是“补丁”。更麻烦的是,补丁会越积越多,最后想重新布线,只能砸墙。

技术选型图快留下的架构短板,就是技术债务。开源方案为了快速上线跳过定制适配,自研方案为了赶 Demo 砍掉架构设计,都会欠债。债务本身不可怕,可怕的是忽略它、甚至美化它。选型时就应该评估:这个方案会带来多少已知债务?利率有多高?比如选择一个社区活跃度持续下滑的框架,每拖一个版本,未来迁移成本就可能翻一番——这就是复利效应。

评估债务时,要同时看两个方向:一是债务的“本金”,即当前为了速度而牺牲的设计质量;二是债务的“利率”,即团队流动性、业务复杂度、技术栈老化共同推高的偿还难度。偿还策略也有章法——高利率的债(影响核心链路稳定的)先还,低利率的债(边缘模块的临时方案)可以排期慢慢还。更重要的是建立预防机制:在选型评审表里增加一栏“已知技术债务与预计利息”,让每一次图快都明码标价。

装修师傅一定会提醒你:“插座现在不补,以后砸墙更贵。”技术选型也一样:债务要在利息还低时偿还。选型报告里写清已知债务、预估利率和还款计划,比一味吹捧方案优点更有价值。

Dt=P⋅(1+r)tD_t = P\cdot(1+r)^t
这是技术债务的复利模型:初始债务本金 P,按利率 r 随时间 t 滚动累积。它解释了为什么“以后再说”往往变成“再也还不起”。
  1. 初始债务本金选型时为了省时间而留下的架构短板或临时方案。
    PP
  2. 债务利率由团队流动、业务复杂度、技术老化共同决定的偿还难度系数。
    rr
  3. 时间指数债务随时间的复利累积,t 越大,债务增长越陡峭。
    tt
  4. 完整复利公式本金乘以复利因子,得到第 t 期的债务总额。
    Dt=P⋅(1+r)tD_t = P\cdot(1+r)^t

混合策略选择

高手装修从来不是全买或全做。客厅沙发、餐桌椅买成品,省时省力;书房定制书柜,严丝合缝塞进斜顶。技术选型的成熟做法同样是“混搭”。

混合策略的核心原则是:通用、非差异化的部分用开源,保住交付速度;决定用户体验或业务壁垒的部分自研,建立长期优势。比如一个 AI 知识库系统,向量检索可以用成熟的 Milvus 开源方案,而面向特定行业的问答模板和权限模型,则值得自研——这就像精装房配了成品餐桌,但书房必须按你的藏书习惯定做。

混合策略还包括对开源组件做“有限改造”:像给成品沙发换个更耐脏的沙发套,而不是拆了重做骨架。每深改一处,都意味着后续要维护自己的分支、承担升级合并的成本。所以改造前要问:这个改动是必要的差异化,还是只是审美偏好?同时留意许可证的约束——GPL 类许可证对修改后的代码有开源要求,改造前必须先看“图纸使用说明”。

混搭的关键不是追求“全自研”的体面,而是找那个 β:让开源承担通用的底子,让自研发力最出彩的细节。装修如此,架构亦如此。

Cmix=β Copen+(1−β) Ccustom,0≤β≤1C_{\text{mix}} = \beta\,C_{\text{open}} + (1-\beta)\,C_{\text{custom}},\quad 0\le \beta \le 1
混合方案的总成本等于开源部分成本乘以开源占比 β,加上自研部分成本乘以自研占比 (1−β)。决策目标,就是找到让总成本最低的 β。
  1. 开源占比β 代表系统里采用开源组件的比例,取值范围 0 到 1。
    β∈[0,1]\beta \in [0,1]
  2. 自研占比剩余 (1−β) 的部分由自研承担,两端比例互为消长。
    1−β1-\beta
  3. 开源侧成本β 越大,开源组件越多,对应的适配与订阅成本越高。
    β Copen\beta\,C_{\text{open}}
  4. 自研侧成本(1−β) 越大,自研开发与维护成本越高。
    (1−β) Ccustom(1-\beta)\,C_{\text{custom}}
  5. 混合总成本两部分相加,得到混合策略的全周期总成本。
    Cmix=β Copen+(1−β) CcustomC_{\text{mix}} = \beta\,C_{\text{open}} + (1-\beta)\,C_{\text{custom}}

决策流程落地

从看中一套方案到正式动工装修,靠谱的做法是:先量房,再做一个卧室样板间,全家人住进去体验一周,最后才签大合同。技术决策的流程,本质也是这套“先验证再投入”的打法。

选型不能靠领导拍脑袋,也不能靠某位架构师的技术情怀。把流程拆成需求梳理、PoC 验证、正式评审、落地复盘四个环节,每一步都有明确的产出物。需求梳理阶段写出业务目标和约束条件,这是“量房”;PoC 阶段用最小成本把候选方案放进真实业务场景跑一遍,这是“样板间”;正式评审用加权评分和 TCO 作为统一标尺,这是“签合同”;落地后按季度复盘,把实际成本与预估对比,这是“入住回访”。

PoC 是整套流程中最值钱的一步。它要做的不只是“能不能跑通”,而是记录性能指标、适配成本、团队上手难度、以及踩坑数量。跑完 PoC 后,用通过率说话:通过的验证项除以总验证项,得到 p。只有当 p 超过事先约定的阈值 θ 时,方案才能进入正式评审。这个阈值机制,专治“选了再说”的冲动型决策。

就像装修公司交房时会给你一份验收清单,技术选型也应该留下完整的决策文档:评估了什么、为什么选它、欠了多少债、谁负责还。把过程做扎实,下一次“装修”,你就能少踩很多坑。

1{p≥θ}=1⇒通过评审,p=NpassNtotal\mathbf{1}\{p \ge \theta\} = 1 \Rightarrow \text{通过评审},\quad p = \frac{N_{\text{pass}}}{N_{\text{total}}}
这是 PoC 的决策规则:实验通过率 p 达到阈值 θ 时,指示函数返回 1,方案进入正式评审;否则回到选型池重新评估。
  1. 实验通过率PoC 中通过的验证用例数除以总用例数,是量化实验结果的核心指标。
    p=NpassNtotalp = \frac{N_{\text{pass}}}{N_{\text{total}}}
  2. 决策阈值团队事先约定的最低通过标准,通常根据业务风险设定,比如 80%。
    θ=0.8\theta = 0.8
  3. 指示函数当 p 达到 θ 时返回 1,否则返回 0,把模糊感受变成二值结论。
    1{p≥θ}\mathbf{1}\{p \ge \theta\}
  4. 完整规则只有返回 1 时方案才通过评审,否则继续调研或调整方案。
    1{p≥θ}=1⇒通过评审\mathbf{1}\{p \ge \theta\} = 1 \Rightarrow \text{通过评审}

AI 应用场景

场景一:RAG 知识库的向量检索选型

阶段:模型应用与基础设施选型

解决的问题:一个 AI 应用团队要搭建 RAG 知识库,需要选型向量检索组件。传统做法是团队直接选一个熟悉的开源库,或干脆自己写 ANN 检索算法,结果要么性能不足,要么耗费数月。用本文的评估框架,团队先列出成本、时间、团队能力、生态四个维度,给权重,再对开源的 Milvus 与自研方案打分,最后用 PoC 验证真实业务数据下的召回率和延迟。

具体案例:某内容平台要在 3 个月内上线智能客服知识库。团队用开源的 Milvus 作为向量底座(通用组件),同时自研了领域知识切片和权限过滤模块(差异模块)。加权评分中时间权重最高,TCO 显示 3 年周期内混合策略比纯自研节省约 45% 的成本。最终方案按期上线,且保留了后续替换底层引擎的接口。

场景二:消息中间件的“去留”评估

阶段:系统架构与工程效能

解决的问题:某金融科技团队在使用开源 RabbitMQ 时频繁遭遇性能瓶颈和运维事故,有人提议立刻自研消息中间件。团队用 TCO 模型和技术债务分析后发现:换引擎属于高利率技术债,拖得越久迁移成本越高,但纯自研的 5 年 TCO 是改造现有方案的 2 倍。最终决定继续采用开源方案,但自研了高可用路由层和监控告警系统——用混合策略化解了“全换”与“全忍”的两难。

具体案例:团队把 PoC 拆成三个验证项:吞吐量、故障恢复时间、运维上手成本。通过率 p 达到 100% 才进入正式评审,评审时用四维加权评分对比三个候选方案。落地后每季度复盘一次实际运维成本,发现比预估低 20%,验证了“通用开源托底、差异自研发力”决策的正确性。

Python 演示

python50 行
class SelectionCase:    def __init__(self, name, weights, scores, build_cost, annual_cost, years):        self.name = name        self.weights = weights        self.scores = scores        self.build_cost = build_cost        self.annual_cost = annual_cost        self.years = years     def score(self):        return sum(w * s for w, s in zip(self.weights, self.scores))     def tco(self):        return self.build_cost + self.annual_cost * self.years  def print_result(case):    print(case.name)    print("  加权得分:", case.score())    print("  全周期TCO:", case.tco())  def main():    weights = [0.25, 0.25, 0.2, 0.3]    open_case = SelectionCase(        "开源方案",        weights,        [4, 5, 3, 4],        build_cost=20,        annual_cost=30,        years=3    )    custom_case = SelectionCase(        "自研方案",        weights,        [2, 5, 4, 3],        build_cost=150,        annual_cost=10,        years=3    )    print_result(open_case)    print_result(custom_case)    if open_case.score() > custom_case.score():        print("结论: 开源方案综合评分更高")    else:        print("结论: 自研方案综合评分更高")  if __name__ == "__main__":    main()
目的:演示用加权评分和 TCO 两个视角量化开源与自研方案,帮助你在选型讨论中用数据代替直觉。
  1. def __init__(self, name, weights, scores, build_cost, annual_cost, years)初始化一个选型方案,保存名称、四维权重、四维得分、建设成本、年维护成本和评估周期
  2. def score(self):计算加权评分,是第 2 节评估维度框架的代码化
  3. return sum(w * s for w, s in zip(self.weights, self.scores))把权重与得分逐项相乘再累加,即加权求和公式
  4. def tco(self):计算全生命周期总成本,是第 3 节 TCO 模型的简化版
  5. return self.build_cost + self.annual_cost * self.years总成本 = 前期建设成本 + 年维护成本 × 年数
  6. if open_case.score() > custom_case.score():用评分大小决定选型倾向,体现“谁净收益大选谁”的判据
  7. if __name__ == "__main__":保证脚本被直接运行时才执行主流程,便于被其他模块导入复用

常见误区

误区开源软件不要钱,选它肯定省钱,还能省下整个开发的功夫。

正解开源的 “free“ 更多指”自由“而非”免费”。企业版授权、商业支持、合规审计、团队学习成本,最终都会变成账单。开源像样板间里的成品家具——标价可能是零,但搬运费、改尺寸、换面料都要钱。真要判断省不省钱,用 TCO 说话,而不是看下载按钮旁边有没有价格。

为何常见:“免费”是开源最直观的招牌,加上很多人分不清社区版和企业版的区别,容易把开源误当成永久免费的午餐。

误区代码是我们自己写的,想怎么改就怎么改,再也不会被开源项目“卡脖子”了。

正解自研同样依赖操作系统、第三方库和云厂商,同样面临人才流失和技术栈陈旧的风险。所谓“可控”是相对的:自研只是把外部的不确定性,转移到了内部团队的能力与稳定性上——就像定制家具虽然贴合户型,但木工师傅手艺不行或中途跑路,你一样焦头烂额。内部依赖往往比外部依赖更难替换。

为何常见:人们倾向于把“看得见的依赖”当风险,把“看不见的内部依赖”当安全。其实当你把所有组件都攥在自己手里时,你的团队就成了那个最大的单点。

误区两个方案拉个表,功能多的就是好的,直接选功能最全的那个准没错。

正解功能只是冰山的尖角。评估维度应包含成本、时间、团队能力、生态社区四个方向。功能缺失可以补,社区死掉、许可证踩雷、团队学不动才是致命的。加权评分公式的意义,就是逼你把每个维度都量化,而不是被最显眼的功能列表带偏。

为何常见:功能是唯一能在半天内收集完的数据,其他维度需要调研、需要实测、需要讨论,大脑天然会偷懒选择最容易比较的那个维度。

误区这个开源项目 star 数很高,社区很活跃,用了肯定稳,不用担心维护问题。

正解star 数和活跃度只能说明当下,不能担保未来。项目维护者离职、商业公司调整战略、社区方向分裂,都可能导致项目停滞。选型时要看许可证类型、贡献者结构、版本发布节奏,并提前准备“可替代方案”和脱离路径——好比家具买回家,也要想好万一这家店倒闭,配件去哪里配。

为何常见:star 数是公开且显眼的信号,容易替代对项目健康度的深层分析。人脑偏爱“一眼可见”的证据。

面试题

Q1. 开源软件中 "Open Source" 最核心的含义是什么?

单选题 · easy

  • A.完全免费,无需支付任何费用
  • B.源代码可获取,并允许在许可协议范围内自由使用与修改← 正确答案
  • C.无版权限制,任何人可随意商用
  • D.软件没有作者,不存在维护责任

答案:B。开源的核心是“源代码可得+许可范围内自由使用修改”,不是零成本。A 错在把 free 理解为免费,C 错在忽略许可证约束,D 错在开源项目同样有维护者。用家具比喻:开源是公开图纸,但改造要按图纸协议来。

Q2. 加权评分法 \(S = \sum w_i s_i\) 中,符号 \(w_i\) 表示什么?

单选题 · easy

  • A.第 i 个评估维度的权重← 正确答案
  • B.第 i 个评估维度的得分
  • C.参与评估的方案总数
  • D.项目总预算金额

答案:A。\(w_i\) 是权重,\(s_i\) 才是得分。权重代表业务优先级,好比装修时“预算是否比工期更重要”。B 搞混了符号,C 和 D 与公式无关。

Q3. 技术选型评估框架中,通常包含哪些核心维度?

多选题 · easy

  • A.成本投入与预算← 正确答案
  • B.时间周期与交付窗口← 正确答案
  • C.团队能力与人才储备← 正确答案
  • D.生态社区与风险合规← 正确答案

答案:ABCD。四维框架分别是成本、时间、团队能力、生态社区,缺一不可。就像装修要同时考虑预算、工期、木工手艺和小区的物业配套,只看任何一维都会选偏。

Q4. 关于 TCO 全生命周期成本,下列说法正确的是?

单选题 · mid

  • A.只包括软件的购买授权费用
  • B.只包括服务器和云资源费用
  • C.包括许可证、基础设施、人力与风险成本← 正确答案
  • D.只包括团队的人力成本

答案:C。TCO 由四部分构成:许可证与订阅费、基础设施费、人力维护费、风险与合规成本。A、B、D 都只看到局部——就像装修只算了地板钱,没算辅料、人工和返工费。

Q5. 技术债务“越拖越贵”的现象,与哪种计算原理最接近?

单选题 · mid

  • A.单利逐年等额增加
  • B.复利滚雪球式累积← 正确答案
  • C.机会成本平均分摊
  • D.沉没成本线性回收

答案:B。技术债务按复利累积:越晚重构,基础改动越大,牵连模块越多,偿还成本指数上升。用装修比喻:插座没留好,拖得越久,墙上的排插越多,最后砸墙重装的成本远高于最初改一次水电。

Q6. 以下哪些情形适合采用“开源+自研”混合策略?

多选题 · mid

  • A.通用基础设施采用成熟开源组件← 正确答案
  • B.核心差异化模块投入自研← 正确答案
  • C.全部组件一律自研以追求可控
  • D.对开源组件做有限定制改造← 正确答案

答案:ABD。混合策略的核心是“通用开源托底、差异自研发力”。C 错在全盘自研违背混搭精神,会让团队背上沉重的人力债。A、B、D 分别对应开源、自研、有限改造三种典型手法。

Q7. 开源方案在后期累计价值增速放缓的最典型原因是什么?

单选题 · mid

  • A.开源软件会逐渐停止迭代
  • B.受上游社区版本节奏制约,个性化适配成本递增← 正确答案
  • C.开源软件功能数量不断减少
  • D.自研团队的能力普遍更强

答案:B。开源项目的路线图由社区决定,你的个性化需求只能通过适配或 fork 实现,适配成本随版本升级不断累积,导致价值增速放缓。A、C 太绝对,D 无法成立——不是能力问题,而是契约关系不同。

Q8. PoC(概念验证)阶段应该重点收集哪些信号?

多选题 · mid

  • A.核心功能的覆盖率是否达标← 正确答案
  • B.性能指标是否满足非功能需求← 正确答案
  • C.社区版本升级是否带来兼容性问题← 正确答案
  • D.选型报告的文字是否足够华丽

答案:ABC。PoC 要验证功能、性能和兼容性,用数据支撑评审;D 是形式大于内容。就像装修的样板间,要看水电走线、墙体隔音、门窗开合,而不是看宣传册设计得多漂亮。

Q9. 在“累计价值—时间”曲线图中,两条曲线在 t≈0.76 处相交,这个交点的含义是什么?

单选题 · hard

  • A.两个方案在所有时间点价值完全相同
  • B.周期短于该点时开源更优,长于该点时自研更优← 正确答案
  • C.自研方案在任何周期下都更优
  • D.开源方案在任何周期下都更优

答案:B。交点就是决策拐点:开源前期价值增长快,自研后期反超。短周期项目选开源能快速见效,长周期项目自研的累计回报更高。A 忽略了相交只是“这一刻相等”,C、D 都只看到曲线一侧。

Q10. 某团队对比两种方案:开源方案无前期投入、年维护成本 30 万;自研方案前期投入 150 万、年维护成本 10 万。若项目生命周期 5 年,忽略折现,哪种说法正确?

单选题 · extreme

  • A.开源方案总成本更低← 正确答案
  • B.自研方案总成本更低
  • C.两方案总成本恰好相等
  • D.没有足够信息判断总成本

答案:A。开源 5 年总成本 = 30×5 = 150 万;自研 = 150 + 10×5 = 200 万,所以开源更低。用装修比喻:买成品家具 5 年内的总花费更低,但若把周期拉长到 10 年,自研(250 万)会反超开源(300 万)——这正是两条曲线在拐点后交叉的直觉来源。