2026-01-11 14:32:31

本文永久链接 – https://tonybai.com/2026/01/11/21-lessons-from-google-engineer-1
大家好,我是Tony Bai。
“当我 14 年前加入 Google 时,我以为这份工作就是写出优秀的代码……我只说对了一部分。我待得越久,就越意识到,那些真正茁壮成长的工程师,不一定是最好的程序员——他们是那些懂得如何驾驭代码周围一切的人:人、政治、协同和模糊性。”
这段话,出自 Google 资深工程师 Addy Osmani 的一篇深刻反思——《在 Google 14 年的 21 条经验》。这篇文章,如同淬炼了 14 年的智慧结晶,几乎没有谈论任何具体的技术栈,却精准地描绘出了一位卓越工程师的成长画像。
这 21 条“法则”,并非关于某种转瞬即逝的技术,而是关于那些在项目、团队、公司之间反复出现的永恒模式。它们不是一场与外部世界的战争,而是一场关于自我提升的漫长“修炼”。这是一份珍贵的“心法”,能帮助我们在这场修炼之路上,走得更远、更稳。本文将为你逐一解读。

这是工程师“修炼”之路的第一心法:放下执念。
放下对特定技术的迷恋,将自我从“工具的使用者”升华为“问题的解决者”。
“用户痴迷”意味着走出 IDE,去阅读支持工单,去和真实用户交谈,去观察他们如何在你的产品中挣扎。
当你真正理解了用户的“痛”,你往往会发现,那个最优雅的解决方案,远比你最初设想的任何复杂技术都要简单。
你可以在每一次技术辩论中都“赢”,但最终输掉整个项目。
真正的“修为”,不在于证明自己正确,而在于创造一个安全的空间,让团队能够共同对问题达成一致,并对自己的确定性保持怀疑。
记住:“观点强硬,但立场松动 (Strong opinions, weakly held)。”
对完美的追求是麻痹剂,是“心魔”。
完美的架构不会在纯粹的冥想中诞生,它诞生于与现实的接触。
先做出来,再做对,再做得更好。
交付那个让你感到“有点尴尬”的 MVP。
一个粗糙的原型所能带来的真实反馈,远超一个月闭门造车的理论辩论。
编写“聪明”的代码,是工程师证明能力的本能。
但真正的软件工程,是在时间和团队协作的维度上展开的。
清晰性不是一种风格偏好,而是一种运营风险的降低。
你的代码,是一份写给未来某个凌晨三点需要维护它的陌生人的“战略备忘录”。
资深的工程师,早已学会在他们的“修炼”中,用清晰性去交换那份无关紧要的“聪明”。
像一个预算有限的组织一样,谨慎地对待你的“创新代币”。
只在你拥有独特优势的地方进行创新,其他所有事情,都应该默认选择“无聊”的技术,因为“无聊”意味着失败模式是已知的。
记住,“最好的工具”,常常是那个“在最多场景下最不坏的工具”。
以为“好的工作会自己说话”,是工程师“修炼”生涯早期最大的错觉。
代码静静地躺在仓库里,它不会在晋升会议上为你辩护。
你需要将你的工作和价值,以一种可被他人理解和传播的方式呈现出来:写清晰的文档、做有影响力的分享、主动沟通你的成果。
工程文化崇尚创造,但删除代码往往比增加代码更能改善一个系统。
你没有写下的每一行代码,都是你永远不必去调试、维护或解释的一行代码。
在动手构建之前,请先用“无为”的智慧拷问自己:“如果我们就是……不这么做,会发生什么?”
当用户足够多时,你的系统的每一个可观测行为,无论你是否承诺过,都会成为一种事实上的依赖。
有人正在爬取你的 API,有人正在自动化你的“怪癖”,有人正在缓存你的 Bug。
这意味着,兼容性本身就是一种产品。你不能再将修复 Bug 视为“维护”,将开发新功能视为“真正的工作”。
当项目拖延时,我们的本能是归咎于执行力:人手不够、技术不行、工作不努力。
但真正的瓶颈,往往在于协同失败 (Alignment Failure)——团队在做错误的事情,或者以不兼容的方式在做正确的事情。
资深工程师会花费更多时间去澄清方向、接口和优先级,而不是单纯地“更快地写代码”。
在大型组织中,组织架构调整、管理层决策、市场变化……无数变量都在你的控制范围之外。
为这些事情焦虑,是在浪费你宝贵的精力。
卓越的工程师,会战略性地专注于他们的“影响圈”:你能控制你代码的质量,你能控制你如何响应变化,你能控制你学到了什么。
这是一种专注的“禅定”。
每一个抽象,都是一次“我未来不需要理解其底层”的赌博。
有时你会赌赢,但抽象总会泄露。
资深工程师之所以坚持学习底层知识,并非出于怀旧,而是出于对“凌晨三点,当你独自面对一个失效的抽象时”的敬畏。
当你试图向他人解释一个概念时——无论是在文档中、演讲中,还是 Code Review 的评论里——你会立刻发现自己理解上的盲点。
把一个东西教给别人,本质上是在调试你自己的心智模型。
这是最高效的“利己”的学习法门。
“胶水工作”——文档、新人引导、跨团队协调、流程改进——至关重要。
但如果你无意识地、仅仅出于“乐于助人”去做这些事,它们会吞噬你的时间,让你偏离技术主航道。
诀窍在于,有意识地去做,为它设定时间盒,将它转化为文档、模板、自动化等可见的成果,让它成为你明确的影响力,而非模糊的“性格特质”。
当你“赢”得太轻松时,通常意味着事情不对劲了。
人们不再与你争论,不是因为你彻底说服了他们,而是因为他们已经放弃了尝试。
而这份未解的分歧,将会在未来的执行层面,以“神秘的阻力”的形式爆发出来。
真正的协同,需要你真正去理解他人,并有时公开地改变自己的想法。
古德哈特定律的经典再现。
人类会为了被测量的东西而优化。
资深的做法是,用一组成对的指标来响应管理需求(例如,速度 vs. 质量),并坚持解读趋势,而非崇拜某个具体的阈值。
当一个领导者或资深工程师坦诚自己的不确定性时,他实际上是在给予整个团队“提问”和“犯错”的许可。
这会创造一种心理安全的环境,让问题在爆炸前被暴露出来。
反之,一个“永远正确”的领导者,只会培养出一群沉默的下属和一堆隐藏的地雷。
职业生涯早期,我们容易专注于工作本身而忽略人际交往。
这是一个巨大的错误。
那些在公司内外投资于人际关系的同事,在数十年后,会收获巨大的回报。
你的工作不是永恒的,但你建立的信任是。
当系统变慢时,我们的本能是增加缓存、并行处理、或者换用更聪明的算法。
但更具影响力的胜利,往往来自于问一个更根本的问题:“我们正在计算的这些东西,真的有必要吗?”
删除不必要的工作,远比把必要的工作做得更快要有效得多。
最快的代码,是那段从未运行过的代码。
最好的流程,能让协作更容易,让失败的代价更便宜。
而最坏的流程,是“官僚主义戏剧”——它的存在不是为了帮助,而是在出问题时用来甩锅。
如果你无法解释一个流程如何降低风险或增加清晰度,那它很可能就是纯粹的开销。
职业生涯早期,你用时间换金钱。
但在某个临界点之后,这个公式会反转。
时间是唯一不可再生的资源。
答案不是“不要努力工作”,而是“清楚你在交易什么,并深思熟虑地做出交易。”
专业知识,来自于经年累月的刻意练习。
但这里有希望的部分:学习是具有复利效应的。
你建立的每一个心智模型,你总结的每一条经验教训,都会成为你未来解决更复杂问题的“可复用原语”。
将你的职业生涯视为复利投资,而非一张张彩票。
Addy Osmani 的 21 条经验,最终可以归结为几个核心思想:保持好奇,保持谦逊,并永远记住,修炼的核心是人——你为之构建的用户,以及与你一同构建的队友。
对于我们工程师而言,这意味着,职业生涯的成长,是一场双螺旋式的攀升。
技术能力的“硬实力”是我们的根基,但决定我们最终能达到何种“境界”的,往往是沟通、协作、权衡、同理心这些看似“软”的、关于人的智慧。
这场“代码之外的修炼”,道阻且长,但行则将至。
资料链接:https://addyo.substack.com/p/21-lessons-from-14-years-at-google
你的“第22条”法则
读完这21条法则,相信你一定心有戚戚焉。在你自己的职业生涯中,是否有哪一条“生存法则”是你用惨痛教训换来的?或者,你觉得还有什么重要的经验是这21条没有覆盖到的?
欢迎在评论区分享你的独家心法! 让我们一起汇聚更多智慧。
如果这篇文章给了你新的启发,别忘了点个【赞】和【在看】,并转发给身边正在迷茫的工程师朋友,也许这就是他破局的关键!
还在为“复制粘贴喂AI”而烦恼?我的新专栏 《AI原生开发工作流实战》 将带你:
扫描下方二维码,开启你的AI原生开发之旅。

你的Go技能,是否也卡在了“熟练”到“精通”的瓶颈期?
继《Go语言第一课》后,我的《Go语言进阶课》终于在极客时间与大家见面了!
我的全新极客时间专栏 《Tony Bai·Go语言进阶课》就是为这样的你量身打造!30+讲硬核内容,带你夯实语法认知,提升设计思维,锻造工程实践能力,更有实战项目串讲。
目标只有一个:助你完成从“Go熟练工”到“Go专家”的蜕变! 现在就加入,让你的Go技能再上一个新台阶!

商务合作方式:撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求,请扫描下方公众号二维码,与我私信联系。

© 2026, bigwhite. 版权所有.
2026-01-11 07:31:45

本文永久链接 – https://tonybai.com/2026/01/11/proposal-float-to-int-conversions-should-saturate-on-overflow
大家好,我是Tony Bai。
你是否知道,同一行简单的代码 int64(myFloat),在 Intel (amd64) 机器上可能返回一个巨大的负数,而在 ARM64 机器上却可能返回最大正整数?
在 Go 语言中,浮点数到整数的转换溢出行为长期以来一直属于“实现定义”(implementation-dependent) 的灰色地带。这意味着,代码的运行结果竟然取决于你底层的 CPU 架构。这种不确定性,一直是跨平台开发中一个难以察觉的隐形地雷。
2025年末,Go 编译器团队核心成员 David Chase 提交了一份提案(#76264),旨在彻底终结这种混乱。该提案计划在未来的 Go 版本中,强制规定所有平台上的浮点转整数必须是“饱和”的 (saturating),从而实现真正的全平台行为一致。

在现有的 Go 规范下,如果你尝试将一个超出目标整数范围的浮点数(例如 1e100)转换为 int64,结果是未定义的。
让我们看看这有多疯狂。假设我们有以下代码:
var f float64 = 1e100 // 一个巨大的数
var i int64 = int64(f)
fmt.Println(i)
这段代码在不同架构下的运行结果截然不同:
更糟糕的是 NaN (Not a Number) 的转换:
var j int64 = int64(math.NaN())
fmt.Println(j)
这种不一致性不仅仅是理论问题,它已经导致了准标准库 x/time/rate 中的真实 Bug (#71154)。当你的代码逻辑依赖于转换结果的正负号来做判断时(例如 if i > 0),这种硬件差异就是致命的。
David Chase 的提案非常直接:统一行为,拥抱饱和。
所谓“饱和转换”,是指当浮点数超出目标整数的表示范围时,结果应该被“钳制”在目标类型的最大值或最小值,而不是发生回绕(wraparound)或产生随机值。
具体规则如下:
这一改变将使得 Go 代码在任何 CPU 架构上都表现出完全一致的逻辑,彻底消除了这类可移植性隐患。
为什么 Go 以前不这么做?核心原因在于性能成本。
在 ARM64 和 RISC-V 等现代架构上,硬件指令集(如 FCVT)原生支持饱和转换,因此这样做几乎没有额外开销。
然而,AMD64 (x86-64) 是个“异类”。它的 CVTTSD2SQ 指令在溢出时不仅返回一个特殊的“不定值”(通常是 MinInt),还会触发浮点异常。为了在 AMD64 上模拟出“饱和”行为,编译器必须插入额外的检查代码:
// 模拟代码逻辑:AMD64 上的额外开销
result = int64(x)
if result == MIN_INT64 { // 可能溢出了
if x > 0 {
result = MAX_INT64 // 正溢出修正
} else if !(x < 0) {
result = 0 // NaN 修正
}
}
Go 核心团队成员 Ian Lance Taylor 在评论中指出,我们必须权衡:为了消除这种不一致性,值得让 AMD64 上的转换操作变慢吗?
提案作者 David Chase 的回应是:值得。 与 FMA (融合乘加) 指令带来的微小精度差异不同,浮点转整数的差异往往是正负号级别的(MaxInt vs MinInt),这直接决定了代码逻辑的走向(循环是否执行、条件是否满足)。这种差异带来的 Bug 极其隐蔽且难以调试,其代价远超那几条指令的性能损耗。
为了避免生态系统的剧烈震荡,提案建议采用分阶段的落地策略:
注:Go 1.26当前已经功能冻结,该提案依然处于Go语言规范变更审查委员会的讨论状态中,因此即便逻辑,其实际落地时间表也会顺延。
Dr Chase的这个提案不仅是对一个技术细节的修正,更是 Go 语言设计哲学的一次体现:在工程实践中,可预测性和可移植性往往优于特定平台上的极致微优化。
如果该提案通过,未来的 Gopher 们将不再需要担心底层的 CPU 是 Intel 还是 ARM,int64(NaN) 永远是 0,int64(Inf) 永远是 MaxInt64。这,才是我们想要的“Write Once, Run Anywhere”。
注:目前Dr Chase也在努力弥合amd64下的性能差距。
资料链接:https://github.com/golang/go/issues/76264
你的跨平台“血泪史”
跨平台开发中的“未定义行为”往往是最难调试的 Bug。在你的开发生涯中,是否也遇到过因为 CPU 架构或操作系统差异而导致的诡异问题?你支持为了“一致性”而牺牲一点点 AMD64 上的性能吗?
欢迎在评论区分享你的踩坑经历或对提案的看法! 让我们一起见证 Go 语言的进化。
如果这篇文章让你对底层原理有了新的认识,别忘了点个【赞】和【在看】,并转发给你的硬核伙伴!
还在为“复制粘贴喂AI”而烦恼?我的新专栏 《AI原生开发工作流实战》 将带你:
扫描下方二维码,开启你的AI原生开发之旅。

你的Go技能,是否也卡在了“熟练”到“精通”的瓶颈期?
继《Go语言第一课》后,我的《Go语言进阶课》终于在极客时间与大家见面了!
我的全新极客时间专栏 《Tony Bai·Go语言进阶课》就是为这样的你量身打造!30+讲硬核内容,带你夯实语法认知,提升设计思维,锻造工程实践能力,更有实战项目串讲。
目标只有一个:助你完成从“Go熟练工”到“Go专家”的蜕变! 现在就加入,让你的Go技能再上一个新台阶!

商务合作方式:撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求,请扫描下方公众号二维码,与我私信联系。

© 2026, bigwhite. 版权所有.
2026-01-10 08:19:34

本文永久链接 – https://tonybai.com/2026/01/10/go-dropped-from-7th-to-16th-in-one-year
大家好,我是Tony Bai。
新年伊始,TIOBE 发布了最新的编程语言排行榜。当我满怀期待地去寻找 Go 的身影时,差点以为自己眼花了:
Go 居然从去年的第 7 名,断崖式下跌到了第 16 名! 占比跌幅高达 1.37%,在这个榜单上几乎是“崩盘”级别的表现。

这是什么概念?这意味着在 TIOBE 的统计里,Go 现在的流行度还不如 Delphi/Object Pascal(第 9 名)和 Visual Basic(第 7 名)。
这就很离谱了。任何一个在 2025 年还在写代码的人,都不会觉得 Go 的生态已经萎缩到这种地步。
是 Go真的凉了吗?还是 TIOBE 的算法“疯”了?

为了验证我的认知是否出现了偏差,我特意查阅了 2025 年其他的权威榜单:
全世界都觉得 Go 挺好,唯独 TIOBE 觉得 Go 要完。这种巨大的反差,逼得我不得不去扒一扒 TIOBE 的底裤——它的排名算法到底是怎么算的?
根据 TIOBE 官方公布的定义文档,它的算法极其简单粗暴,甚至可以说——在 2026 年显得有些可笑。
它的核心逻辑只有一个公式:
在 25 个主流搜索引擎中,搜索 +”
就是这么简单。没有什么复杂的加权,没有什么开发者活跃度分析,就是数一数搜索引擎告诉你“有多少个网页提到了这个语言”。
这种算法在 20 年前或许有效,但在今天,它成为了导致 Go 排名暴跌的元凶。
2025 年最大的变化是什么?是 AI Search。
当我们遇到编程问题时,越来越多的人不再去 Google 翻阅那几百万个搜索结果页面,而是直接问 ChatGPT、Claude 或者 DeepSeek。
TIOBE 明确表示:ChatGPT 等 AI 工具不被纳入统计,因为它们没有“返回结果数量”的计数器。
这就导致了一个悖论:越是热门、现代的语言(如 Go、Python(得益于AI模型训练与应用开发)),其用户群体越年轻、越拥抱新技术,也就越倾向于用 AI 解决问题。 这直接导致了这些语言在传统搜索引擎中的“查询热度”和“新内容生成量”出现显著下降。
相比之下,那些老旧的语言(如 VB、Delphi),其用户群体相对固化,且维护遗留系统时更多依赖传统的文档和论坛搜索,因此受到的冲击较小,甚至在对比中显得“逆势上扬”。
注:Python的占比相对于2025.01也下降了0.68%。
TIOBE 的核心搜索查询是 +”
这对于 Python、Java 这种专有名词来说问题不大。但对于 Go 来说,这就是个灾难。
Google 等搜索引擎在 2025 年大幅调整了算法,致力于打击 SEO 内容农场和低质量生成的页面。
Go 作为一个在云原生时代极速窜红的语言,过去几年充斥着大量的入门教程、培训班广告和搬运文章。搜索引擎的这一波“清洗”,可能不成比例地删除了大量包含 “Go programming” 关键词的低质、重复页面。
虽然页面总量少了,但生态的“干货密度”其实更高了。 然而,在 TIOBE 这种只看“数量”不看“质量”的算法眼里,这就被简单粗暴地解读为“热度暴跌”。而那些生态早已固化、鲜有新内容产生的老语言,反而躲过了这一劫。
注:以上也是笔者的主观分析,不一定与事实相符!
把 Go 排在 Visual Basic 后面,这本身就是一个笑话。
TIOBE 的这次排名暴跌,反映的不是 Go 语言的衰落,而是 TIOBE 这种基于“网页搜索量”的统计方法,在 AI 和现代互联网面前的全面崩塌。
它就像一个依然在用“收音机收听率”来衡量流行音乐热度的老人,已经无法捕捉流媒体时代的脉搏。
所以,各位 Gopher,该写代码写代码,该摸鱼摸鱼。Go 好着呢,别被这个离谱的排名吓到了。
你的“体感”排名
TIOBE 的数据确实让人啼笑皆非。在你心目中,Go 语言现在的真实热度应该排第几?你觉得还有哪个榜单能更客观地反映编程语言的现状?
欢迎在评论区晒出你的“心选榜单”,或者尽情吐槽这个离谱的排名!
如果这篇文章解开了你心中的疑惑,别忘了点个【赞】和【在看】,并转发给那些正在唱衰 Go 的朋友,打脸要快!
还在为“复制粘贴喂AI”而烦恼?我的新专栏 《AI原生开发工作流实战》 将带你:
扫描下方二维码,开启你的AI原生开发之旅。

你的Go技能,是否也卡在了“熟练”到“精通”的瓶颈期?
继《Go语言第一课》后,我的《Go语言进阶课》终于在极客时间与大家见面了!
我的全新极客时间专栏 《Tony Bai·Go语言进阶课》就是为这样的你量身打造!30+讲硬核内容,带你夯实语法认知,提升设计思维,锻造工程实践能力,更有实战项目串讲。
目标只有一个:助你完成从“Go熟练工”到“Go专家”的蜕变! 现在就加入,让你的Go技能再上一个新台阶!

商务合作方式:撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求,请扫描下方公众号二维码,与我私信联系。

© 2026, bigwhite. 版权所有.
2026-01-09 06:52:22

本文永久链接 – https://tonybai.com/2026/01/09/the-most-popular-go-dependency-is
大家好,我是Tony Bai。
在 Go 的世界里,我们每天都在引入各种 import。但你是否想过,整个 Go 生态系统中,究竟哪个包是被依赖次数最多的“基石”?
通常,我们会参考 GitHub Stars 或 Awesome 列表,但这往往带有主观偏差。为了寻找最客观的答案,开发者 Thibaut Rousseau 做了一件疯狂的事:他下载了 Go Proxy 自 2019 年以来的所有模块元数据,构建了一个包含 4000 万个节点、4 亿条关系的巨大图谱。
结果令人大开眼界。

Thibaut 最初的想法很直接:从一个种子项目列表开始,递归地克隆仓库、解析 go.mod。但他很快发现这条路行不通——克隆速度太慢,且严重依赖 GitHub。
于是,他将目光转向了 Go Modules 生态系统的核心枢纽 —— Go Proxy。
通过这两个公开 API,他成功地将整个 Go 生态的元数据“搬”到了本地,构建了一个全量的、不可变的本地缓存。
面对海量的依赖关系,传统的关系型数据库显得力不从心。Thibaut 选择了图数据库 Neo4j。
通过简单的 Cypher 查询语句,复杂的依赖链变得清晰可见。例如,查询一个模块的所有传递性依赖(Transitive Dependencies),在 SQL 中可能需要复杂的递归 CTE,而在 Neo4j 中只需一个简单的 *1.. 语法即可搞定。
经过数天的处理和导入,这个庞大的图谱终于呈现在眼前。让我们看看数据告诉了我们什么:
在“被直接依赖次数”的榜单上,github.com/stretchr/testify 以 259,237 次的惊人数量遥遥领先,是第二名的两倍还多。这再次印证了测试在 Go 社区中的核心地位。
紧随其后的是:

最令人玩味的数据来自 github.com/pkg/errors。尽管这个库多年前就已宣布“归档”(Archived)并停止维护,且 Go 1.13 已内置了类似的错误包装功能,但数据却显示了截然相反的趋势:
这揭示了软件生态中一个残酷的现实:旧习惯难改,且“足够好”的库拥有极其顽强的生命力。 哪怕官方已经提供了替代方案,开发者们依然倾向于使用他们熟悉的工具。
Thibaut 的这个项目不仅仅是一次有趣的数据分析,它为我们观察 Go 生态提供了一个全新的上帝视角。
你可以下载这份数据,自己在本地运行 Neo4j,去挖掘更多有趣的洞见。比如,看看你最喜欢的某个小众库,究竟被谁在使用?或者,去探索一下 Go 生态中那些隐秘的“单点故障”?
在这个由 4000 万个节点构成的宇宙中,还有无数的秘密等待被发现。
资料链接:https://blog.thibaut-rousseau.com/blog/the-most-popular-go-dependency-is/
你的依赖清单
testify 的霸榜并不意外,但 pkg/errors 的顽强生命力确实让人深思。在你的 go.mod 中,是否也有那些“虽然已归档,但真的很好用”的库?或者,你有什么私藏的冷门好库推荐?
欢迎在评论区晒出你的“宝藏依赖”! 让我们一起发现更多 Go 生态的秘密。
如果这篇文章让你对 Go 生态有了全新的认识,别忘了点个【赞】和【在看】,并转发给你的 Gopher 朋友!
还在为“复制粘贴喂AI”而烦恼?我的新专栏 《AI原生开发工作流实战》 将带你:
扫描下方二维码,开启你的AI原生开发之旅。

你的Go技能,是否也卡在了“熟练”到“精通”的瓶颈期?
继《Go语言第一课》后,我的《Go语言进阶课》终于在极客时间与大家见面了!
我的全新极客时间专栏 《Tony Bai·Go语言进阶课》就是为这样的你量身打造!30+讲硬核内容,带你夯实语法认知,提升设计思维,锻造工程实践能力,更有实战项目串讲。
目标只有一个:助你完成从“Go熟练工”到“Go专家”的蜕变! 现在就加入,让你的Go技能再上一个新台阶!

商务合作方式:撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求,请扫描下方公众号二维码,与我私信联系。

© 2026, bigwhite. 版权所有.
2026-01-08 12:00:21

本文永久链接 – https://tonybai.com/2026/01/08/databases-in-2025-a-year-in-review
大家好,我是Tony Bai。
数据库领域的“毒舌”,CMU教授 Andy Pavlo 再次发布了他的年度回顾(虽然这次是站在 2026 年初的回望)。2025 年对于数据基础设施是疯狂的一年:PostgreSQL 继续确立其霸主地位,引发了巨头间的收购狂潮;AI Agent 通过 MCP 协议正式接管数据库交互;而 Go 社区熟知的 FerretDB 则陷入了与 MongoDB 的法律泥潭。本文将为你深度梳理这份报告背后的技术趋势与行业信号。

如果说 2021 年 Andy Pavlo 首次提出“PostgreSQL 正在吞噬数据库世界”,那么 2025 年则是这一预言的终极验证。PostgreSQL 不再仅仅是一个选项,它已经成为了行业标准,引发了云巨头之间近乎疯狂的并购与研发竞赛。
对于后端和 Go 开发者而言,这意味着 PostgreSQL 协议已成为事实上的“通用语”。无论底层是 Aurora、AlloyDB 还是 Neon,应用层都只需通过标准的 pgx 或 lib/pq 驱动进行连接。掌握 Postgres 的深层特性和优化技巧,将成为未来五年内最具价值的技能之一。
2025 年被定义为所有 DBMS 都支持 MCP (Model Context Protocol) 的一年。
MCP 是由 Anthropic 提出,并随后被 OpenAI 采纳的一种标准化客户端-服务器 JSON-RPC 接口。它允许大语言模型(LLM)与外部工具和数据源进行交互,而无需编写定制的胶水代码。
Andy Pavlo 指出,除了官方实现外,还有数百个第三方的 MCP Server 实现。这对于 Go 开发者是一个巨大的机会:编写高性能、并发安全的 MCP 中间件是 Go 的拿手好戏。
然而,这也带来了安全隐患。Pavlo 警告说,简单的代理只是将 MCP 请求翻译成 SQL,如果没有深度的内省和防护机制,AI Agent 可能会像“在应用里点了 18,000 杯水”一样,意外地摧毁数据库(比如 DROP DATABASE)。企业级 DBMS 开始内置 AI 防火墙,而开源生态则需要更多像 DBHub 这样提供查询限制和超时保护的中间件。
这是 Go 社区最需要关注的法律纠纷。FerretDB 是一个用 Go 编写的开源项目,它提供了一个 MongoDB 兼容的代理层,后端使用 PostgreSQL 存储数据。这让用户可以用 Mongo 的驱动操作 Postgres。
这一案件可能会成为 API 兼容性实现的法律判例。对于那些致力于编写“兼容层”或“协议转换器”的 Go 开发者来说,这是一个危险的信号:模仿专有软件的 API 和线协议,可能会面临越来越大的法律风险。
在数据工程领域,Parquet 格式已经统治了近 15 年。但在 2025 年,为了适应现代硬件(NVMe SSD, GPU)和 AI 负载,新的挑战者涌现。
Andy Pavlo 的这篇回顾虽然笔调幽默甚至带有讽刺,但其揭示的技术趋势却是严肃的:
对于 Gopher 来说,关注 PostgreSQL 的协议生态、学习构建安全的 MCP 服务、并警惕开源协议的法律边界,将是 2025 年(及以后)的重要课题。
资料链接 – Databases in 2025: A Year in Review by Andy Pavlo
你的数据库“军火库”
数据库的世界正在发生剧变。在你的项目中,PostgreSQL 是否已经成为了默认选择?你如何看待 AI Agent 直接操作数据库的未来?
欢迎在评论区分享你的选型思考或对 FerretDB 事件的看法!让我们一起看清趋势,少走弯路。
如果这篇文章为你打开了数据库领域的新视野,别忘了点个【赞】和【在看】,并转发给你的架构师朋友!
还在为“复制粘贴喂AI”而烦恼?我的新专栏 《AI原生开发工作流实战》 将带你:
扫描下方二维码,开启你的AI原生开发之旅。

你的Go技能,是否也卡在了“熟练”到“精通”的瓶颈期?
继《Go语言第一课》后,我的《Go语言进阶课》终于在极客时间与大家见面了!
我的全新极客时间专栏 《Tony Bai·Go语言进阶课》就是为这样的你量身打造!30+讲硬核内容,带你夯实语法认知,提升设计思维,锻造工程实践能力,更有实战项目串讲。
目标只有一个:助你完成从“Go熟练工”到“Go专家”的蜕变! 现在就加入,让你的Go技能再上一个新台阶!

商务合作方式:撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求,请扫描下方公众号二维码,与我私信联系。

© 2026, bigwhite. 版权所有.