Chapter 01

程序员为什么需要专属英语

读懂报错就能开工,写出地道 RFC 才是终点——这是程序员英语真正的样子。

1.1 通用英语 vs 程序员英语:根本不是一种语言

大多数中国程序员的英语启蒙是从应试开始的:四六级、托福、雅思、考研。这套训练教你的是一种"作文体"英语——长句、抽象、文艺、修辞华丽。但真正进入工程团队后你会发现,这些训练在 GitHub 和 Slack 上几乎完全没用,甚至是负资产。程序员英语是另一门子语言,它有自己的语法偏好、词汇集和文体公约。

三个最关键的差异:

维度通用英语程序员英语
句长一句 25-40 词常见,从句嵌套深一句 8-15 词最常见,避免嵌套
语态主动 / 被动混用,礼貌偏重祈使句 + 主动语态为主,命令式
词汇使用同义替换显得文采同一概念使用同一术语,绝不替换
动词过去时叙述故事祈使句 / 现在时第三人称主导
抽象用比喻、修辞用具体例子、代码片段、错误信息
语气"This essay will discuss...""Add support for X. Closes #123."

一个简单对比:让程序员描述"修复了一个 bug",应试英语训练的同学会写:

In this commit, we have made some modifications to the authentication
module in order to address an issue that was causing users to occasionally
experience login failures under certain edge cases.

而真正的工程师会写:

fix(auth): retry token refresh on 401 race condition

Closes #4821

第二个版本不是"简陋",而是专业。它在 50 字符内说清楚了模块、动作、原因,并自动关联了 issue。这就是程序员英语的核心审美:密度(density)和精准(precision)

// trap

把"长句、复杂从句、华丽辞藻"误以为是"高级英语"——这是中国程序员第一年最常见的认知陷阱。在 GitHub 上,长句不仅不加分,还会让 reviewer 产生"这人是不是在敷衍我"的反感。

1.2 程序员英语的"低门槛高天花板"

程序员英语有一个反直觉的特性:入门门槛极低,但天花板极高

低门槛体现在:你只需要 1500 个核心技术词汇 + 50 个高频句型,就能 100% 看懂大多数 GitHub Issue、Stack Overflow 问答、官方文档、错误信息。这个量级的词汇,一个普通本科生本来就掌握;缺的只是把它们和工程语境对应起来。换句话说——你已经"会"了,只是没"激活"。

# 你早就认识这些词,但可能没意识到它们在工程语境里的特殊含义:
- ship    (动词:发布上线,"let's ship it on Friday")
- bump    (动词:升级版本号,"bump dependency to 2.0")
- nit     (名词:小问题,"just a nit, feel free to ignore")
- spike   (名词:技术调研,"do a 2-day spike on this")
- stale   (形容词:陈旧的,"this PR is getting stale")
- bake    (动词:让方案沉淀,"let it bake for a week")
- park    (动词:搁置,"let's park this discussion")

这套"工程黑话"几乎从不在传统英语教材里出现,但它构成了你日常 80% 的沟通信号。

高天花板体现在:写出一篇地道、紧致、有声量(voice)的技术博客或 RFC 极难。它要求你掌握英语母语程序员的节奏感(cadence)——什么时候用短句砸下去,什么时候用一个限定词软化,什么时候用 dash 而不是 comma,什么时候用括号补充,什么时候直接用一句俏皮话化解尴尬。这是大多数中国资深工程师终其职业都很难追上的一关。

但好消息是:90% 的工程场景只需要"读懂 + 写对",你不需要追到天花板。即使是 Linux 内核 mailing list 这种最高强度的技术写作,也只有 maintainers 才需要那种水平。普通贡献者写 commit message 和 PR 描述,按模板来就够。

1.3 程序员英语的四个能力层次

把程序员英语拆成四层,从下到上:

层级能力典型场景需要的训练
L1 被动读看懂报错、文档、issue调试、查 SO、看 README词汇 + 简单句法
L2 被动听听懂英文 standup、tech talk开会、看 conf 演讲、听 podcast大量精听
L3 主动写写 commit、PR、issue、邮件每天 GitHub 协作模板 + 例句库
L4 主动说会议发言、面试、design review跨团队 / 跨时区协作脚本练习 + 实战

多数中国程序员的能力曲线是:L1 ≫ L2 ≫ L3 ≫ L4。能流畅读懂 React 源码注释的人,不一定能写出一条干净的 commit message;能写出技术博客的人,不一定敢在 standup 上随机被点名发言。

本手册的章节顺序就是按这个层次设计的:

// strategy

L1 → L4 是单向阶梯——读和写练好之前,听说几乎注定吃力。不要跳过基础直接练面试英语,那等于没学加减乘除直接学微积分。

1.4 评估你当前水平的 5 道题

先做完下面 5 道题,再决定每章用多少时间。每题 10 秒判断"我能不能做到"。

题 1:写一条 commit message

你刚修复了一个 bug:用户在点击"删除"按钮时,如果在 1 秒内连续点击两次,会导致后端返回 500 错误。原因是前端没做防抖。请你用一行英文写出符合 Conventional Commits 规范的 commit message。

参考答案
fix(ui): debounce delete button to prevent duplicate requests

关键点:动词 debounce(防抖);名词 duplicate requests;scope ui。如果你写成 "Fix a bug that user clicks delete button twice will cause 500 error"——这就是典型 L3 没过关的信号。

题 2:理解错误信息

请用一句中文解释下面的错误:

panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x4a8b3c]
参考答案

程序运行时崩溃,原因是访问了一个空指针(nil pointer dereference)。SIGSEGV 是操作系统发的内存段访问违规信号,addr=0x0 表示访问的是空地址。这种报错在 Go 里通常发生在你忘记初始化结构体指针或函数返回了 nil 但没检查。

题 3:礼貌反对一个设计

同事在 design doc 里提议用 MongoDB 存事务数据。你不同意,理由是 MongoDB 不支持跨文档事务。请用 1-2 句英文软化地表达反对意见。

参考答案
I might be missing context here, but I'd push back on MongoDB for
transactional data. Cross-document transactions are still limited even
on the latest version. Have we considered Postgres?

关键句型:I might be missing context(先放低姿态)+ I'd push back on(明确反对)+ Have we considered(给替代方案)。

题 4:standup 自我汇报

用 30 秒英文做一段 standup:昨天调通了支付回调,今天要开始写订单状态机,遇到的阻塞是 staging 环境的数据库密码过期了。

参考答案
Yesterday I got the payment callback wired up end to end. Today I'll
start on the order state machine. Blocker: the staging DB password
expired — anyone has the new one or knows who owns rotation?

三段式 Yesterday / Today / Blocker,用 wired up(接通)、end to end(端到端)、state machine(状态机)这种工程词,比 "I finished xxx" 自然得多。

题 5:面试 self-introduction

在英文电话面试开场,"Tell me about yourself" 你的 60 秒答案是什么?

参考答案结构

程序员版 60 秒模板(具体内容看第 11 章):

1. 当前角色 + 公司类型(10s):I'm a backend engineer at X, a fintech company...
2. 核心技术栈 + 规模(15s):building Go services that handle 5M req/day...
3. 一个最近的项目亮点(20s):recently led the migration from MySQL to TiDB...
4. 为什么对这个职位感兴趣(10s):what excites me about this role is...
5. 收尾抛回主导权(5s):happy to dig into any of these — where would you like to start?

评分:

1.5 学习路径推荐:从被动到主动

不要从"背单词"开始。背单词是最低效的学习路径,因为程序员英语的难点不在单词量(你早就够用),而在把已有词汇激活到工程语境。推荐路径:

第 1 周:浸入

每天 15 分钟,纯输入:

第 2-4 周:模仿

开始写:

第 2-3 月:参与

开始用:

第 3 月以后:输出

建立自己的英文资产:

// rule

"输入:模仿:参与:输出 = 5:3:1:1" 是大致的时间分配。不要一上来就追求输出,没有充足输入打底,写出来的英文一定带浓重的中式痕迹。

1.6 AI 时代程序员英语的新角色

2023 年以后,程序员英语的地位反而变得更重要了,而不是相反——这与很多人的直觉不同。理由有四:

第一,prompt 工程的本质就是英语写作。 你给 ChatGPT、Claude、Cursor 写的 prompt,70% 是英文(即使你用中文,AI 在底层也是先翻译成英文 token 再处理)。一个英文表达精准的人写出的 prompt,输出质量比模糊中文 prompt 高 30%-50%。这是 AI 时代最被低估的"软技能"。

# 模糊 prompt(中式英语 / 输出质量差)
Help me write a function to handle user data.

# 精确 prompt(程序员英语 / 输出质量好)
Write a TypeScript function that takes a User object (id: string,
email: string, createdAt: Date), validates the email with a regex,
throws ValidationError on invalid input, and returns a normalized
User. Include JSDoc and one Vitest test case.

第二,AI 让你能直接 review 母语者级别的英语。 以前你写一封英文邮件要先纠结半小时,现在你可以让 Claude 帮你润色 3 个版本,对比之后挑最自然的一版。但这要求你能看出哪一版更自然——这就是英语判断力。判断力的养成只能靠大量真实文本浸泡,靠不了 AI 本身。

第三,AI 是放大器,不是替代器。 它会让英语好的人变得更好(一天能产出过去 5 天的高质量文档),让英语差的人在面对真人协作时被进一步淘汰(因为别人 AI 加成下产出更快、更好)。这是"K 型分化"。

第四,最高价值的工程沟通永远是同步、面对面、即时的。 Design review、技术面试、跨团队协调、开源 maintainer 的 1-on-1 沟通——这些场景 AI 帮不上忙。AI 只能优化你的异步文本输出,但 standup 上的临场反应、白板讨论里的快速反驳,靠的是真功夫。

// north star

这门课的最终目标不是"让你不再依赖 AI",而是"让你和 AI 配合时知道哪些环节交给 AI,哪些环节必须自己来"。第 12 章会给出 20 条 prompt 模板和具体的 AI + 人协作工作流。

1.7 本章小结

下一章我们进入工程英语最底层的现场——代码命名和注释。这是每个程序员每天都在做、却很少被严肃训练的一项技能。