Google十年磨一剑,终将程序员偏爱的IDE逐一超越!
2026-08-28 23:09:29未知 作者:徽声在线
2011年,Java集合框架与《Effective Java》的作者Joshua Bloch曾抛出过一句引人深思的话。这句话在程序员圈子里广为流传,其真实性不容置疑。
只要你与程序员打过交道,就会深知这句话的分量:
不同IDE的选择,实则映射出程序员们迥异的文化背景。
因此,当这种偏好在Google这样拥有庞大工程师队伍的公司中蔓延时,一个棘手的问题便浮现出来:
若每个人都固执地使用自己钟爱的工具,公司的整体开发效率将何去何从?
01碎片化IDE的困境
从个体视角出发,程序员A偏爱vim,程序员B则钟情于IntelliJ,代码提交并无障碍。然而,在Google这样的超级工程组织中,情况远非如此简单。
因为,众多基础设施能力的实现,均需适配各式各样的IDE。
以Google内部广泛使用的Bazel为例,这是Google开源的一款大规模构建系统。
你的代码中可能包含一个BUILD.bazel文件,而普通IDE对此却一无所知。
├── BUILD.bazel这个BUILD.bazel文件,定义了代码的构建方式及依赖的模块。
问题随之而来:
IntelliJ若要支持它,需开发相应插件;
VS Code亦需如此;
Eclipse同样不能例外;
甚至Vim用户也渴望获得相关能力。
当公司汇聚数万名工程师,且同时存在七八种IDE时,每新增一个内部工具,都意味着要维护一整套插件生态,其背后的成本之高昂,令人咋舌。
然而,Google碎片化的IDE却得以存续多年,这很大程度上得益于Google独特的文化——20%时间政策。
工程师们可以拿出20%的工作时间,投身于自己感兴趣的项目。
许多内部工具,便是在这样的背景下应运而生。
比如,有人觉得IntelliJ对Bazel的支持不尽如人意,便利用业余时间进行改进。
若这一改进得到更多工程师的青睐,其他人便会继续贡献代码,逐渐形成一个内部项目,最终甚至可能演化为一个正式团队。
Google早期使用Eclipse时也遭遇过类似挑战。Eclipse原本是为“众多小项目+jar包依赖”设计的,而Google面对的却是截然不同的场景:一个庞大的源码仓库,大量源码之间直接依赖,还有复杂的自动构建系统。
结果,Eclipse频繁出现崩溃现象。
于是,有人利用20%时间开发了一个名为MagicJar的项目,将Java项目的依赖项构建成可直接导入的jar包,无需解析整个代码树。
这些看似微不足道的改进,最终推动了Google工具链的不断演进。
02霸主初露锋芒
2013年左右,Google内部悄然兴起了一个名为Cider的项目。
它起初并不起眼,只是一个运行在浏览器中的编辑器。
但它却契合了Google长期以来的理念:尽可能将计算能力迁移至云端。
只需打开网页,无需繁琐配置,无需安装庞大的开发环境,即可开始工作。
同时,由于Google采用自己的代码管理系统,开发者修改文件后,可直接创建代码变更,经审核后提交至主代码库。
对于一些简单的文档修改、配置调整,这种体验极为高效,因此Cider在初期深受撰写文档的人员喜爱。
渐渐地,Cider开始融入面向程序员的功能,如通过Language Server Protocol(LSP)提供代码补全、跳转等。
后来,大家发现Cider的真正魅力,并非在于浏览器中的编辑器界面,那仅是一层外壳,真正的魔力蕴藏在后台。
在你打开Cider开始编写代码之前,后台已提前分析并索引了整个代码库。
对于每一个符号(symbol),系统均了如指掌:
其类型为何;
它在哪里定义;
谁调用了它;
它依赖哪些代码。
要知道,Google采用的是单一代码库(monorepo)模式,大量产品和基础设施代码共享同一个巨型代码仓库,规模高达几十亿行。
(参见相关文章《》)
当后台将这些代码解析、索引,并构建成一个庞大的语义代码图谱时,开发体验将发生质的飞跃。
假设你在Google负责维护一个底层基础设施库:日志系统(Logging Library)。
现在,你打算将:logger.LogWarning(string msg) 更改为 logger.LogWarn(string msg)
若是在普通本地IDE中,它只能分析你下载到电脑里的项目代码,帮你修改当前工程里的调用。
但问题在于:Gmail后端是否调用了它?YouTube视频服务是否依赖它?Google Maps是否使用了它?广告计费系统是否采用了它?
这些代码可能归属于完全不同的团队,甚至根本不在你的电脑里,你不可能将整个公司的代码库全部下载下来。
而在Cider这类云端IDE中,情况则截然不同。
当你在LogWarning方法上点击“Find All References”(查找所有引用)时,IDE背后的代码智能系统已提前建立好了整个代码库的索引。
分布在不同产品、不同团队里的调用关系,将被迅速呈现出来。
你看到的将不再是一个项目里的代码,而是一张覆盖整个公司的软件依赖网络。
这便是超大规模代码库时代IDE的核心能力:开发者面对的是几十亿行代码,但体验却如同在维护一个几万行的小项目。
03VS Code的加入
然而,Cider也遭遇了一个现实难题。
它的后台功能强大,但前端编辑体验却不及IntelliJ、VS Code等成熟IDE。
原因显而易见:自行打造一个IDE前端,难度实在太大。
光标移动、文本渲染、快捷键、多窗口、语法高亮、括号匹配……这些看似微不足道的功能,背后均蕴含着巨大的工程量。
更棘手的是,全公司任何团队(如Android团队、Flutter团队、AI团队)若想在Cider中添加特定工具,都必须排队等待Cider团队协助编写。Cider团队成为了全公司工具链的瓶颈。
为何不直接采用VS Code作为前端呢?
让Cider转型为平台,各业务线团队可自行编写VSCode插件并在内部分发,Cider团队只需维护底座即可。
这便是Cider V项目的由来。
当然,Google不能直接使用原版VS Code。
它需进行深度改造,以支持内部版本控制系统Piper,整合代码评审系统Critique,连接Cider后端,实现代码补全和智能重构,建立内部插件市场,并解决安全、权限和分发等问题。
此外,开发者对日常使用的IDE拥有极强的习惯依赖(肌肉记忆)。例如:
某个快捷键从Ctrl+Shift+P变为了Ctrl+P;
代码高亮的某个颜色稍变浅;
快捷跳转需多点击一次鼠标;
这些在普通人看来微不足道的改变,在工程师群体中却可能引发轩然大波。
这也是为何Cider V前端即便拥有十几名工程师,仍需花费数月时间去磨平与老Cider的微小体验差异。
04迈向统一的新篇章
在许多大厂,推动工具统一往往依赖自上而下的行政命令,但这往往容易招致工程师的抵触。
然而,Cider V却独树一帜。它并未被强制要求使用,但到了2023年,其占有率却已高达80%!且这一比例仍在持续增长。
对于一家拥有十几万工程师、几十亿行代码的公司而言,这无疑是一件令人惊叹的壮举。
我想,原因只有一个:Cider V让程序员们用起来确实倍感畅快。
统一并非目的,并非要消灭Vim、IntelliJ等个人选择。真正重要的是,让每个工程师都能更快地理解代码、更安全地修改代码、更高效地协作。
AI时代已悄然来临,Cider V这种云端架构,无疑更适合AI开发,其前途可谓不可限量。
许多朋友一直对美国身份充满向往,但投资移民费用高昂,人才类移民门槛又极高,普通家庭似乎难以企及。那么,去美国是否就彻底无望了呢?
其实,很多人忽略了一种高性价比的方式:EW3雇主担保类移民。无需拼学历、拼英语,也无需雄厚的资金实力。唯一的“门槛”便是时间,需耐心等待排期。这比较适合有长远规划、不着急拿身份的家庭。先在国内安心发展,等拿到绿卡再前往美国生活。当然,每个人的情况都不同,找到适合自己的方式才最为重要。感兴趣的朋友可以扫码详细了解一下!