本文是 JetBrains 于 2026 年 9 月 10 日发布的 Jake Wharton 访谈(时长 2 小时 17 分)的分话题纪要,不是逐句译文。视频没有人工字幕,内容基于自动生成的英文字幕整理,专有名词已按上下文纠正;各节标题标注了对应的视频时间点,方便回看原片。
Jake Wharton 是 Retrofit、OkHttp 的作者,曾在 Square / Cash App 推动 Kotlin 落地,2017 年成为 Google Kotlin 团队第一位工程师,2020 年回到 Cash App,2025 年 11 月在裁员潮中主动离职,2026 年 2 月加入 Skylight。
一、Kotlin 的起源与 Google 采纳(00:00–00:11)
为什么 JetBrains 敢做 Kotlin 挑战 Java? 2010 年前后 Java 停滞:Oracle 刚接手,两年一个版本,Google Android 团队被 Java 语言能力卡住。社区在找替代品(Scala、Groovy)。JetBrains 作为工具公司,能把语言、IDE、整套基建一起交付,比从零起步的语言更容易「卖」出去;而且不用扔掉现有 Java 代码库,可以渐进迁移。
成为 Google Kotlin 团队第一位工程师的经过 在 Square 待了五六年,Square 早于 Google 三年采用 Kotlin。他写过一份内部论证文档说服公司,后来公开,在 Android 社区引发大量关注,他成了 Kotlin 布道者。Google 内部的熟人暗示「这事可能要成」,问他是否感兴趣——「这是不可能拒绝的机会」。
Android 团队有没有抵触? 有犹豫:从跑了十来年、全栈深度集成的东西,切到刚稳定一两年的新语言,风险不小。Google 的做法很谨慎:不是一夜切换,而是先为 Kotlin 建配套库,很久之后才重写 Java 库。这也证明 Kotlin 对 Java 遗产的尊重。
Android 之外 早期有个误解「Kotlin 是 Google 给 Android 造的语言」。现在后端(Spring 已经 Kotlin 优先)、多平台、桌面(JetBrains Toolbox)都在用。Android 是催化剂——在 Square 时后端同事看到 Android 组用得兴奋,也去申请批准。
60 秒向 Java 开发者推销 Kotlin 「Kotlin 就是 Java 十年后想成为的样子。」Java 不能破坏现有代码,演进极慢;Kotlin 今天就有那些特性,并且还能兼容 Java 8/11 的老代码库。生产环境大用户:Facebook、Google、Amazon——录制当周 Facebook 正把自家 Kotlin formatter 捐给 Kotlin 基金会。
为什么只在 Google 待了 2 年 9 个月? 入职时就说「两年后回来」。目标是把 Kotlin 做成 Android 一等公民,然后回去用自己造的工具,而不是只造工具。到期时正好批了个很想做的项目,多留了 9 个月。对 Google:Android 团队很棒,但作为公司,「它把用户锁进产品和服务的方式」让他有很多意见。
二、2025 年离职、求职与薪资(00:10–00:15)
- 2025 年 11 月主动离开 Cash App,正值裁员潮。找工作「不算轻松」:他挑剔、有硬性要求,但因为是主动走,不急。岗位仍然有,只是不像五年前「随便一个 Android 开发都能被抢走拿高薪」,得花力气差异化。
- 美国资深 Kotlin 工程师薪资:现金 20 万美元起,外加约 10 万/年股权(四年 vesting)。公司比以前抠。想拿更多得去 AI 这类高风险高回报的地方,股权可能归零也可能 10 倍。他现在只要稳定现金,年轻时正相反。
- Kotlin 还是职业优势吗? 不再是。它已经是「默认预期」而非差异点——Google 一采纳,进 Android 就得会。类比 Compose:四年前是加分项,现在是基本要求。除非用多平台等更深的能力,才算差异化。
三、求职时公布的九条价值观(00:15–00:36)
1. 不做 AI 公司、不做 AI 产品、不强制用 AI 开发(排第一,最看重)
- 公司在把 LLM 硬塞进不该出现的地方;没人觉得近几年软件质量在上升,他认为 LLM 会让质量更差,只是在高管眼里显得能提效。
- 伦理问题:这些模型建立在「史上最大规模版权侵权」上。他把 Aaron Swartz(下载 30GB 论文面临数十年刑期、最终自杀)和如今 Facebook 用 BitTorrent 下载数百万本书对比——15 年间企业伦理荡然无存。
- 工具选择本应由工程师自下而上推动(Kotlin、IntelliJ、构建系统都是这样),为什么 AI 是 CEO 自上而下命令用?「如果 Jack Dorsey 让我必须用 Eclipse,我也会辞职。」再叠加反复裁员,观感更差。
- 这条直接淘汰了约 80% 的潜在雇主。他承认自己有资本这么选,很多人没有。
2. 不做加密货币:密码学好,加密货币坏。本质是庞氏骗局,掠夺性系统,赚钱的只有割别人的人和在上面搭生意抽水的人。
3. 远程办公:2015 年起远程,有孩子后离不开这种灵活性;每年愿去办公室几次见人。
4. 开源:他学编程就是靠开源,默认把做的东西放到公开。每家公司都建立在别人的工作上(Linux、Android、SQLite、JVM),开源是回馈。
5. 用户优先于股东:现在产品更新带来的是「恐惧」而非期待——又坏了什么、什么进付费墙了。VC 驱动的公司必然从补贴转向榨取价值(enshittification)。他要找已有可持续商业模式的公司。
6. 人优先于利润:不做零工经济 / 压榨型公司。Uber 早期便宜是 VC 替你付一半车费,钱烧完就比出租车还贵;零工经济让个人失去了受监管行业的保护。
7. 小而专注:Square 200 人时期最快乐,能快速执行愿景。公司做大(离开时 Square 1.2 万人)就官僚化、产品变慢。大公司职责极窄(听说有人在 Twitter 只负责 DM 界面),小公司逼你走出舒适区、学一堆东西。
8. 多元平等包容:举例不只性别肤色——Cash App 在其他国家的同事做同样的工作拿一半薪水,仅因出生地不同。「这些本不该需要写成价值观」,但当前政治气候下有大量反对声音,所以要明确说出来。
9. 工作生活平衡:手机上不装工作聊天和代码审查。早年周六晚审 PR 觉得没问题,后来意识到实习生看到会误以为这是公司预期。周五 5 点关掉、周一 9 点再开应该是常态。
哪条代价最大? AI 那条筛掉 80%;但真正限制最多的是「要有健康盈利模式、不依赖 VC」——淘汰 90–95%,且通常意味着接受降薪。
四、加入 Skylight(00:36–00:42)
2026 年 2 月,找了 3 个月后加入 Skylight。原因:符合上述所有价值观,且他本人就是目标用户(有家庭);是硬件产品,他一直想玩硬件;不上 Play Store,自己分发,不用和 Google 打交道,对系统有完全控制权;涉及 AOSP 和真实硬件设备,是他没做过的领域;有收入流;Nova Launcher 作者 Kevin Barry 早半年加入是重要背书。它是他谈的第一家公司,成了衡量其他公司的标尺。
有没有妥协? 几乎没有。公司此前没做过开源但持开放态度,他仍维护的开源库很多也在产品里用。产品有 LLM 功能,但是可选的、克制的点缀,没有整个产品转向聊天机器人。
在做什么? 面向家庭的挂墙 / 台面大平板(Android),「家庭操作系统」:谁几点有足球课、这周买什么、吃什么、家务分工、培养孩子习惯——把家长脑子里的负担卸到设备上。
五、对 AI 与裁员的看法(00:42–00:52)
Coinbase CEO 裁 14% 并归因于 AI(「非技术团队已在上线生产代码」)
- 对 Coinbase 评价不高,「几乎违反我每一条价值观」。
- 核心论点:整个 LLM 行业靠 VC 钱撑着。录制当周 GitHub Copilot 从每月 30 美元转向按用量计费,有人账单飙到 1400 美元——两个数量级。这不会是个例,是必然模式:补贴 → 让用户上瘾 → 转向榨取价值。已经「离不开 LLM」的公司成本会涨一到两个数量级,「用 LLM 替换工程师」的算盘会崩,甚至比原来的工程师薪水还贵。
- 降低门槛让非工程师参与他完全支持(曾有设计师周末自学 Android 提交了复杂动画 PR)。但负责任和不负责任的做法有别:后者就是「扔掉大批工程师,把活丢给 LLM」。
- 「14% 不算什么。我离开 Cash App 后,他们裁了 70% 的工程师。」指望每个工程师干四人的活、产品经理靠聊天生成 PR 却不理解代码——短期能跑,长期软件质量必然下滑;成本上涨也不是观点问题,「就是那么运作的」。
有没有用过 AI agent 写代码? 「从来没有。」刻意采取极端立场,让人思考背后的东西:
- 科技工人从不组织工会,因为钱够多;现在钱干了,人被随手扔掉。依赖这些系统等于把权力从自己手里转走,把自己变成可替换的齿轮。
- 两个维度:伦理维度;责任维度——负责任的用法是当「顺风」,增强已有能力;不负责任的是写超出自己能力的代码。若价格涨 20 倍、只买得起 4% 的 token,你还能干活吗?
- 希望自己撑到泡沫破裂后的集体重置。它不会消失,但应只是工具箱里的一件工具,别成为你工程能力的地基。
如果 6 个月后 AI 写得比你好,Plan B? 去越来越小的公司、赚越来越少的钱、保持快乐。但他不信会这样:模型基于 2022 年前的人类集体成果,研究表明用自身输出训练必然导致模型崩溃;LLM 不会思考、不会推理,本质是统计,所以必然写出 bug(就像 Stack Overflow 高赞答案也有隐蔽 bug)。永远需要人来编程。
六、Kotlin vs Java / Swift / Rust(00:52–01:06)
AI 擅长写样板代码,是否杀死了 Kotlin 对 Java 的主要优势? 写代码从来不是最难的部分(Brian Goetz 反复说:代码被读的次数是写的 10 倍)。难的是之前的思考建模和之后多年的维护。少打几个字符、getter/setter、尾随 lambda、DSL 这些是「进入语言的载体」,适合放 PPT;语言和库的生死取决于能否让代码库长期有效——类型系统、工具链才是核心。LLM 拿来消除「写作卡壳」或批量改一千个调用点是可以的。
Java 有了 record、sealed class,差距缩小,Kotlin 黄金时代结束了吗? Java 没躺平:半年发版、预览特性、底层基建改造。而且 Java 的很多特性做得比 Kotlin 更周全——Kotlin 当年只能编译到 Java 1.6 字节码,data class 只能生成普通类和一点元数据;Java 能同时改语言、字节码和 VM,record 是整体协同设计。他希望 Kotlin 后续能找到办法整合这些。
Kotlin 今天比 Java 强在哪? 空安全。「十亿美元错误」不是 null 存在(缺席的概念永远需要),而是没在类型系统里建模。一个问号就消灭一整类 bug。
Swift 比 Kotlin 强在哪?
- Swift 有白纸机会,既定义语言也定义编译方式;Kotlin 受 JVM 字节码和 Java 互操作约束。
- 错误处理:Swift 强制处理可能抛出的函数,像 Kotlin 强制处理 null 一样;Kotlin 把所有异常变成 unchecked,你不知道任何函数的失败模式——这是 Kotlin 的痛点。
- 内存布局:Swift 有真正的 struct、紧凑数据;JVM 上万物皆对象、指针间接、堆上散落、缓存不友好,性能天然吃亏。
Kotlin 比 Swift 强在哪? 语言本身很难说——他认为 Swift 设计得更好。Kotlin 的优势是周边:库生态、开源生态、IntelliJ 工具链、构建系统,「Xcode 多少年后才有重命名重构,IntelliJ 20 年前就有」。没有工具、库、静态分析的故事,再好的语言也没人用。
错误处理最好的语言? Rust。所有权、借用、谁负责关文件描述符——这些「当然应该在类型系统里」的直觉来自多年被 null、泄漏、意外异常折磨的痛。Rust 很难,他还没翻过那道坎,但建模方式是最好的。
哪里不用 Kotlin?
- 微控制器 / 嵌入式:语言太大,需要完整操作系统环境。
- Web:不喜欢 Kotlin 上 Web,Compose UI 也没有尊重 Web 的运作方式;如果 Web 是唯一目标不会首选它。
- iOS 单平台应用:会选 Swift。Kotlin 到处能跑是优势,但从零只做一个平台时,应尊重该平台的独特性。Cash App 做多平台的目的不是替换 iOS 工程师,而是把他们从重复的同步逻辑里解放出来做平台特有的 UI 和交互。
- 嵌入式业余项目他用 Rust:async 直接映射硬件,一行代码 await 按钮按下,不用轮询或中断。
七、Cash App 五年:KMP、Redwood、Zipline(01:10–01:29)
做了什么? 业务逻辑的多平台方案。痛点:金融监管要求(某州要求 3 天内改措辞否则禁止转账),比应用商店发版节奏快。方案:Android/iOS 应用内置 JavaScript 引擎,业务逻辑用 Kotlin 写、用 Compose(不是 Compose UI)运行在 JS 引擎里,像「提线木偶」一样操控原生 UI。逻辑更新可热下发,重启后生效,用户无感,UI 仍全是原生 View。原计划后续切 WebAssembly。技术上很成功,承载了每天数百万人用的核心页面;问题主要是人的问题(各方买入、项目管理换人),公司转向后项目关停,但库全部开源(Redwood、Zipline 及衍生库)。
KMP 与 Flutter / React Native 的区别
- KMP 在每个平台用该平台「原生」的执行方式:JVM 上是字节码,iOS/PC/微控制器上经 LLVM 编译为原生代码,Web 上是 JS/Wasm。在 iOS 上共享内存空间、直接链接、编译进同一个二进制。
- Flutter 像游戏:自带整套渲染栈和 UI 工具包,到哪都长一个样,抹掉了平台的独特性——「那为什么不直接做个网站?」
- KMP 可以只共享「写三遍很烦或易错」的那部分,其余用原生。
对 Flutter 和 React Native 的评价
- 「我喜欢 React Native 远超 Flutter。」Flutter 的决策「近乎冒犯」:一家公司拥有史上最流行的操作系统(Android)和平台(Chrome/Web),却因内部失调造出第三个平台——Apple 绝不会做 Safari 和 iOS 的竞争者。
- RN 努力用每个平台的原生 UI 渲染,能真正骗过用户;Flutter 应用他一眼能认出来。Android 开发者讨厌 RN 是因为竞争关系。
- Cash App 的方案和 RN 不远,但刻意限制共享层能控制的 UI 细节:只能说「这是主按钮」,颜色、圆角、涟漪由各平台自己决定。
Redwood 为什么坚持原生渲染? 用户不是在 Android/iOS/Web 之间跳,而是在同一平台的 20 个应用之间跳;平台内的一致性才给人安全感。共享的是业务逻辑(谁也不想写三遍、iOS 同事处理方式还不一样),渲染细节交给平台。前提是已有设计系统,非常不「开箱即用」,新项目不建议走这条路。
库而非框架:他们做的东西都是「一块砖」,不是地基。应用动辄 10–15 年,语言、响应式模型、UI 工具包都换过。库把胶水代码的负担推给使用者,但换掉时能增量迁移。Redwood 和 Zipline 互不知晓,靠胶水代码组合。
八、工具、Kotlin 槽点、Gradle、防倦怠(01:29–01:47)
- 环境:原版 IntelliJ / Android Studio,插件几乎只有 SQLDelight;终端用 Ghostty;浏览器 Firefox(Chrome 靠竞争起家,「活得够久成了反派」,用市场份额胁迫生态)。
- 「Jake 的代码编译不过就是编译器有 bug」这个梗:Google 时期有个 subreddit 用 CSS 把所有评论者名字都改成他的名字,同事截图「他」骂 Google 产品的评论去告他经理,他不得不向经理的经理解释 Reddit 和 CSS。
- 最烦的 Kotlin 特性:旧答案是默认 public(应默认 internal,做库的人尤其在意);新答案是异常 / 错误处理——不是深思熟虑的设计而是 JVM 逼出来的妥协。例子:买火车票时误触两次、某不变量抛异常、后台线程崩溃、整个 App 无响应;地铁里断网 App 直接卡死。希望语言强制你像处理 happy path 的静态类型一样处理失败。错误处理提案刚刷新,有希望。
- Gradle 为什么被骂:早期追求脚本「写起来可爱」,而非正确性和性能,后来十年一直在往回补,导致用户不断重写构建脚本。对比 Bazel:正确性优先但 UX 糟糕。
- 近二十年不倦怠的秘诀:前半段 Android 本身在快速演进,每年 I/O 都有新东西;近十年平台「做完了」,更新带来的是「又要拿走什么」。他转向硬件(可触摸、与真实世界交互)和学其他语言(Swift、Rust、Zig、Haskell)——不求精通,而是打开思路,再带回日常语言。并把学习绑定到真实需求:讨厌家里的洒水控制器,那就是一块微控制器加 20 个继电器,正好借此学 Rust 和基础电路。Android 已经不那么有趣,但 Kotlin 过了 K2 的坎之后语言演进在提速,仍让他兴奋。
- 每个开发者都该学多门语言吗? 至少两门,不必五六门。从 Rust 学到的「所有权」概念他带回了 Kotlin/Java:这个对象传给函数后我还能用吗、谁负责关连接。六个月后来重构的人不知道隐式契约就会造成内存泄漏。梦想项目之一是把所有权引入 Kotlin——今年 KotlinConf 已有研究者拿出早期笔记。Java 里对传入 list 做防御性拷贝这一整类问题,所有权都能消除。
九、开源生态与可持续性(01:49–02:06)
- Kotlin 与 Java 开源生态难以分割。OkHttp、Okio 用 Kotlin 重写时保持严格二进制兼容,仍有「纯粹主义者」不满多了 stdlib 依赖。Kotlin 开源文化源自语言本身完全开源、演进公开;对比 Swift 早期「Apple 每年扔下一个金疙瘩」,现在也在纠偏。早期参与者定下隐性规则,开放文化自我延续。
- 依赖是否可怕?(提到 Ghostty 作者「需要依赖就 fork」)双刃剑。问题根源是对「使用开源库意味着什么」的误解:你要对它负责,把它当作自己写的代码——反正都打包进你的产品,用户不在乎你用了什么库。「在公司贡献开源要申请许可」是错误观念:不用这个库你也得自己写。你参与了、盯着了,项目转向(甚至换 license)时你能提前看到并有所准备。
- 有了 LLM 还要库吗? 低估了单一代码库的价值:别人修了你还没遇到的 bug、别人提速 15% 你直接受益——贡献的分发效应。
- 公司为何投资开源? 表格上难以量化;有额外工作(文档、测试、发布基建、处理 issue)。收益:理论上免费的改进、工程文化的对外展示与招聘线索(Google/Facebook 曾因此收获很多,现在少了)、工程师能「展示」而非「讲述」自己的工作。不要强迫开源(会显得虚伪);也有人不想承受公开的负担——被骂「你搞坏了我们的 App」、LLM 生成的垃圾 PR、语言障碍。私心:离职时开源的东西能带到下一家,这正是他现在的情况。
- 开源多少是有偿的? 大量开源实际是「公司雇你全职做那个东西」,隐性赞助。问题在个人项目成了别人代码库的承重墙:license 写明没有契约、没有保证;维护者离职 / 不堪重负后项目失修,没有好的回补模型。贡献代码、修 bug、分诊 issue 也是一种「付款」。「看到自己的库出现在大公司 App 的开源列表里很爽,但银行账户数字上涨也很爽」——现在是靠从本职工作偷时间来做别人依赖的东西,从兴奋变成了义务。
十、Kotlin 的治理与未来(02:06–02:16)
- 创始人 Andrey Breslav 2020 年离开,语言能否延续? 语言必须活过创造者;做了 10 年想换事做完全正当。Kotlin 平稳度过是对整个体系的证明。现在几乎所有成功语言都不再是「仁慈独裁者」模式,而是共享的组织结构与社区协同。Zig 是例外但还年轻——Andrew Kelley 能拍板「新 IO 概念破坏所有 API、100% 代码重写」有巨大价值,但到 1.0 后他希望责任更分散,既减轻个人负担也为语言提供稳定性。
- 他个人影响过 Kotlin 吗? 「推了几把」。最兴奋的是
when默认穷举——在 Square 时做过编译器插件强制穷举,以为永远进不了语言,结果 Roman Elizarov 接手时说「我们会做的」。没有直接署名的特性,但 Kotlin 历年取舍与他的价值观一致,这是留住他的原因。鼓励大家关注 KEEP 提案、KotlinConf 语言演进演讲、Kotlin Slack 频道——你的代码库语言团队看不见,不发声就是把缰绳交给别人;一句「是 / 否,理由是……」也在塑造语言。 - 2026 年谁在掌舵:JetBrains、Google 还是社区? 应该三者共同。这正是把语言移交给 Kotlin 基金会的目的——Google 吃过用别家公司拥有的语言(Java)被告的大亏,采纳新语言时不能再被单一公司拿捏。社区虽无正式成员身份,但人数远超两家公司。
- 如果 Kotlin 消失,世界失去什么? 是大损失,但语言不必永生、不必膨胀到覆盖一切用例;若编程范式根本改变,Kotlin 不再合适也可以接受。
- 你个人会失去什么? 「我会失去找工作的能力——其他语言都没熟到能挣钱,鸡蛋全放在 Kotlin 篮子里了。所以,请别让它消失。」
本文首发于 harlon.wang,转载请注明出处。