练习册:举一反三 · 十面贯通
前面十面,你是一面一面看的。看的时候有个错觉:每一面都懂了。 现在合上书,给你一件真事,让你自己开口——你会发现十面在你脑子里还是十张独立的卡片,没有长在一起。 这本练习册要干的,就是把它们焊起来。
写在前面:这套题怎么用
先说一个可能让你不太舒服的判断。
这套题不是用来”答对”的。
市面上绝大多数语法练习的隐含契约是:我给你一句,你填一个空,对了打勾,错了打叉。这套题不是这个契约。你会发现很多题的参考答案里写着”这三种都行,但它们的功效不同”——这不是我在和稀泥,是因为在真实语境里,“对”从来不是一个点,而是一片区域。你要练的不是命中那个点,是搞清楚这片区域的边界在哪、每个位置有什么代价。
所以这套题的正确用法只有一条:
先自己写,写完再看答案。
不写就看答案,等于看别人撸铁。你的肌肉一点也不会长。我知道这很难——盯着一道题三分钟写不出一个字,那个焦虑感很真实。但那三分钟正是训练本身。你写不出来,不是因为你英语差,是因为你第一次意识到中文原句里缺了三样东西。这三分钟里你脑子里翻腾的那些”到底要不要加 by""这里该不该用 had""这个数字要不要说死”——那才是这本书真正想教你的东西。
一个必须先点破的心理障碍
你有没有过这种经历:一句话写出来,语法检查全过,Native 看了也说没错,但就是觉得”不太像人话”?
我猜你不只一次有过。
原因在导论里提过一次,这里再砸一遍,因为它是这本练习册的地基:
你的句子语法全对,但十个维度里你可能九个都用了默认值。
什么叫默认值?回一下你是怎么写英文的。你脑子里先有中文:“迁移锁了订单表。“然后你查词:迁移 migration,锁 lock,订单表 orders table。然后你排语序、选时态——过去的事,用过去式——然后输出:
The migration locked the orders table.
这句话一个语法错误都没有。它也是十个维度全部走默认的结果:
| 维度 | 你选的 | 默认值是什么 |
|---|---|---|
| 时间坐标 | 一般过去 | 叙事主线默认档 |
| 完成性 | 整体事件(点) | 不看过程 |
| 语态 | 主动 | 施事当主语 |
| 焦点 | 无标记 | 主谓宾自然语序 |
| 言据 | 零标记 | 我亲自断言,不声明来源 |
| 语气 | 真实 | 说的是发生过的事 |
| 名词化 | 零 | 用动词说动作 |
| 限定 | the + 单数 | 听话人知道是哪个 |
| 语域 | 中性口语偏书面 | 最安全那一档 |
| 视角 | 旁观者,中距离 | 无标记叙事 |
十项全默认。语法全对。
问题来了:默认不等于中性。
这是全书最容易被漏掉的一句话。你以为你没做选择,其实你做了十个选择——只不过这十个选择是从”默认值”这个常量表里自动取的。就像 Go 里你 var s Server 然后直接用,你没配置 timeout,不代表没有 timeout,而是 timeout 是零值。零值也是值。
所以”语法没错但不地道”的真正来源,不是语法,是你的默认值和 Native 在这个语境下的默认值对不上。比如复盘报告里,Native 的默认档是”名词化 + 被动 + 客观言据”,你的默认档是”主动 + 动词 + 直接断言”。两边语法都对,但一份像事故报告,一份像八卦。
这本练习册的全部题目,本质上都在做同一件事:
逼你把手从默认值上挪开,去动那些你从来没动过的旋钮。
动完你会发现两件事。第一,你突然能表达以前表达不了的东西(比如”我不知道,但日志是这么说的”)。第二,你开始能听出别人的弦外之音(比如 “Mistakes were made.” 到底在干什么)。这两件事合起来,就是这本书说的”英语思维”。
三部分训练,对应三种能力
| 部分 | 练什么 | 对应能力 |
|---|---|---|
| 一、转切面 | 给基础句,转到指定切面 | 转得动 |
| 二、倒推 | 给句子,问它在哪些维度做了选择 | 读得懂 |
| 三、中文回译 | 给中文,先问”缺什么”再翻 | 补齐信息缺口 |
| 四、诊断 | 语法对但不地道的句子 | 识别默认值陷阱 |
| 五、终极迁移 | 全新事件,十面全切 | 搬得走 |
第一部分到第四部分都在母案例 The Outage 上打转——熟悉的事件,你不用分心去理解事实,可以全副精力放在”形态”上。第五部分换一个完全无关的事件(航班延误),那才是真正的考试:如果十面只在那一个案例上管用,那它就不是思维,是背课文。
最后附一张自检清单,是给你日常用的。写完任何一句英文,对着它问十个问题。前二十次会很慢,慢到你烦。第三十次开始,你会发现这些问题已经在你写之前就问完了——那时候十面才真的长在你身上。
关于参考答案
答案比题目长,这是故意的。题目是钩子,答案是食材。
每道题的答案我会讲三件事:为什么这句这么写、还能怎么改、改了之后功效有什么不同。有些答案会跑题跑到别的地方去(比如从一道时态题聊到 Go 的零值),那不是跑题,是因为这些知识点本来就连着。
还有一点:答案里经常出现”这取决于……”。遇到这句话别跳过,停下来想想取决于什么。能自己补出”取决于”后面的话,说明这一面你已经会了。
好了,开始。
第一部分:转切面训练(练”说得出来”)
第一部分的目标很朴素:同一个事实,你能说出几种英文?
注意这句话的重音在”能”上,不在”几种”上。背下十种说法没用——你在真实对话里没有时间回忆清单。你要练的是”我想换个效果”这个念头一起,手上立刻能切过去的肌肉记忆。
进入卡点:这句话有几个维度可以动?
往下做题之前,先撞一下墙。
The migration locked the orders table.
全册最朴素的一句。现在回答我一个问题:
这句话有几个维度可以动?你能说出三个吗?
先别往下看。在心里答一遍,最好出声答一遍。给自己三十秒。答不上来也算一种答案——那说明这三十秒没白花。
(三十秒)
好。我替你把答案说出来。
大部分人会说:“时态可以改——改成过去完成、改成现在完成。“想一会儿,会补第二个:“语态可以改,改成被动。“然后就卡住了。能挤出第三个的人(“可以加个 maybe”),已经是英文不错的那一档。
但真实答案是十个。 你只说出两个半,而这两个半恰好就是中学语法课反复讲过的那两个半。剩下的七个半从来没人教过你,可它们在 Native 脑子里随时待命:
| 维度 | 动一下,这句话会变成 |
|---|---|
| 1 时间坐标 | The migration had locked the table.(必须配锚点) |
| 2 完成性与过程 | The migration was still locking the table at 2:44. |
| 3 语态与主语选择 | The orders table got locked. |
| 4 焦点与信息包装 | It was the orders table that got locked. |
| 5 确定性与言据 | The logs suggest the migration locked it. |
| 6 语气与非真实 | If Lin had used gh-ost, this wouldn't have happened. |
| 7 名词化 | The 51-minute service degradation... |
| 8 数与限定 | a migration / the migration / The migration of November 12 |
| 9 语域与态度 | We experienced a brief service degradation. |
| 10 视角与叙事距离 | Lin now runs on-call training — the same engineer who... |
为什么你只想得起两个半?
因为中文里只有这两个半是显性的。“他锁了表""他锁过表""表被锁了”——中文靠”了""过""被”这几个词覆盖,而这恰好对应时态和语态。所以你大脑里”可以动的旋钮”这个文件夹里只有两个文件。
剩下七个半,中文里没有专门的词。 你要表达”日志显示是他干的”,中文就是加三个字”日志显示”,那是个状语,不是动词形态——所以你的大脑不把它归档成”旋钮”,它归档成了”补充说明”。
计算机类比:你写 Go 的时候 var s Server 然后直接用,你会觉得”我什么都没配置”。其实 s 里有十个字段,全是零值。零值也是值,默认值也是选择。 这一句英文里也躺着十个选择,只是它们全是零值,你没看见。
生活类比:这像你家的电闸箱。你只知道最上面那两个(照明、空调),因为只有它们贴了标签。剩下八个没贴标签,你以为它们不存在——但每一个都控制着家里的某样东西,而且装修师傅当初是全部推上去的。
回扣你刚才卡住的那三十秒:你不是不会,你是不知道有旋钮。这道题的正确答案不是”三个”,是”十个,而且我能叫出其中九个的名字”。从”两个半”到”九个”之间的距离,就是第一部分要给你的东西。
好,现在开始做题。
三个题组,每组一个基础句,每组都是全默认值的产物。看着它们,先自己转一遍,再看答案。
(这三个题组全部基于母案例 The Outage。本部分末尾另有题组 4、5、6,用的是社交、医疗、商业三个完全不同的领域——那是用来验证”这套旋钮在母案例之外也管用”的。)
题组 1
基础句
The migration locked the orders table.
先把这句的默认配置念一遍:一般过去(叙事主线)、整体事件(点,不看过程)、主动语态(施事 migration 当主语)、零焦点标记、零言据标记(我是直接断言)、真实语气、零名词化、the + 单数、中性语域、旁观者视角。
十项全默认。现在一个个动。
1.1 转到过去完成(必须自己补一个锚点)
你的任务:改成过去完成时。但这一题有个陷阱——你只改时态是不够的,你必须自己造一个锚点。 先想清楚锚点选在哪个时刻,再写句子。
参考答案
By the time Lin woke up at 2:26, the migration had already locked the orders table.
锚点选在 Lin woke up(2:26)。为什么选这个?因为它是整条时间线上最有戏的一格——一个人从睡梦中醒来,发现世界已经烧了十二分钟。这个”已经”里藏着全部戏剧性,already 这个词几乎是白送的。
但你完全可以选别的锚点,功效完全不同:
a. When the first alert fired at 2:17, the migration had already locked the orders table.
b. By the time Priya joined at 2:44, the migration had been locking the orders table for 30 minutes.
c. Before Lin ran the ALTER, nobody had reviewed it.
a 的锚点是 2:17,强调的是”告警响的时候,事儿早就出了”——监控滞后于故障,这是给行动项②(告警改进)铺路的写法。
b 的锚点是 2:44,而且这里用了完成进行 had been locking,把”锁表”从一个点拉成一条三十分钟的线。这句的功效是”这三十分钟里我们一直在挨打”。注意动词 lock 变成了持续性的读法——严格说 lock 是个瞬时动词,但 had been locking ... for 30 minutes 能成立,因为完成进行体强行给了它一个”持续的解释”,读者会自动理解为”锁一直挂着没解开”。这就是体的力量:它能临时改写动词的时间结构。
c 的锚点是 Lin ran the ALTER,而且方向变了——不是往后看,是往更早看。这句的功效是指向流程缺陷(缺双人 review),是给行动项③铺路的。
看出来了吗?三句话都在用过去完成,但它们在为三个不同的结论服务。
这就是第一面那个结论的实战版:过去完成不是一个时态,是一次 git checkout——你选的锚点,就是你决定让读者回到哪个 commit。
计算机类比:过去完成时是相对路径,必须有 HEAD。没有 HEAD 的相对路径,在文件系统里会报错;在英语里不会报错,但会让读者卡住——他会在心里等你把锚点补上,而你没补。
一句话规则:写完过去完成时,立刻找它的锚点。找不到,要么补一个,要么改回一般过去。
1.2 转到被动语态
参考答案
The orders table was locked.
或者:
The orders table got locked.
先说机制。被动做了两件事:把宾语 the orders table 提到主语位置,把主语 the migration 降级到可选的 by 短语里。镜头从”干活的”挪到了”被干的”。
但真正值得你注意的是下面这件事。
was locked 有两读,got locked 只有一读。
a. The orders table was locked. -> 可能是"被锁住了"(动作),也可能是"处于锁住的状态"
b. The orders table got locked. -> 只可能是"被锁住了"(动作,且是个事件)
这不是玄学。be + 过去分词 这个结构在英语里本来就身兼两职:它既可以是被动语态(passive voice,表动作),也可以是系表结构(表状态,过去分词当形容词用)。The door was closed. 你说不清门是”被关上了”还是”关着的”。而 get + 过去分词 只能做被动,只表动作,天生带一层”发生了一件(多半不太好的)事”的味道。
再看两个例子感受一下:
a. The window was broken. (窗破了——状态;或者窗被打破了——动作)
b. The window got broken. (窗被打破了——一定是个事件)
c. My laptop got stolen. (我笔记本被偷了)
d. *My laptop was stolen by the state of being a laptop. (荒谬)
got 被动还有个特点:它暗示主语遭受了这个变化,主语某种程度上是受害者。He got fired.(他被炒了)比 He was fired. 更有”他倒霉了”的味道。The orders table got locked. 读起来像”订单表遭殃了”。
中文翻译呢?两句都是”订单表被锁了”,甚至口语里连”被”都省了:“订单表锁了”。中文翻译几乎一样,英文的思维完全不同——一个在问”什么状态”,一个在说”出事了”。
还能怎么改
a. The orders table was locked by the migration. (把施事请回来,但放在句尾——信息焦点位置)
b. The orders table had been locked for 33 minutes. (被动 + 完成 + 持续段)
c. The orders table remained locked until 2:47. (remain 强制状态读法,消除歧义)
c 句是这一组里最值得记住的:当你想100%表达状态时,别用 was locked,用 remained locked / stayed locked。 它是消歧器。
一句话规则:要状态,用 remain/stay;要事件,用 got;两者都行又不确定的时候,用 was。
1.3 转到强调句,聚焦 orders table
参考答案
It was the orders table that got locked.
或者稍微正式一点:
It was the orders table that was locked.
先看结构。It was X that Y 叫 it 分裂句(it-cleft)。它把一句话劈成两半:劈出来打光的那部分(X)叫焦点,剩下的(Y)叫预设。
这句的预设是:有一样东西被锁了。断言是:是 orders 表。
这就是强调句和普通句的根本差别。你对比一下:
a. The orders table got locked. (告诉读者一件完整的事)
b. It was the orders table that got locked. (读者已经知道"有东西被锁了",我告诉他是什么)
a 可以当一段话的开头。b 不行——b 一开口就预设了上下文,它天生是个”回答”。
所以 b 适合什么场合?纠偏。
想象复盘会上有人说:“是不是 Order API 自己崩了?”
你说:It was the orders table that got locked — the API was fine, it just couldn't write.
完美。因为对方已经接受了”有事发生”,你只需要把聚光灯挪到正确的位置。
再想象另一种场合:你写事故报告,需要一句定性的话。用 a 就够了,用 b 会显得你在跟一个不存在的对手辩论。
计算机类比:普通句是 log.Info("the orders table got locked")。强调句是 log.Info("locked_thing = %v", ordersTable)——你把字段名写死了,把值变量化了。读者一看到这个格式就知道:字段(“什么被锁了”)是已知的,值(“是 orders 表”)才是新的。
一句话规则:强调句不是”加重语气”,是声明一部分信息为旧信息。用错场合,句子会显得莫名其妙地咄咄逼人。
还能怎么改:
a. The thing that got locked was the orders table. (伪分裂句,功效接近但更口语)
b. What got locked was the orders table. (wh-分裂句,预设更强)
c. It wasn't the API — it was the orders table. (先用否定排除,再给答案,最口语)
c 句在日常交流里其实比 b 常用得多。它是先清空一个错误答案,再填正确答案,节奏感更好。
1.4 转到言据(日志显示)
参考答案
The logs suggest the migration locked the orders table.
或者更精确的几种:
a. According to the slow query log, the migration locked the orders table at 2:14.
b. The logs show that the migration locked the orders table.
c. Logs indicate the lock was held from 2:14 to 2:47.
这里动的是第五面:确定性与言据(evidentiality)。
先问一个反问:基础句 The migration locked the orders table. 里,“你怎么知道的”这个信息在哪里?
答案是:不在句子里,在你脑子里。你说这句话的时候,是在直接断言——你把命题赤裸裸地摔在桌上,不附带任何”我凭什么这么说”的说明。这在英语里叫 zero evidential(零言据标记),是默认档。
而 The logs suggest... 干的事是:把信息的来源显式声明出来,同时把断言的强度从 100% 降到”基于证据的推断”。
看这个强度梯度:
a. The migration locked the orders table. (100%,我说了算)
b. The logs show that the migration locked ... (95%,证据就在那儿)
c. The logs suggest that the migration locked ... (85%,证据指向这个方向)
d. The logs indicate the migration may have locked ... (70%,证据指向,但我不完全确定因果)
show > suggest > indicate,这是一根证据强度旋钮。中文里也有对应(“表明""显示""提示”),但中文的使用是可选的、修辞性的;英文里,在事故报告这种文体里,不加言据标记会被读成”你在主观断言”。
这一点在跨国团队里是硬伤。我见过太多中国工程师写给美国的 incident review,通篇都是 The migration caused the outage. 这种零言据句。语法没错,但对方读完会想:“你怎么知道的?你当时在场吗?“——而这个疑问,对方通常不会问出口,只会默默给你的报告打个”不够严谨”的标签。
生活类比:这就像你跟朋友说”老王昨天迟到了”,跟你说”我看了打卡记录,老王昨天迟到了”。前者是你在打包票,后者是你在引用证据。事实一样,但你承担的风险不一样——万一说错了,前者是你的错,后者是打卡机的错。
一句话规则:在事故报告、技术评审、任何可能被追责的场合,给每个非亲眼所见的因果判断加一个言据标记。
还能怎么改:
a. We believe the migration locked the orders table. (把言据换成"我们团队的集体判断")
b. Per the postmortem findings, the migration locked ... (引用文档)
c. Priya confirmed that the migration had locked ... (引用人,最强)
1.5 转到推测(may have)
参考答案
The migration may have locked the orders table.
这里动的是同一个维度(第五面)的另一根旋钮:置信度,而不是来源。
may have + 过去分词 是对过去事件的低置信推测。注意这个”过去”很重要——对现在/将来的推测是 may + 动词原形(He may be in a meeting.),对过去的推测必须用 may have done。
看整根梯度:
a. The migration locked the orders table. (事实)
b. The migration must have locked the orders table. (95%,我推理出来的,几乎肯定)
c. The migration probably locked the orders table. (80%)
d. The migration may / might / could have locked ... (50% / 40% / 40%)
e. The migration can't have locked the orders table. (否定推理,几乎肯定不是)
这里有个反直觉的点:must have 不是”必须”,是”我敢打包票”。 它表达的是”根据现有证据,这是唯一合理的解释”。中文常译作”一定”,但中文的”一定是他干的”带情绪,英文的 must have 是纯推理,不带情绪。
The error rate hit 34% at 2:37. The migration must have locked the table by then.
这句里的 must have 是在说:错误率能到 34%,除了表被锁了没有别的解释。它是逻辑推理的产物,不是猜测。
而 may have 是真的不确定——存在其他可能性,我不排除。
对 Lin 那次事故,用哪个?
有意思的地方来了。事故当天凌晨三点,服务刚恢复,Marcus 在群里问”到底怎么回事”——这时候正确的说法是 may have:
We're still digging, but the migration may have triggered it.
而两天后复盘会上,日志、慢查询、锁等待全都对上了,就该用 must have 或者直接断言:
The migration locked the table. There's no other explanation.
同一件事,同一个说话人,置信度随着证据积累在爬升。 中文里这个爬升靠副词(“可能”->“应该是”->“就是”),英文里靠情态动词的形态。
计算机类比:这就是日志级别的反向版。日志级别是给”已知的严重性”打分(DEBUG/INFO/WARN/ERROR);情态动词是给”未知的可能性”打分。你的监控系统报警时会写 [P1] 确认故障 还是 [P1?] 疑似故障 —— 英文要求你在动词上做同样的选择,一字不落。
一句话规则:情态动词 + have done = 给一个过去的命题打可信度标签。不打标签 = 默认 100%。
1.6 转到名词化,作主语
参考答案
The locking of the orders table lasted 33 minutes.
这一句能交代任务,但说实话,Native 写这种句子的概率不高——the locking of the orders table 有点笨重。更自然的做法是把名词化往前多拧一格:
a. The lock on the orders table lasted 33 minutes.
b. The 33-minute lock on the orders table caused 12,300 failed orders.
c. The 51-minute service degradation that began at 2:14 cost Northwind about $80,000 in GMV.
a 是二级名词化:把”锁住”这个动作变成”锁”这个东西(lock 既可作动词也可作名词,是白送的)。
b 是三级:把”锁了 33 分钟”压缩成一个前置定语 33-minute,塞进名词短语里。注意 33-minute 里 minute 不加 s——名词一旦变成定语,就失去了数的变化权。这是中文完全没有的机制(“33 分钟”永远是”33 分钟”)。
c 是四级:把整个事件打包成一个名词短语 The 51-minute service degradation。到这一级,句子里已经没有一个动词在说”发生了什么”了,只有一个名词在指称”那件事”。
名词化最狠的地方在哪?
不是”显得正式”。是——
它把”谁干的”这个槽位整个拆掉了。
你看:The migration locked the orders table. 里有三个参与者的位置——migration(施事)、orders table(受事)、隐含的时间。The 51-minute service degradation 里,这些位置一个都不存在了。你甚至没法往里加 by 短语(*The degradation by Lin 是错的)。
被动语态是把施事挪到可选的 by 短语里——它还在,只是没出场。名词化是把施事的座位拆了。
这个区别在 blameless 复盘里是决定性的。你看这两种写法:
a. Lin locked the orders table. (Lin 干的)
b. The orders table was locked. (被锁了,谁干的没说——但你随时可以问)
c. The 51-minute service degradation ... (这次降级……——问"谁干的"已经不合语法了)
c 不是藏了施事,是让”施事”这个概念在这句话里失去了立足点。
计算机类比:被动是把函数的某个参数设为可选,你还是可以传;名词化是把这个函数换成一个常量——func lock(actor, target) 变成了 const DEGRADED_51MIN = ...。常量没有入参,你问”这个常量是谁传进去的”是个范畴错误。
生活类比:被动是”这事儿办砸了”(没说是谁办的,但显然有个人)。名词化是”这次失误”(“失误”是个东西,它没有主语,也不需要有)。
一句话规则:想让追问”谁”变得不合语法,用名词化;只是想暂时不提,用被动。
1.7 转到虚拟反事实(如果用了 gh-ost)
参考答案
If Lin had used gh-ost, the migration wouldn't have locked the orders table.
这句值得拆到骨头里。
第一,had used 在这里不是过去完成时。它形式上和过去完成一样,但功能完全不同——它是非真实标记(irrealis marker)。它在说:“他没用。” 这个”没”字,句子里一个词都没写,是形态写出来的。
第二,主句 wouldn't have locked 也是非真实。它在说:“表没被锁(事实上锁了)。”
第三,中文怎么说的?“如果用了 gh-ost,就不会出事。” 一个字都没提”他没用”。中文靠听话人自己算:你说”如果”了,说明现实相反。英文把这个计算的结果焊进了动词。
这就是为什么中国人写虚拟语气总觉得别扭——我们的母语在这个位置上是留白的,我们从小没练过”把留白填上”这个动作。
再看几个变体
a. Had Lin used gh-ost, the migration wouldn't have locked the table. (倒装,省 if,更书面)
b. If Lin had used gh-ost, this wouldn't have happened. (后果用 this 概括)
c. If we had had a documented abort procedure, we'd have saved 20 minutes.
d. If Lin had used gh-ost, the table would not be in this state now. (混合虚拟:过去的条件,现在的结果)
d 句特别值得注意,它是混合条件句:条件在过去(没用 gh-ost),结果在现在(表还在恢复/客户还在生气)。中文说”要是当初用了 gh-ost,现在也不至于这样”——中文靠”当初”和”现在”两个时间副词分工,英文靠 had done 和 would be 两个形态分工。
还能怎么用这个维度
别忘了虚拟语气不只是”后悔”。它还有一大块是评价和应该:
a. Lin should have used gh-ost. (他本该用——对过去行为的评价,带轻微责备)
b. The migration could have been run online. (本来可以在线的——指出存在更好的选项)
c. We ought to have had a second reviewer. (本该有个复核的人)
should have done 是复盘报告里出现频率最高的结构之一。它的精妙在于:它同时说了两件事——“过去没做”和”应该做”——但语气上比 “Lin didn’t use gh-ost and that was wrong” 温和得多。 它是 blameless 文体的核心武器:能指出问题,又不指名道姓地打脸。
计算机类比:虚拟语气是 git diff——它不显示任何一个版本的内容,只显示”现实分支”和”理想分支”的差异。should have 是给这个 diff 加了个 severity: WARNING 标签。
一句话规则:if 从句里的 had done 不是”过去的过去”,是”现实中没发生”。主句的 would have done 是”现实中也没发生”。两个形态,一个功能:把这句话标记为非真实。
题组 1 小结:责任的三档旋钮
把 1.1 到 1.7 摆在一起,你会发现一件有点凉的事:
这七句话说的是同一个事实,但它们在读者心里种下的”谁该负责”,完全不同。
责任最大: Lin ran a migration that locked the orders table. (人在,动作在,因果链完整)
责任中等: The migration locked the orders table. (动作在,人被替换成"迁移")
责任稀释: The orders table was locked. (人被拿掉了)
责任更稀: The orders table got locked. ("出事了",事故口吻)
责任抹除: The 51-minute service degradation ... ("谁"这个问题不合语法)
而每一档,中文都可以翻译成”迁移锁了订单表”或者”订单表被锁了”。
这就是这本书一直在说的那句话的实战版:中文翻译几乎一样,英文思维完全不同。
最后提醒一句:这七档没有哪一档是”正确答案”。朋友之间吐槽用第一档,事故报告的摘要用第五档,复盘会的根因分析可能要在第一档和第五档之间来回切——先用人称句说清事实,再用名词化句说清结论。会切,比会选重要。
题组 2
基础句
Lin didn't know how to stop the migration.
这一句比上一句有意思得多,因为它的主语是一个人,谓语是一个认知状态。你动的每一个旋钮,都是在重新分配”这算不算 Lin 的锅”。
先自己转一遍。转到第二题(进行体)的时候,你一定会撞墙——那面墙是这一组最值钱的东西。
2.1 转到过去完成(补锚)
参考答案
By the time Priya joined at 2:44, Lin still hadn't worked out how to stop the migration.
或者锚点选在另一处:
a. When Lin located the migration at 2:31, he had never been shown how to abort one.
b. By 2:44, Lin had been trying to stop it for thirteen minutes, without success.
注意这里发生了什么。基础句 didn't know 是一般过去,它把”不知道”当成一个点状态——在时间线上画一个点,说”在这个点上,他不知道”。
改成 hadn't worked out 之后,“不知道”从点变成了一段铺开的状态,而且这段状态的右沿贴着锚点。它在说:“到 2:44 为止,这十三分钟里,他一直没能解决。”
这就是过去完成时的第二个功能(第一个是 1.1 里的”倒带”):它可以把一个状态铺成一条线,一直铺到锚点为止。
再看 b 句的 had been trying。这句更狠——它不只是说”他不知道”,它说”他一直在试”。从”无知”变成了”徒劳”。这两个词在责任归属上的方向是相反的:无知是负面的,徒劳是值得同情的。
你要是 Lin 的领导,在复盘会上会说哪一句?
说 b。因为 b 把读者的注意力从”他不知道”引到了”他想解决但解决不了”,下一句自然就接:“And our runbook didn’t have that step.”
一句话规则:过去完成 + 否定 + 持续,是”到某个时刻为止一直没能做到”的标准配方。它天然暗示”不是不想,是做不到”。
2.2 转到进行体
参考答案
Lin was still trying to work out how to stop the migration when Priya joined.
现在说说你刚才撞的那面墙。
你的第一反应是不是:
*Lin was knowing how to stop the migration.
错了。而且不是”不太地道”的错,是根本不成立。
为什么?
因为 know 是状态动词(stative verb)。进行体的语义要求是:这个动作有内部阶段,可以开始、可以结束、可以中途切一刀进去看。run、try、work、write 都有内部阶段——你可以跑了一半。know 没有。你要么知道,要么不知道,中间没有”知道到一半”这个状态。
计算机类比:状态动词是一个存在缓存里的值,进行体是一条流。你不能问”这个缓存值正在等于 3 的哪一段”。你要问流,得先把它变成流——try to work out 就是那个转换函数,know 是输入常量。
生活类比:你不能说”我正在认识这个人”,你得说”我正在了解这个人”。“认识”是状态,“了解”是过程。中文里这两个词的区分,恰好和英文 stative / dynamic 的区分对得上——这是中文少数几个能帮到你的地方。
所以这一题的解法不是”把 didn’t know 变成进行体”,而是:
先把状态动词换成对应的动态动词,再上进行体。
对照表,值得背下来:
| 状态(不可进行) | 动态说法(可进行) |
|---|---|
| know | try to work out / figure out / find out |
| understand | be getting / be coming to understand |
| have(拥有) | be using / be holding / be going through |
| be(是) | be acting like / be playing the role of |
| want | be hoping for / be after |
顺带说一句例外,你迟早会碰到:I'm loving it.(麦当劳)、I'm having a great time.
这些是进行体的另一种用法——临时性 + 生动性。说话人故意把一个状态当成一段正在发生的过程来说,为了让你感觉”我现在正在这个状态里”。它是广告和口语的推广用法,读起来带表演性。技术文档、事故报告里不要用。 但你要能认出来,别以为是错句。
一句话规则:进行体要求动词有内部阶段。know / own / belong / consist / contain / cost 这类词没有,得换动词,不能硬套。
2.3 强调 Lin
参考答案
It was Lin who didn't know how to stop the migration.
单看这一句,它有点危险。因为它把焦点打在 Lin 身上,读起来像”别人都知道,就他不知道”——这句话是在指责,还是在辩护,取决于你后面接什么。
看这两句:
a. It was Lin who didn't know how to stop it — and he'd been on the team eight months.
b. It was Lin who didn't know how to stop it — and neither did anyone else on call that night.
a 是加重。b 是反转成辩护。
这就是强调句最容易被误用的地方:它只是把一个成分拎出来打光,它自己不带褒贬。 光打到 Lin 身上,读者会本能地等一个”然后呢”——你要是不给,读者会自己脑补一个最坏的。
再给你一个更常见的用法:强调句真正好用的地方不是强调人,是排除。
It wasn't that Lin didn't know how to stop it. It was that nobody had ever written down how.
这句是两个分裂句对打,第一个否定一个错误解释,第二个给出正确解释。这是口语里极其常用的节奏,比 Lin didn't know because the runbook was incomplete 有力得多,因为它先让听众的错误预期出场,再当着他的面拆掉。
一句话规则:强调句是把一个成分标记为”这个信息你以为你知道,其实你错了”。它自带论辩性。平铺直叙的时候别用。
2.4 转到委婉说法(wasn’t aware that…)
参考答案
Lin wasn't aware that the migration could be stopped safely.
这一题动的是第九面:语域与态度,但它的实际效果是重新分配责任。
看这四档:
a. Lin didn't know how to stop the migration. (中性:他不知道)
b. Lin wasn't aware that the migration could be stopped. (他没意识到可以停——问题在"意识到")
c. Lin had no way of knowing how to stop it. (他不可能知道——问题不在他)
d. Lin should have known how to stop it. (他本该知道——问题就在他)
这四句中文都可以译成”他不知道”,或者”他当时不知道”。一字不差。
英文里,这四句在责任坐标轴上的位置是:
a -> 0 (陈述事实,不评价)
b -> -0.3 (轻微外移:不知道是因为没人说)
c -> -1 (完全外移:在当时的信息条件下,任何人都不会知道)
d -> +1 (内移:他有能力知道,他没做到)
wasn't aware 为什么比 didn't know 轻?因为 know 指向能力/知识储备,aware 指向当下的意识状态。“他不具备这个知识”和”他那一刻没想到”,是两种很不相同的指控。
而 had no way of knowing 是这一组里最重的一句,也是 blameless 复盘的黄金句式。它直接断言:在当时的条件下,知道这件事是不可能的。这句话不是在替 Lin 开脱,它是把因果链从”人”改道到”信息系统”——而信息系统是公司的责任。
对比一下 d。should have known 是同一个结构的正面用法,加了个 should,方向掉头 180 度。一个情态动词,责任归属从 -1 翻到 +1。
生活类比:这四句的差异,就像你跟领导汇报说”小王没收到通知”(事实)、“小王不知道有这回事”(稍微护着)、“这通知根本没发到他那儿”(问题在流程)、“小王应该自己去看群”(问题在小王)。你以为你在陈述事实,其实你每一次选词都在站队。
一句话规则:know 是能力,aware 是状态,no way of knowing 是免责,should have known 是追责。中文里这四个词的差别几乎为零。
2.5 转到名词化
参考答案
Lin's inability to stop the migration cost us another thirteen minutes.
但真正有力量的版本是这句:
The lack of a documented abort procedure left Lin with no way to stop the migration.
或者更彻底:
The absence of any documented abort procedure in the runbook was the single biggest contributor to the 51-minute duration.
第三句才是复盘报告该有的样子。
看清楚这三句在干什么:
第一句把”Lin 不知道怎么停”压缩成一个名词 inability。主语变成了”这个 inability”,谓语变成了 cost us thirteen minutes——一个抽象的东西当主语,做了一件具体的事(花了十三分钟)。 这是英语技术写作里最典型也最有效的句式:用抽象名词当因果链的环节。
第二句更进一步:它连 Lin's inability 都不要了,直接把原因归到 The lack of a documented abort procedure。Lin 还在句子里,但已经退化成宾语了。
第三句把 Lin 彻底移出画面。主语是 The absence,表语是 the single biggest contributor。全句没有一个人在做事,全句却在讲一件由人造成的事。
这就是名词化在事故报告里不可替代的原因:它让你可以写一份通篇没有主语、但逻辑链完整的文档。
回想一下 1.6 那句:“名词化不是藏施事,是让施事无处安放。” 这里你看到了它的升级版:
名词化不只是拿掉施事,它是把”人”这个范畴从因果链里整个降级成”条件”。
Lin's inability -> The lack of a documented procedure -> 责任从 Lin 的知识状态,转移到组织的信息状态。这个转移,就是 blameless 的语法本质。
计算机类比:这三句的演化,就是一次重构。
v1: lin.doesNotKnow(howToAbort) -> cost(13min) // 责任在 lin 这个对象的方法上
v2: !runbook.hasSection("abort") -> lin.blocked() // 责任在 runbook 的缺失字段上
v3: runbook.completeness.deficit -> incident.duration // 责任在系统的一个属性上
三次重构,逻辑不变,但打印出来的 stack trace 完全不同。v1 的栈顶是 lin,v3 的栈顶是 runbook。事故报告的读者会顺着栈顶找人。
一句话规则:写复盘报告时,每出现一次人名,先问自己:这里能不能换成流程/文档/系统的某个属性?能换就换——这既是为了 blameless,也是为了找到真正可执行的行动项。
2.6 转到无主语句式(抹掉施事)
参考答案
There was no documented way to stop the migration.
这是这一组里我最喜欢的一句,因为它是责任搬家搬得最远的一句。
看这个序列:
a. Lin didn't know how to stop the migration. (责任:Lin 的知识)
b. Lin had no way of knowing how to stop it. (责任:转移到"信息不可得")
c. There was no way to stop the migration. (责任:转移到"世界上没有这个方法")
d. There was no documented way to stop it. (责任:转移到"这个方法存在,但没人写下来")
c 和 d 用的是 there be 存现句(existential construction)。这个结构的本事在于:它把一件事表述为世界里存在(或不存在)的一个对象,而不是某个人做(或没做)的一个动作。
Lin didn't know X 的语法主语是一个人。There was no X 的语法主语是 there——一个纯粹的语法占位符,它不代表任何东西。
这句话里根本没有位置留给”人”。 不是藏起来了,是这个句式没有那个槽位。
生活类比:Lin didn't know 像说”厨师不知道这道菜怎么做”。There was no documented way 像说”菜谱上没有这道菜”。前者你会想换厨师,后者你会想补菜谱。而补菜谱这件事,是可以写成行动项的;换厨师不是。
这就是 blameless 复盘唯一真正的技术内核:把每一句”某人没做某事”改写成”某个东西不存在”,然后你就会得到一个可执行的行动项。
验证一下母案例的三条行动项:
① 引入 gh-ost 并写进标准流程 <- "There was no standard online-DDL path."
② runbook 补"如何中止迁移" <- "There was no documented abort procedure."
③ 生产迁移必须双人 review <- "There was no requirement for a second reviewer."
三条全部是 There was no ... 的形态。这不是巧合,这是 blameless 的语法指纹。
还能怎么改:
a. No abort procedure had been documented. (否定词前置 + 被动,最正式)
b. The runbook had no section on aborting a migration. (主语还给 runbook,责任归到文档)
c. Nobody had written down how to stop it. (主语是 nobody,还是没人,但语气最直白)
c 值得注意:nobody 是个否定代词,它表面上把人请回来了,但它指的是”没有任何人”,等于没有具体对象。这是口语版的 blameless——“这事儿没人写过”,语气比 There was no documented way 冲,但同样不指名。
一句话规则:当你想说”这不是某个人的错,是我们缺个东西”的时候,用 There was no ... 开头。它会自动把句子从追责模式切成流程模式。
题组 2 小结:一条责任的滑杆
把 2.1 到 2.6 摊开,你会得到一根完整的滑杆:
责任最重 ------------------------------------> 责任最轻
Lin didn't know -> 他在场,是主语,谓语指向他的能力
Lin should have known -> 他在场,情态动词追责
It was Lin who ... -> 他在场,还被打了聚光灯
Lin wasn't aware -> 他在场,谓语降级为意识状态
Lin had no way of knowing-> 他在场,但断言"不可能知道"
Lin's inability ... -> 他变成定语,真正做主语的是 inability
There was no way to ... -> 他消失了,句子里没有人的位置
The absence of ... -> 他消失了,主语是系统的一个属性
八句话,八种责任分布,中文可以全部译成”他当时不知道”。
现在问你一个不舒服的问题:
你平时写英文事故说明的时候,用的是这根滑杆的哪一档?
大部分中国工程师,习惯性地用最左边那几档。因为中文里”他不知道”就是”他不知道”,我们从来没被训练过去动这根滑杆。结果就是——你写出来的英文在语法上无懈可击,但在语用上,你每一次都在比 Native 更狠地指控你的同事。
这不地道。这比不地道更糟:这是在不自觉地当坏人。
而讽刺的是,很可能你自己也不想追责,你只是不知道还有别的说法。
题组 3
基础句
12,300 orders failed during the outage.
这一句的主角是数字。数字是事故里最敏感的东西——它是唯一一个没法用形容词糊弄过去的事实。所以这一组练的是:同一个数字,怎么放大,怎么缩小,怎么换个角度让读者心疼。
先提醒一句:这一组的每一句,语法都对,事实都对。差别全在态度。你要是觉得”这不就是在玩文字游戏吗”——对,就是。事故通报本来就是文字游戏,只是没人这么直说。
3.1 转到被动
参考答案
12,300 orders were dropped.
等等。orders failed 里的 failed 是不及物动词,它本来就没有施事,还怎么”被动”?
这就对了——这一题的陷阱在这儿。
12,300 orders failed 的语法结构是”主语 + 不及物动词”。订单是主语,失败是它自己发生的。这句话在语法上完全没有提到任何人对订单做了什么。
而 were dropped 是被动,它一定隐含一个施事(可能是系统、可能是 Order API、可能是那个锁)。虽然 by 短语没写出来,但**“有人/有东西丢了这些订单”这个框架已经立起来了**。
对比:
a. 12,300 orders failed. (订单失败了——像订单自己的事)
b. 12,300 orders were dropped. (一万两千笔订单被丢弃了——有东西丢的)
c. 12,300 orders were rejected. (被拒绝了——系统明确拒绝了它们)
d. 12,300 orders were lost. (被弄丢了——最严重,暗示不可恢复)
中文呢?四句都可以译成”一万两千笔订单失败了”。
英文逼你选:是自己崩的,还是被系统扔的,还是被明确拒绝的,还是彻底弄丢的。这四个词在事故等级上的排序是 failed < rejected < dropped < lost。
这个区分为什么重要? 因为母案例里有一个极其关键的事实:没有数据丢失。 订单请求失败了,但订单数据没坏、没丢。这个事实让 Pallet 能在给 Northwind 的通报里用 failed 而不是 lost——一个词,几十万美元的差别。
你要是不小心写了 We lost 12,300 orders,客户的第一反应是”我的订单数据没了”,那是数据完整性事故,比服务降级严重一个数量级。
一句话规则:fail 是订单自己的事,be dropped/rejected 是系统干的事,be lost 是回不来的事。事故通报里这三个词的最小差距,就是几十万 GMV 的差距。
3.2 转到存现句 There …
参考答案
There were 12,300 failed orders during the outage.
或者:
There were about 12,300 orders that failed between 2:14 and 3:05.
存现句在干什么?
12,300 orders failed 是”一万两千笔订单”当主语,它们做了一件动作(失败)。主角是订单,动作是失败。
There were 12,300 failed orders 是把”这次故障”当成一个容器,然后把一万两千笔失败订单放进去,说”里面有这些东西”。主角变成了容器,订单降级成内容物。
这个视角的转换在报告里很有用。你看:
a. 12,300 orders failed during the outage. (焦点:订单,以及它们的遭遇)
b. There were 12,300 failed orders. (焦点:一个客观存在的集合)
c. There was a 51-minute outage affecting 12,300 orders. (焦点:故障本身,订单只是修饰语)
c 是这一组的终极形态:把整个事件打包成一个存现句的主语 a 51-minute outage,然后 12,300 orders 已经退化成分词短语里的一个宾语了。数字还在,但已经不是句子的主角了。
计算机类比:a 是 for _, o := range orders { o.fail() }——你在遍历订单,每一个都在你眼前失败。c 是 incident := Incident{duration: 51min, affectedOrders: 12300}——订单变成了一个结构体字段。前者是过程,后者是快照。
生活类比:a 像是在说”这一千个人都淋湿了”。c 像是在说”这场雨,波及一千人”。前者你在看人,后者你在看雨。
一句话规则:存现句把”事件”变成容器,把”参与者”变成内容物。想让事件当主角,用 there be。
3.3 转到强调数字
参考答案
It was 12,300 orders that failed.
但说实话,这句不太自然。为什么?
因为强调句要求焦点部分承载对比意义——“是这个,不是那个”。而 12,300 这个数字在这个语境下没有明显的对比集(你不是在说”不是 1,200 而是 12,300”)。
所以这一题更地道的做法是换一个维度:不改句子结构,改限定词。
a. No fewer than 12,300 orders failed. (不少于一万两千笔——暗示"这数字已经很保守了")
b. As many as 12,300 orders failed. (多达一万两千笔——强调规模超出预期)
c. Some 12,300 orders failed. (约一万两千笔——some + 数字 = 大约,偏正式)
d. The number of failed orders was 12,300. (把数字本身变成主语,最冷静)
a 和 b 是这一组里最值得学的。no fewer than 和 as many as 都是量词框架(quantifier frame)——它们不提供新信息,它们告诉读者该用什么表情看这个数字。
no fewer than 12,300 的潜台词是:“我知道你觉得这个数字已经很夸张了,但我告诉你,这还是下限。”
as many as 12,300 的潜台词是:“连我自己都没想到会有这么多。”
中文怎么表达? “足足有一万两千笔订单失败”。“足足”两个字。一个副词。
英文里 no fewer than 是四个音节的一整个短语,而且它必须附着在数字前面,不能挪到动词旁边(*12,300 orders no fewer than failed 是错的)。这是因为英文的限定词和名词是绑在一起的,中文的副词和动词是绑在一起的。同一个”强调”,两种语言焊在不同词性的词上。
一句话规则:想强调数字,别动语序,动限定词。no fewer than 表下限,as many as 表超预期,some 表约数,a full 表完整性(a full 51 minutes)。
3.4 转到轻描淡写
参考答案
A number of orders failed during the outage.
再往下还有几档:
a. A number of orders failed. (一些订单失败——数字消失了)
b. Some orders failed. (有些订单失败——更轻)
c. A handful of orders failed. (少数几笔——轻到有点不诚实了)
d. We saw elevated order failure rates during the window. (我们观察到下单失败率有所升高)
e. We experienced a brief service degradation. (我们经历了一次短暂的服务降级)
d 和 e 是这一组的高级形态,值得拆开看。
We saw elevated order failure rates 里发生了三件事:
- 数字彻底消失,换成一个率(rate)
failed这个动作被形容词化成elevated ... rates,动词没了- 加了个
We saw,把它变成我们的观察,不是客观统计
elevated 这个词是公关英语的杰作。它的字面意思是”升高的”,但它的语感是”升了一点点,在正常波动的上沿”。它给一个 34% 的错误率穿上了一件”轻微偏高”的外套。
We experienced a brief service degradation 更绝:51 分钟叫 brief,12,300 笔失败叫 degradation(降级,不是故障)。这句里没有一个词是假的,但整句话给人的印象和事故的实际严重性差了三个数量级。
计算机类比:这就是日志级别的反向操作。ERROR: 12,300 orders failed 被重写成 INFO: observed mildly elevated failure metrics。日志内容一样,级别被人为调低了。监控告警从来不会这么干,但公关稿天天这么干。
生活类比:你家漏水把楼下泡了,你跟老婆说”水管出了点状况”。每个字都是真的。
我给你看这个,不是为了教你骗人。是为了让你在读航司延误通知、银行故障公告、SaaS 状态页的时候,能一眼看穿它们在动哪根旋钮。 你自己写的时候会怎么选,是你的事——但至少得是个有意识的选择,不是默认值。
一句话规则:轻描淡写有三把刀:把绝对数换成率(rate)、把动词换成形容词(elevated)、把”故障”换成”降级”(degradation)。三把一起用,12,300 笔失败可以变成”略有波动”。
3.5 转到严重化
参考答案
We lost 12,300 orders.
注意这个 we。基础句里没有”我们”这个角色,这一句里有了。 这是严重化的第一招:把说话人放进句子里,承担这个后果。
再往下:
a. We lost 12,300 orders. (我们丢了)
b. 12,300 customers were unable to complete their purchases. (一万两千个客户没能完成购买)
c. Northwind alone lost about $80,000 in GMV. (光 Northwind 就损失了 8 万 GMV)
d. For 51 minutes, no one could place an order on Northwind's site. (51 分钟里,Northwind 的网站一笔单都下不了)
b 句值得细看。它把”订单”换成了”客户”。
12,300 笔订单是一个统计数字,读者会算:占全天单量的百分之几?12,300 个客户是一群人,读者会想象:一万两千个人,站在收银台前,刷不出来。
这是同一份数据的两种计量单位,而第二种更有杀伤力。
d 句是这一组里最狠的。它没有数字(除了 51),但它把一个平均分布的失败率,重述成了一个绝对的全称否定:no one could place an order。错误率 34% 意味着大部分单还是成功的;no one could 意味着全灭。
这句是夸大吗? 严格说,是。34% 不等于 100%。但如果那 34% 高度集中在 Northwind 的流量上(母案例里就是:Northwind 受影响最重),那对 Northwind 而言,“那 51 分钟里下不了单”在体感上接近事实。
英文允许你把”局部严重”说成”局部的全称”,只要你的限定语(For Northwind, during those 51 minutes)足够明确。 中文也允许(“那 51 分钟根本下不了单”)。但区别在于:英文里你必须把那个限定语显式写出来,否则就是实打实的假话;中文里你可以靠上下文。
一句话规则:严重化也是三把刀:把”我们”放进句子(We lost)、把”订单”换成”客户”(customers were unable to)、把”比率”换成”全称否定”(no one could)。
3.6 聚焦受影响最重的客户
参考答案
Northwind Retail bore the brunt of the outage.
bear the brunt 是个固定搭配,意思是”承受了主要冲击”。它是这一组里最地道的一句——Native 写事故报告时,十有八九会用这个短语来引出受打击最重的那个对象。
再看几种:
a. Northwind Retail bore the brunt of the outage. (Northwind 首当其冲)
b. It was Northwind that took the biggest hit. (受打击最大的是 Northwind)
c. Northwind accounted for roughly $80,000 of the lost GMV. (8 万里大部分是 Northwind 的)
d. For Northwind, the outage meant 51 minutes of failed checkouts. (对 Northwind 来说,这意味着……)
b 用的是强调句。回想 2.3 学的:强调句把一个成分标记为”你以为你知道,其实你错了”。这里它把 Northwind 从一串客户名单里拎出来,暗示”你以为损失是平摊的,不是”。
d 用了一个介词短语 For Northwind 打头,这是视角切换——把镜头架到 Northwind 的办公室里,从他们的视角描述这 51 分钟。这一句已经在动第十面(视角与叙事距离)了。
为什么这一句在真实通报里是必需的?
因为平均数会稀释痛苦。你说”12,300 笔订单失败,占总单量的 1.8%“,Northwind 的采购总监听到的是”1.8%,还好”。你说”这 1.8% 里有 60% 是 Northwind 的单”,他听到的是”我们被针对了”。
同一个总数,不同的分布描述,客户的心情可以从”能接受”跳到”要索赔”。
而这里有个反直觉的职业技巧:主动把最惨的那个数字说出来,通常比让客户自己发现更安全。 因为客户自己发现的时候,他会默认你在藏。
一句话规则:通报损失时,不要只给总数。给总数 + 最重受灾方的数字。前者满足审计,后者满足情绪。
题组 3 小结:数字是唯一不能撒谎、但可以被摆布的东西
三组做完,回头看一眼。
题组 1 动的是”谁干的”——从 Lin 一路抹到”降级”。 题组 2 动的是”谁该知道”——从 Lin 的能力一路抹到”文档里没有”。 题组 3 动的是”有多惨”——从 12,300 一路抹到”略有波动”,或者一路放大到”51 分钟全灭”。
三根滑杆,中文的翻译几乎不动:
| 最重 | 最轻 | |
|---|---|---|
| 谁干的 | Lin ran a migration that locked the table. | The 51-minute degradation … |
| 谁该知道 | Lin should have known. | There was no documented way. |
| 有多惨 | For 51 minutes, no one could place an order. | We experienced a brief service degradation. |
中文翻译几乎一样,英文思维完全不同。
我知道你现在可能有点不适——“这不就是教人甩锅吗?”
不是。我教你的是听见。
你读别人的英文通报时,如果听不出 The degradation 和 Lin broke it 的区别,你就永远是被摆布的那一个。你读美国同事写的复盘,看不出他在用 There was no ... 悄悄地把责任往流程上引——那不是他在搞你,那是他们行业的标准写法,你只是没学过解码。
至于你自己写的时候往哪边拧,那是你的职业判断。但判断的前提是知道有旋钮。
题组 4(新领域 · 社交):一次表白被拒
母案例的三个题组都在技术现场打转,规则容易被你误读成”程序员英语”。换一个完全不相干的领域试试。
人物: Chen Hao(陈昊),29 岁,某互联网公司产品经理
Sophie Zhang,同公司设计部,共事两年,工位隔了十二米
时间: 2025 年 12 月 24 日,平安夜,21:40
地点: 公司楼下那家叫 Bitter 的咖啡馆,部门常驻据点
经过:
21:38 部门圣诞聚餐散场,只剩他们两个没走
21:40 Chen Hao 说出口
21:41 Sophie 说:"You're a great guy, but I don't think of you that way."
21:43 Chen Hao 说:"没事,我就想让你知道。"
21:45 Sophie 借口第二天要交稿,先走了
21:50 Chen Hao 一个人坐到打烊,把那杯冷掉的美式喝完了
后果:
12/25 - 01/05 两人在公司里装作什么都没发生,走廊遇见会点头
2026-01-06 Sophie 申请转去了另一个设计组
2026-03 Sophie 离职,去了上海
现状(2026 年 9 月):
Chen Hao 已换了工作,两人两年没有联系
他跟朋友的原话是:"那是我做过最对的错事。"
基础句
Chen Hao told Sophie he liked her.
先把默认值念一遍:一般过去、整体事件、主动、零焦点、零言据、真实语气、零名词化、专有名词做主语(无限定问题)、中性语域、旁观者视角。
十项几乎全默认。而且注意——这一句已经是最”重”的一档:两个人的名字都在,动词是 told(有意的言语行为),因果链完整。这一组要练的是:怎么把这份尴尬一层层卸掉,或者反过来,怎么把它钉死。
4.1 转到受事当主语(谁在承受?)
先想三十秒。 你的第一反应大概是:
*Sophie was told that Chen Hao liked her.
语法上不是不能说,但你会觉得别扭。别别扭就对了——先记住这个别扭,答案里会回扣。
参考答案
Sophie heard it from Chen Hao that night. (她那天晚上从他那儿听说的)
Sophie found out how he felt on Christmas Eve. (她知道了他的心思)
Sophie was the one who had to sit through it. (她是坐着听完的那个)
真正的答案要分两路说。
第一路:为什么 *Sophie was told that... 别扭?
因为 tell 是个双及物动词,它需要”告诉某人某事”两个论元。Chen Hao told Sophie [that he liked her] 里,Sophie 是间接宾语,that 从句是直接宾语。你把它变被动,理论上可以,但变完之后句子的信息焦点就跑到了 Sophie 身上——而这句话真正的重点根本不在 Sophie 听见了什么,在 Chen Hao 说了什么。
回扣你的别扭感:你感觉到的别扭,是焦点维度和语态维度打架。被动想让 Sophie 当镜头,但 that 从句太重,抢走了焦点。所以被动做了一半就垮了。
第二路:这一题真正的解法,是换一个”接收”方向的动词。
第三句 Sophie was the one who had to sit through it. 值得单独说。sit through 是”硬着头皮坐完”,用在听课、看烂片、听冗长发言上。把它用在一次表白上,是在说:那不是一场告白,那是一场她不得不忍受的表演。 这句话的责任全在 Chen Hao 身上,而且是带着羞耻感的自我贬低——说这话的人一定是 Chen Hao 自己。
一句话规则:双及物动词变被动会抢焦点。想让受事当镜头,往往不是改语态,是换一个”接收”类的动词(hear / find out / get)。
4.2 转到名词化(把”表白”压成一个东西)
先想三十秒。 你会想到什么?his confession?the rejection?
参考答案
a. His confession lasted forty seconds.
b. The rejection cost him two years of an easy friendship.
c. What happened on Christmas Eve was a forty-second conversation with a two-year aftermath.
三句在名词化的阶梯上各站一级。
a 句 是一级:动作动词 tell 变成动作名词 confession。注意它依然保留了所有格 His——一级名词化还留着施事的座位,你还能问”谁的表白”。
b 句 是二级往上:The rejection。这里发生了一件很妙的事——“拒绝”这个名词,把施事换成了 Sophie。基础句里 Chen Hao 是主语,是行动者;这一句里 rejection 是主语,而做出拒绝动作的人是 Sophie,可 Sophie 连个代词都没出现。
这就是名词化的第二个狠处:它不只是拿掉施事,它允许你偷偷换一个施事进来却不说。the rejection 隐含”有人拒绝了”,谁?句子不告诉你,但每个读者都知道。
c 句 是四级:What happened on Christmas Eve 把整个事件打包成一个空的名词性从句当主语,然后用 a forty-second conversation with a two-year aftermath(一段四十秒的对话,附带两年的后遗症)去定义它。这句是文学化的、适合写进随笔的写法。
为什么这一组里名词化特别有用?
因为社交尴尬的本质是”没人愿意被指名”。你跟共同朋友聊这件事的时候,你会说”他跟她表白了”还是”那件事”?大概率是后者——“那件事之后他俩就怪怪的”。中文里的”那件事”,就是英文里的名词化。
生活类比:He told her he liked her. 像监控录像,人脸清清楚楚。The rejection 像一张打了码的截图,你只知道画面里有个人,看不清是谁。打码这个动作,社交场合里是必需品。
一句话规则:想让一个社交事故变得”可以谈论”,先把它名词化。the rejection / the falling-out / what happened between them —— 这三个是英语里谈论人际尴尬的标配。
4.3 转到语域四档(同一件事,四种说法)
先想三十秒。 这四种场合,你各会怎么说:对他自己、对他哥们、对同事八卦、对两年后的新朋友。
参考答案
对自己(日记): I told her. It went about as well as I'd feared.
对哥们(酒桌上): I shot my shot and missed. Badly.
对同事(八卦): Something happened between them over the holidays.
对陌生人(两年后):We were close once. It didn't work out.
第一档:It went about as well as I'd feared. —— 注意 as well as I'd feared。这是个比较结构 + 过去完成的组合,意思是”跟我之前担心的程度一样差”。它的功效是:它承认了”我早就知道会这样”,这比”我被拒了”痛得多,因为它连”我曾抱有希望”这最后一点体面都否定了。
第二档:shoot one's shot 是近十年的口语新词,意思是”鼓起勇气试一把”,来自篮球。它的功效是把一次情感创伤降格成一次投篮不中——用运动的框架消解尴尬。这是男性社交里极其常见的自我保护机制。中文里你会说”我冲了,没冲下来”,是同一个机制。
第三档:Something happened between them over the holidays. —— 注意三个装置:
Something—— 不定代词,什么都不告诉你between them—— 把两个人捆绑成一个对称的整体,不分施事受事over the holidays—— 时间模糊化,“假期里”,不说哪天
这句是八卦的最高形态:它传达了”有情况”,一个字的具体信息都没给,而且它天然邀请追问。 中文的”他俩好像有点事”是同一个装置。
第四档:We were close once. It didn't work out. —— 两句都用一般过去,都是封闭时间。它的功效是结案。这句话在说:“这件事已经归档了,你不用再问,我也不打算展开。”
回扣这一题的核心:四档的差别不在词汇难度,在距离。
日记 -> 距离 0,主语是 I,情绪裸露
哥们 -> 距离 1,用运动比喻,情绪被包装成玩笑
同事 -> 距离 3,主语变成 Something,人退场
陌生人 -> 距离 10,整件事被压缩成两句话的档案摘要
中文里这四档的词汇差别有多大? 说实话也挺大——但中文的差别全靠你选用哪个词,英文的差别靠主语是谁、限定词是什么、时间状语有多模糊。后者是结构性的,前者是词汇性的。
一句话规则:判断一段英文的社交距离,别看形容词,看三样东西:主语是 I 还是 Something,限定词是 the 还是 some,时间是 on December 24 还是 over the holidays。
4.4 转到虚拟(如果那天没说)
先想三十秒。 你会写 If I hadn't told her... 然后呢?
参考答案
a. If I hadn't told her, we'd still be friends.
b. If I had kept my mouth shut, I'd have had two more years of her.
c. I shouldn't have said anything.
d. I wish I could take it back.
a 和 b 的差别,是这一题最值钱的地方。
两句都是标准虚拟,形式完全一样(If + had done, would have done)。但——
a 的焦点是”关系”(我们本来还会是朋友),b 的焦点是”我”(我本来还能多拥有她两年)。
we'd still be friends 里的 we 把两个人放在平等的位置上,这是一个遗憾。I'd have had two more years of her 里的 of her —— 这个 of 把 Sophie 变成了一个可以被拥有的东西,这是一个占有,而且是不体面的占有。
同一个语法结构,一个介词之差,说话人在读者眼里的人品掉了一档。
这就是为什么虚拟语气不能只学形式。形式是容器,你把什么东西装进去,决定了读者怎么看你。
再看 c 和 d。
I shouldn't have said anything. 是 should have done 的否定。它比虚拟条件句重,因为它是一个直接的自我评价,不是推演。它在说”我做错了”。
I wish I could take it back. 最轻,也最孩子气。could 指向现在或将来(“我希望能收回来”),而不是 could have(“我本可以收回来”)。注意这个细节:I wish I could 表达的是一个不可能实现的愿望,语气里带着撒娇;I wish I could have 才是对过去的标准遗憾。前者更真,后者更规范。
回扣 4.2 的名词化:你发现没有——虚拟语气是名词化的反面。名词化把事件打包成东西(推远),虚拟语气把事件拆成两个平行世界(拉回)。一个用来谈论创伤,一个用来重历创伤。
一句话规则:虚拟条件句的焦点落在 we'd be 上是遗憾,落在 I'd have had ... of her 上是占有。写之前先想清楚你想让读者同情你还是鄙视你。
题组 4 小结:社交场的旋钮和技术场完全一样
把四题摆在一起,你会看到一条和母案例同构的滑杆:
责任最重 --------------------------------------> 最轻
Chen Hao told Sophie he liked her. (两人都在场,动词有意向性)
Sophie had to sit through it. (她是承受者,他是加害者)
The rejection cost him two years. (人被打包成名词)
Something happened between them. (两人被捆成一个对称整体)
It didn't work out. (整件事变成一句档案摘要)
五句,五种尴尬的分布,中文可以全部译成”他跟她表白了,没成”。
这一组给你最实在的一条经验是:在社交话题上,中文和英文的”礼貌策略”都靠模糊化,但英文的模糊化有语法装置(Something / between / over),中文的模糊化只能靠换词(“有点事”)。 所以中国人在英文里谈八卦,要么说得太具体(显得嘴碎),要么干脆不说。学会 Something happened between them 这种句式,你才真正能在英文环境里参与闲聊。
题组 5(新领域 · 医疗):一次体检指标异常
人物: Wang Lijuan(王丽娟),45 岁,市第三中学语文教师,教龄 21 年
时间线:
2026-04-18 单位组织体检,市第一人民医院,做了甲状腺超声
2026-04-25 拿到报告:甲状腺右叶结节,TI-RADS 4a 类,建议穿刺活检
2026-04-26 她自己百度了三次,加了两个病友群
2026-05-06 穿刺活检,手术室外等了 40 分钟
2026-05-11 结果出来:良性(Bethesda II)
那 23 天里:她瘦了 4 斤,把下学期班主任的活儿推掉了,
还写了一条朋友圈,没发出去,一直存在草稿箱
现状(2026 年 9 月):
每半年复查一次,最近一次 8 月 30 日,结节大小无变化
她现在是年级里最积极劝同事体检的人,劝动了 11 个同事去做超声
基础句
The doctor found a nodule in her thyroid.
注意这一句的特殊之处:它的主语是一个职业身份(the doctor),而”发现”这个动作在中文里往往被省略。 你会说”体检发现甲状腺有个结节”——中文的”体检”是个事件名词,它当主语,医生根本不出场。
这就是这一组的第一道墙。先撞一下。
5.1 转到中文那种”事件当主语”(体检发现)
先想三十秒。 中文说”体检发现结节”,英文里”体检”怎么当主语?
参考答案
a. A routine scan picked up a nodule on her thyroid.
b. The scan showed a nodule on her thyroid.
c. There was a nodule on her thyroid.
这三句是三种不同的主语哲学。
a 句 A routine scan picked up... —— 让”一次常规扫描”当施事。这在英文里完全成立,而且极为地道:pick up 有”偶然检出”的意思,暗示这不是医生刻意去找的,是顺手发现的。
中文里”体检发现”就是这个结构——“体检”是个事件名词,它做了”发现”这个动作。所以这一处中英文恰好对得上,是少数可以直接迁移的表达。
那为什么英文不能说 *The physical examination found a nodule?
能说,但很书面,而且 physical examination 是个又长又冷的词,Native 讲故事的时候不会用。他们会用 scan / screening / check-up。这已经是语域维度的问题了(面 9)。
b 句 The scan showed... —— 注意这里动的是言据维度(面 5)。show 是证据动词,它把”发现”从一个人的动作变成了一份文件的陈述。这句话在说:不是医生说的,是片子说的。
这个区别在医疗语境里极其重要。 因为”医生说”和”片子说”在信任和责任上的分量完全不同。医生说可以被质疑(他是不是看错了),片子说是客观记录。
a. The doctor found a nodule. (责任或功劳在人)
b. The scan showed a nodule. (信息来自设备,不可辩驳)
c. The report flagged a nodule. (信息来自文书,可追溯)
d. It looks like there's a nodule. (医生当场的口头判断,最软)
d 句值得单说。 It looks like there's... 是医生在超声室里一边看屏幕一边说的那句话。它用 looks like(看起来像)而不是 is,这是医疗口语里最重要的免责装置——在活检结果出来之前,没有医生会说 You have a nodule。
回扣你的卡点:你刚才想的是”体检怎么当主语”,答案分叉成了两条路——让事件当施事(a),或者让证据当来源(b)。中文的”体检发现”其实同时做了这两件事,英文逼你二选一。
5.2 转到持续段(那 23 天)
先想三十秒。 4 月 18 日做体检,5 月 11 日拿到结果。中间那 23 天,英文怎么说?
参考答案
a. She spent 23 days not knowing.
b. For 23 days, she didn't know whether she had cancer.
c. She had been waiting for the results for 23 days when the call finally came.
a 句最狠。 spend + 时间 + doing 里,她”度过”的方式是 not knowing——一个否定形式的动名词做宾语。
这个结构的妙处在于:它把”不知道”变成了一个她主动在做的活动。不是”她处于无知状态”,是”她把这 23 天花在了’不知道’这件事上”。中文说”她提心吊胆了 23 天”,把状态包装成成语;英文用 spend ... not knowing 把状态包装成活动。
b 句 用 For 23 days 打头,是句首焦点(面 4)。它把 23 这个数字提到了最前面,读者的第一眼就落在时长上。
c 句 是过去完成进行 + 锚点(when the call finally came)。finally 是个态度标记——它是说话人在替她抱怨”等太久了”。
为什么这一面在医疗叙事里特别关键?
因为在医学上,那 23 天什么都没发生(结节没变大,没恶化,没有临床事件)。但从人的角度,那 23 天是整件事的全部。英文的完成进行体是唯一能把”什么都没发生的一段时间”写成”一段煎熬”的形态。
中文怎么说? “那 23 天她一直在等。” 一个”一直”。英文要 had been waiting 三个词加一个形态。
一句话规则:写”等待结果”这类叙事,三件套:spend + 时间 + not knowing(主观煎熬)、For + 时间, ...(客观时长)、had been waiting ... when(有锚点的持续)。
5.3 转到言据与置信度(从”可能”到”确定”)
先想三十秒。 这一题是整个医疗领域的命门:英文里,你有多少种方式说”可能是癌”?
参考答案
a. It might be nothing. (30%)
b. It could be malignant. (40%)
c. The radiologist rated it TI-RADS 4a. (引用分级系统)
d. There's a 5 to 10 percent chance it's malignant. (给出统计)
e. It's benign. (100%)
医疗英语最反直觉的一点来了:
在医疗语境里,医生几乎永远不给百分比,他们给分级系统。
TI-RADS 4a 不是”40% 可能是癌”,它是一个分类。TI-RADS(甲状腺影像报告和数据系统)把结节分成若干类,4a 类的恶性风险是 5% 到 10%。
为什么不直接说 5% 到 10%?
因为分类是行业共识,百分比是个人判断。医生说”你这是 4a”,他引用的是整个放射学会的标准,他个人不承担判断风险;他说”我觉得你有 8% 的可能得癌”,那是他自己的数字,万一错了是他的。
这就是分类系统的社会功能:它们把个人判断变成机构判断。
对比母案例:Pallet 的复盘报告里为什么写 P1 incident 而不是 “a really bad outage”?同一个机制。 P1 是机构分级,really bad 是个人形容词。
再看 a 句 It might be nothing.
这是安慰语里最经典的一句。注意它用的是 might 不是 may,be nothing 不是 be benign。
It might be nothing.—— “可能什么事都没有”,这是人话,是家人朋友说的It may be benign.—— “可能是良性的”,听起来像医话,其实不通,因为”良性”是个检查结果,不是个可能性。你会说It's most likely benign,不会光秃秃地说It may be benign
中文怎么说的? “应该没事的。” 三个字。中文靠”应该”一个情态词 + “没事”一个模糊谓语。英文里 might be nothing 的 nothing 是个很重的词——它把整个”疾病”这个范畴都否定了。
一句话规则:医疗话题上,别用形容词和百分比,用分级系统(TI-RADS / Bethesda / P1 / SLA)。分级系统是英文里”把个人判断外包给机构”的标准装置。
5.4 转到三种场合(对家人 / 对学校 / 对朋友)
先想三十秒。 同一件事,跟老公说、跟学校请假、三个月后跟朋友说——三句话会有什么不同?
参考答案
对老公(当晚): The doctor found something. They want to do a biopsy.
跟学校请假: I need to take a few days off for a medical procedure.
三个月后对朋友: It turned out to be nothing, but those three weeks were hell.
第一句里最值得注意的是 something。
她没说 a nodule,她说 something。这是英语里谈论坏消息时最重要的一个词。 它的功能是:承认有事,但拒绝给它名字。 因为一旦说出 nodule,接下来就是解释什么是结节、什么是 4a、会不会癌变——她自己都还没消化完,她没有力气解释。
中文里对应的说法是”查出点东西”。“点东西”三个字,和 something 完全同构。
第二句:a medical procedure。这是一个四级名词化 + 行业委婉语:
- 基础动作:做穿刺活检(do a biopsy)
- 一级:having a biopsy
- 二级:a biopsy
- 三级:a procedure
- 四级:
a medical procedure
到第四级,你什么都看不出来了。跟单位请假的时候,这个模糊度是刚需——你没有义务告诉同事你的甲状腺怎么了。
procedure 这个词是医疗英语里最大的收纳箱:从切一个脂肪瘤到心脏搭桥,全都叫 procedure。中文的”做个小手术”里的”手术”有同样的收纳功能,但中文还有”小”这个字在弱化它;英文的 procedure 连弱化都不需要,它天生中性。
第三句 It turned out to be nothing —— 注意 turn out to be 这个框架。它的意思是”结果证明是”,它把”良性”这个结论包装成了一次揭晓,而不是一个事实陈述。这句话的语感是”吓死我了,结果是虚惊一场”。
对比:It was benign.(是良性的)——干巴巴的病历口吻。
turn out to be nothing 里的 nothing 又出现了。 注意:医学上它不是 nothing,它是”一个良性的甲状腺结节”。但在生活里,它就是 nothing。这个”医学事实”和”生活事实”的落差,英文用同一个词 nothing 抹平了。
一句话规则:谈论身体问题,英文的四个模糊档:something(还没定性)-> a nodule(有名字)-> a procedure(要做处理)-> nothing(结案)。这四个词的切换,就是一整个就医叙事的骨架。
题组 5 小结:医疗英语的核心不是术语,是”不确定性的语法”
The doctor found a nodule. (人在,动作在)
A routine scan picked up a nodule. (事件当施事)
The scan showed a nodule. (证据当来源)
It looks like there's a nodule. (looks like,当场判断)
TI-RADS 4a. (机构分级,个人退场)
Something. (拒绝命名)
Nothing. (结案)
七句,七种”我对此事知道多少”的立场。
这一组真正想给你的是一条通用规律:
在任何一个”专业权威 + 高风险后果”的领域(医疗、法律、金融、技术运维),英文都发展出了一整套”把个人判断外包出去”的语法装置——证据动词(show / suggest)、分级系统(TI-RADS / P1)、模糊代词(something)、收纳名词(procedure / issue / degradation)。
中文也有这套东西,但中文是词汇层面的,英文是形态和结构层面的。 所以中文母语者在英文里显得”说话太满”——不是因为你不谨慎,是因为你没有顺手的语法工具来表达谨慎。
题组 6(新领域 · 商业):一次投标失败
公司: 澜图科技(Lantu Tech),深圳,做智慧园区软件,80 人
对手: 云枢科技(Yunshu),同城,规模相近
项目: 某市地铁集团 "车站能耗管理平台",预算 480 万元
时间线:
2026-04-02 招标公告发布
2026-05-20 澜图提交投标文件(技术标 + 商务标)
2026-06-03 开标,五家投标
2026-06-18 中标公示:云枢中标,报价 436 万
澜图报价: 512 万
废标原因: 商务标超出招标控制价(480 万),直接出局,
技术标根本没进入评分环节
内部背景: 技术方案得分原本是五家里最高的(内部自评 91 分)
人物: 周敏(Zhou Min),澜图副总经理,负责这次投标
她做了 7 年投标,这是第一次在商务标上翻车
后果:
2026 上半年营收缺口 300 余万
2026-07 公司裁员 9 人,其中 4 人来自交付团队
周敏被扣了当季奖金
现状(2026 年 9 月):
澜图上了一条新流程:所有投标文件必须过"控制价红线"双人复核
周敏现在管一个新设的岗位,叫"投标合规"
基础句
Lantu lost the bid.
一句五个词。现在动它。
先撞墙三十秒:这句话里,“输”是谁的动作?是公司?是周敏?还是那个报价?中文说”我们输了”,英文的 Lantu lost 把公司当成了主语——但真正决定结局的是那个 512 万的数字。基础句把它藏起来了。
6.1 转到被动,并决定要不要 by
先想三十秒。 你会写 The bid was lost. 吗?
参考答案
a. The bid was lost on price. (不推荐,见下)
b. The contract went to Yunshu.
c. We were undercut by Yunshu.
d. We were ruled out on a technicality — our price was above the ceiling.
先说 *The bid was lost. 为什么别扭。
lose 在这个义项上(输掉竞争)是个对称性动词:A lost to B 里 A 和 B 是平等的参与者,不是施事和受事。所以 The bid was lost 把一个”双方博弈的结果”硬生生做成了一个”施加于 bid 的动作”——它暗示有人在 bid 上施加了”输”这个动作,而没说这个人是谁。
回扣你的卡点:你的别扭感来自”被动需要一个施事,但这里没有施事”。所以这一题的真正解法不是变被动,是换一个非对称的动词:
b 句 The contract went to Yunshu. —— go to 是个授予框架,它的语义角色是”接受者”,不是”施事”。它没有说 Yunshu “抢”了合同(那会是 Yunshu took the contract),它只说合同流向了 Yunshu。这是最中性、最不得罪人的说法,行业新闻里全是这种。
c 句 We were undercut by Yunshu. —— undercut 是”以更低价格抢走生意”。这句带了 by,但这里的 by 不滑。为什么?
因为 undercut 这个动词本身就预设了竞争关系,而竞争不是罪。 Mistakes were made by Lin 之所以滑,是因为 make mistakes 是过错,藏过错是遮掩;undercut 是正常商业行为,说”我们被云枢以低价击败”是一次坦率的归因。
这正好验证了第二部分那句规则:by 后面跟人名是不是甩锅,取决于那个动作是不是过错。商业竞争不是过错,所以 was undercut by 完全正常。
d 句 是这一组最值得学的。on a technicality 是”因为一个技术性细节”。这个词把”我们报价超了 32 万”降级成了”我们栽在一个程序性细节上”。
our price was above the ceiling —— ceiling(上限)而不是 budget(预算)。行业术语的语域功能又一次出现:above budget 是经营失误,above the ceiling 是程序不合格。前者要人负责,后者只是不合规。
一句话规则:归因时先分清”输”(lose,对称博弈)、“被授予”(go to)、“被低价击败”(be undercut by)。三者的责任分布完全不同,而 *The bid was lost 是其中最差的一句。
6.2 转到名词化(把”报价太高”变成一根红线)
先想三十秒。 512 万这个数字,怎么变成一个可以写进制度的东西?
参考答案
a. Our price came in 6.7% above the ceiling.
b. The 6.7% overrun on our commercial bid ruled us out before the technical
evaluation even started.
c. The absence of any price-ceiling check in our bidding process was the sole
reason we were disqualified.
a 句 的关键在 came in。come in at / come in above 是报价的行业标准说法,意思是”最终报出来是……”。它的功效是:把 512 万这个主动的决定,说成一个自然产生的结果。 “我们报了 512 万” vs “我们的报价落在了上限之上 6.7%“——后者像是在描述一个物理现象。
b 句 是三级名词化。The 6.7% overrun 把”超出了 6.7%“这个事件压成一个名词,然后让它当主语,干了一件非常具体的事:ruled us out。
注意这个主语的杀伤力:它不是周敏,不是澜图,不是云枢,是一个百分比。一个数字把一家 80 人的公司踢出了局。
c 句 是四级,也是这一组里最”复盘报告”的一句。它用了母案例那个模板:
The absence of X was the sole reason Y.
对照母案例:The absence of any documented abort procedure was the single biggest contributor.
这两句语法骨架一模一样。 这就是为什么我说名词化是可迁移的——你不需要重新学,你只需要认出”这里又是’某个东西不存在’”。
再看 the sole reason 这个选择。 sole(唯一的)而不是 main(主要的)。它排除了其他所有解释——不是技术不行(技术评分最高),不是关系不到位,就是价格。这个限定词是在保护技术团队不被误伤。
一句话规则:商业复盘里的名词化,目的是把”某人的判断失误”改写成”某个控制项缺失”。The absence of X 是万能模板,它会自动把结论引向一个可制度化的行动项。
6.3 转到限定与数字(512 万可以怎么说)
先想三十秒。 512 万、超预算 6.7%、超了 32 万 —— 这三个数字,功效一样吗?
参考答案
a. We bid 5.12 million yuan.
b. We bid 320,000 yuan over the ceiling.
c. We came in 6.7% above the ceiling.
d. We came in slightly above the ceiling.
e. We bid at the top of the range.
五个说法,事实完全一样,代价感差了十倍。
a 句 最中性,只是一个数字。
b 句 320,000 yuan over —— 把数字换算成了超额部分。32 万,是一辆车的钱,是一个工程师半年的成本。绝对数会让读者自己在心里换算成他熟悉的东西。
c 句 6.7% above —— 换成百分比。6.7% 听起来很小。这就是百分比的魔力:它让一个 32 万的绝对缺口,听起来像一个四舍五入的误差。
d 句 slightly above —— slightly(略微)。这是不诚实的开始。 6.7% 算不算 slightly?在招投标里,超一分钱就是废标,根本没有”略微”这回事。但 slightly 这个副词在语法上完全合法,它就是给数字加了一个表情。
e 句 at the top of the range —— 这一句最滑。 它没有说”超了”,它说”在区间顶部”。它把”越界”重新描述成了”贴着上沿”。
中文怎么说的? “我们报得偏高了一点。” —— 同样一个”一点”。
对照题组 3 那三把刀,你会发现规律完全一样:
轻描淡写三把刀:
① 绝对数 -> 比率(320,000 -> 6.7%)
② 动词 -> 形容词(over the ceiling -> slightly above)
③ 越界 -> 位置(above -> at the top of the range)
这三把刀在故障通报、投标复盘、财报说明里通用。 掌握了它,你读上市公司财报的时候会读出很多以前读不出来的东西。
一句话规则:同一个数字,绝对数让人心疼,百分比让人放松,副词让人误解,介词短语让人以为没出事。你选哪个,就是在决定读者知道多少。
6.4 转到虚拟(如果报价低一点)
先想三十秒。 你会写 If we had bid lower... 然后呢?
参考答案
a. If we had bid 480 or under, we'd have made it to the technical evaluation.
b. Had we checked the ceiling one more time, we'd still be in that deal.
c. We should have had a second pair of eyes on the commercial bid.
d. If our process had caught it, nine people would still have jobs.
a 句最朴素,也最有用。 它给出了一个可计算的行动阈值(480 或以下)。这跟母案例那句 If we had caught it at 2:17 instead of 2:26, we'd have saved about nine minutes 是同一个句式——遗憾量化之后就变成了行动项的优先级。
b 句 Had we checked the ceiling one more time —— 注意条件从句里的人称是 we,动作是 check(检查),不是 bid(报价)。
这个选择把失败从”报价策略失误”转移到了”复核流程缺失”。 前者是能力问题(你不懂市场),后者是流程问题(你没检查)。而流程问题是可以写进制度的。
c 句 是 should have —— 直接评价。a second pair of eyes 是英语里极常用的说法,意思是”再一双眼睛看一遍”,即第二人复核。这个说法比 a second reviewer 有人味得多,在内部复盘里非常合适。
d 句 是这一组里最重的一句。
If our process had caught it, nine people would still have jobs.
它把因果链一路推到了裁员。虚拟语气在这里的功能不是推演,是算账——它在说:这个流程缺陷的代价是九个人的工作。
注意它的主语是 our process,不是 we。 如果是 If we had caught it,那就是在指控”我们”;If our process had caught it 是在指控一个系统。而系统是可以修的。
回扣 6.2 的名词化:你看到闭环了——The absence of a price-ceiling check(名词化,指出缺失)和 If our process had caught it(虚拟,指出如果补上会怎样)是同一个行动项的一体两面。一份完整的复盘,两个都要有。
6.5 转到视角(三个月后的澜图)
先想三十秒。 2026 年 9 月回头看 6 月 18 日,句子会变成什么样?
参考答案
a. That bid we lost in June is now the reason we have a bidding-compliance role.
b. She now runs the process that would have caught it — the same process
that missed it in June.
c. Nine people were let go in July. The person who signed off on the price
now reviews every price.
a 句 用的是 the reason we have —— 一个失败的过去事件,被重新表述成一个现在存在的东西的原因。 这是”从创伤到制度”的标准叙事框架。
b 句 是母案例那句人物弧光的变体:
母案例:Lin now runs on-call training — the same engineer who locked the
orders table in 2024.
澜图: She now runs the process that would have caught it — the same process
that missed it in June.
注意这里有个更妙的地方:the process that would have caught it 里又用了虚拟语气(would have)。一个虚拟语气嵌在定语从句里,同时完成了两件事:说明这个流程现在存在,说明它当时不存在。
这就是第十面的高级操作:用一层从句,把”那时”和”现在”焊在同一个名词上。
c 句 是这一组里最不客气的一句。Nine people were let go(九个人被裁)—— let go 是英语里最委婉的”解雇”说法,字面是”让……走”。这句用委婉语说一件残酷的事,而下一句 The person who signed off on the price now reviews every price 冷冰冰地陈述了一个人事安排。
两句并置,读者自己会得出那个不舒服的结论。
一句话规则:人物弧光句的核心不是 now,是 the same。the same + 名词 + who/that 从句 是英文里把”过去的他”和”现在的他”绑在一起的唯一装置。
第一部分收尾:回扣那个”两个半维度”
六个题组做完,六个领域都碰过了:技术运维(题组 1-3)、社交(题组 4)、医疗(题组 5)、商业(题组 6)。
现在回到第一部分开头那个进入卡点。
你当时的答案是”两个半”——时态和语态,也许加一个 maybe。真实的数字是十个。现在我问你第二个问题:
光知道”有十个”有用吗?
没有用。知道有十个旋钮,和你认识的一个人知道吉他有六根弦一样,不构成能力。真正的能力是你知道每根弦拧紧半圈会怎样。
回顾这六个题组,你会发现十面其实在做四件不同的事:
| 这组旋钮 | 管的是 | 题组里的证据 |
|---|---|---|
| 面 1、2、10 | 时间——把事件放在时间轴的哪一格、从哪个年份往回看 | 1.1 的锚点、5.2 的 23 天、6.5 的人物弧光 |
| 面 3、4 | 镜头——谁在场、什么被打光 | 1.2 的 got/was、4.1 的双及物陷阱、6.1 的 go to |
| 面 5、6 | 立场——我凭什么说、这是真是假 | 1.4 的言据梯度、5.3 的分级系统、4.4 的虚拟 |
| 面 7、8、9 | 包装——抽象度多高、数字怎么框、对谁说话 | 1.6 的名词化、6.3 的三把刀、4.3 的四档距离 |
四组,十个旋钮。 你下次写英文的时候,不用十个都过一遍——但你要知道自己在拧哪一组。
一句话收尾:“有几个维度可以动”这个问题问错了层次。真正该问的是——“我想让读者把这件事记在谁头上、记多重,然后我该动哪几个旋钮?“
第二部分:倒推训练(练”读得懂”)
第一部分是生成:给你事实,让你选形态。
第二部分反过来,是解析:给你形态,让你还原说话人的意图。
这个方向的能力,在日常工作里其实用得更多。你读一封美国同事的邮件、读一份 AWS 的故障通报、读一条 Twitter 上的道歉声明——你没有生成任务,你只有解码任务。 而解码失败,往往比生成失败代价更大。
怎么练解码?就一个动作:
每一句话,问自己两个问题: 一、这句话在哪些维度偏离了默认值? 二、他为什么要偏离?
第一问找旋钮,第二问找动机。只有找到动机,你才算读懂。
进入卡点:哪一句更可能出自一份官方声明?
a. Mistakes were made.
b. Lin made mistakes.
哪一句更可能出自一份官方声明?为什么?
先别往下看。二十秒。出声答一遍。
(二十秒)
好,我替你把答案说出来:你多半答了 a,理由是——
“被动语态显得正式。”
对,但那只答了一半,而且是比较不重要的那一半。
先确认你对的那一半:被动确实更”书面”。正式文书里的被动比例远高于口语,这是统计事实。所以你的直觉没错。
但如果你只答到这儿,你会预测下面这件事:
c. Mistakes were made by the engineering team on November 12.
这句也用了被动,也很正式,按你的逻辑它应该”更像官方声明”。可任何一个 Native 看到 c 都会皱眉。 为什么?
因为被动在官方声明里真正干的活,不是”显得正式”,是”不指名”。
Mistakes were made. 里,你连”谁的错”这个问题的语法槽位都找不到——它不是一个”藏起了答案”的句子,它是一个”没有设计这个问题的接口”的句子。这就是第一部分题组 1.6 讲过的:被动是把施事挪到可选的 by 短语里,它还在;而这句话用了复数无定的空主语(Mistakes 不携带任何具体信息)+ 无时间、无地点、无后果,三层抹除叠加之后,“谁”这个问题已经不在句子的语义空间里了。
你加了 by the engineering team,就把那个接口又焊回去了。于是整句从”官方声明”变成了”供词”。
生活类比:官方声明里的被动,像一份没有签名的公告。正式感只是它的字体;不签名才是它的功能。你在一张没签名的公告上补一个签名,它立刻变成了一份承认书——比一开始就签名的文件更危险,因为它暴露了”我本来想不签”这个意图。
计算机类比:Mistakes were made. 是 log.Warn("mistakes occurred") 且不打印堆栈。Mistakes were made by the engineering team. 是把堆栈打出来了,可函数体里还留着一行注释 // intentionally omitting the actor。代码能跑,但每个读这段 diff 的人都会停下来,怀疑你是不是被人逼的。
回扣你刚才的二十秒:你的答案”因为被动更正式”停留在语域维度(面 9)。而这句话真正的机关在语态维度(面 3)和数与限定维度(面 8,复数无定把错误扩散成一团雾)。你答对了症状,没答对病灶。
这恰恰就是第二部分要治的病:你能感觉到一个句子”有点什么”,但你定位不到是哪个维度在动。 下面六句,练的就是这个定位。
核心题组:六句话,一部甩锅简史
下面六句话,描述的是同一件事——2024 年 11 月 12 日凌晨,orders 表被锁。
先别往下看。 把它们按顺序读一遍,问自己:这六句里,施事(干这件事的人)在哪几句里还在?在哪几句里消失了?消失的方式一样吗?
a. Lin ran a migration that locked the orders table.
b. The orders table got locked.
c. The orders table was locked.
d. Mistakes were made.
e. It was the orders table that got locked.
f. What happened was that the orders table got locked.
参考答案:逐句解剖
a. Lin ran a migration that locked the orders table.
在场的:Lin(专有名词,主语)、migration(定语从句的主语)、orders table(从句宾语)。
这是一句责任链完整的句子。你能从句子结构里直接读出一条因果链:
Lin --ran--> migration --locked--> orders table
三个节点,两个箭头,全部由动词提供。没有任何一个环节是隐含的。
这句的默认配置几乎全部保留:主动、一般过去、零言据、零名词化。它是”把话说清楚”这一档的标准形态。
它会用在什么地方?法庭、新闻调查、任何你需要明确归因的场合。 也用在朋友之间的吐槽——因为朋友之间不需要保护谁。
注意一个细节:that locked the orders table 是限制性定语从句,没有逗号。这意味着”锁了订单表”是识别这个 migration 的特征,而不是一个补充说明。换句话说,这句话的预设是:Lin 跑过不止一个迁移,我说的是锁表那个。
如果加个逗号:Lin ran a migration, which locked the orders table.——变成非限制性,意思是”他跑了个迁移(顺带一提,它锁了表)“。一个逗号,从”那个锁表的迁移”变成”他跑了迁移,结果锁表了”。 中文里这个区别完全消失,全靠”那个”和”结果”这种词去补。
b. The orders table got locked.
在场的:orders table。消失的:Lin、migration。
这一句里,施事彻底消失,而且消失得没有痕迹——你连一个”被谁”的空位都看不见。
但更重要的是 got 这个词。
get + 过去分词 是英语里的**“出事了”被动**。它和 be + 过去分词 的区别,值得单独记一辈子:
get 被动:主语经历了一个事件,多半是不好的、意外的、突然的
be 被动:中性陈述,谁对谁做了什么(或者处于什么状态)
感受一下:
a. My phone got stolen. (我手机被偷了——"我倒霉了")
b. My phone was stolen. (我手机被偷了——报告口吻)
c. He got promoted. (他升职了——好事也能用,但仍是"发生在他身上的事")
d. He was promoted. (他被提升了——人事通告口吻)
e. The table got locked. (表出事了)
f. The table was locked. (表被锁了 / 表处于锁定状态)
get 被动的三个特征,缺一不可:
- 动态性:它只表事件,不表状态
- 主语受事性:主语必须是这个事件的”承受者”,而且通常是有生命、或者说话人关心的东西
- 口语性:它在口语里远高于书面,正式报告里
was更常见
回到事故场景。 凌晨三点,Lin 在 Slack 里跟 Priya 说第一句话,他会说哪句?
说 The orders table got locked. 因为它带着”我这边出事了”的味道,适合求援。
而两天后的复盘报告摘要里,会写哪句?
写 The orders table was locked.——更中性、更书面、更适合报告。
同一个说话人,同一件事,两句话,两种场合。 中文都是”订单表被锁了”。
c. The orders table was locked.
在场的:orders table。消失的:Lin、migration。
和 b 的区别,前面已经提过一次,这里讲透:
was locked有两读,got locked只有一读。
读法一(动作被动):有人/什么东西锁了它。(= got locked,只是更中性)
读法二(状态系表):它处于锁定状态。(= remained locked)
怎么验证?加一个持续时间状语试试:
a. The orders table was locked for 33 minutes. (成立:两读都通,但"持续 33 分钟"强烈偏向状态读)
b. The orders table got locked for 33 minutes. (不成立:别扭。get 是事件,事件不能"持续")
c. The orders table was locked at 2:14. (成立:强烈偏向动作读——时间点配事件)
d. The orders table got locked at 2:14. (成立,完美)
for + 时间段 偏向状态,at + 时间点 偏向事件。 这是判断 be + 过去分词 读法的实用工具。
再给你一个更干净的对子:
a. The window was broken for three days. (窗破了三天没修——状态)
b. The window was broken by a kid. (窗被小孩打破了——动作,有 by)
c. The window got broken by a kid. (能说,但很口语,且带"窗/主人倒霉"的味道)
为什么这个歧义会存在?
因为英语的过去分词身兼两职:它既是被动语态的一部分(动词性),又可以做形容词(形容词性)。broken、locked、closed、tired、interested 这些词,都有”形容词化”的用法,而且很多已经收进词典当独立词条了。
而 get 只能接动词性的过去分词——它拒绝形容词化。这就是为什么 got 被动没有歧义。
计算机类比:be + p.p. 是一个重载函数,参数类型决定调用哪个实现。be + p.p. + for-duration 命中状态重载,be + p.p. + by-agent 命中动作重载,光秃秃的 be + p.p. 会有二义性,编译器(读者)按上下文猜。get + p.p. 只有一个重载,没有二义性——代价是它只能在口语域用。
一句话总结 b 和 c:
got locked = "出事了" (事件、口语、主语受害)
was locked = "被锁了 / 锁着" (中性、书面、动作或状态两可)
中文翻译:“表被锁了” / “表锁了” / “表锁住了”。三句中文,两个英文,四种读法。
d. Mistakes were made.
这一句值得单独开一节。
它做了三层抹除。
第一层:被动语态。
标准操作,去掉施事。到这一步,它和 The orders table was locked 没区别。
第二层:主语是空的。
注意主语不是 The orders table,是 Mistakes。“错误”是什么错误?没说。是选错了工具?选错了时间?还是没做 review?这个词本身不携带任何具体信息,它是个占位符。
对比:A mistake was made.(犯了一个错)vs Mistakes were made.(犯了一些错)
复数无定比单数更滑,因为复数把错误扩散成了一团没有形状的雾,而单数至少承认”有那么一件事”。中文里”犯了一些错误”和”犯了一个错误”的差别,远没有这么大。
第三层:没有时间、没有地点、没有后果。
Mistakes were made. 没说什么时候犯的,没说在哪儿犯的,没说造成了什么。它甚至没说这些错误和这件事有因果关系——严格读,它只是一句关于世界的一般性陈述。
到这一层,这句话已经完成了全部三件衣服的脱卸。剩下的只有:“存在过错”这个抽象概念。
现在回答那个关键问题:为什么它一加 by Lin 就破功?
*Mistakes were made by Lin.
语法上,这句完全正确。被动语态带 by 短语,教科书范例。
语用上,这句灾难性错误。
为什么?
因为被动语态的全部功能,是不指名。你选择被动,就是在向听众发出一个信号:“我不想提这个人。”
然后你在句尾把名字说出来。
你等于对着全世界宣布:“我本来想保护他,但我还是说了。”
这在语用学上叫明示的遮掩(ostensible concealment)——比直接说出来更糟。因为直接说 Lin made mistakes. 只是一次普通的陈述;而 Mistakes were made by Lin. 是一次失败的遮掩,它同时暴露了两件事:一、你有过遮掩的意图;二、你因为某种原因没能遮住。
听众会自动追问:既然想藏,为什么又说了?是被迫的?是有记录的?还是你在阴阳他?
生活类比:这就像你写请假条说”因个人原因需请假一天”,然后在括号里补上”(拉肚子)“。前面那句的全部意义就是不说,你一说,前面那句就变成了表演。
计算机类比:Mistakes were made. 是 log.Warn("mistakes occurred") 且不打印堆栈。加了 by Lin,等于你把堆栈打出来了,但函数体里还留着一行 // intentionally omitting the actor。代码能跑,但每个读这段 diff 的人都会停下来看你。
那什么时候会真的出现 by + 人 的被动?
两种:
- 施事是新信息,而且重要。
The migration was killed by Priya, not by Lin.(是 Priya 中止的,不是 Lin)——这里 by 短语是对比焦点,值得一说。 - 施事是无生命但关键的力量。
The outage was caused by a thunderstorm.——“由雷暴引起”,这在事故报告里不但不甩锅,反而是必要的归责。
注意第 2 条的微妙之处:同样是被动态 + by 短语,by 后面跟天气是免责,跟人名是甩锅失败。 因为天气没有利益,人有。
一句话规则:被动 + by + 人名 = 一次失败的遮掩,比直接点名更尴尬。要指名就用主动,要不指名就别加 by。
e. It was the orders table that got locked.
在场的:orders table(而且是焦点)。消失的:Lin、migration。
这一句动了两个维度:语态(3,get 被动)+ 焦点(4,it 分裂句)。
它的预设是:有一样东西被锁了。 它的断言是:是 orders 表。
所以它的使用场景,一定是对方已经知道”出事了”,但可能搞错了对象。
复盘会上,Marcus(客户成功)问:“是不是 Order API 整个挂了?”
Priya 答:It was the orders table that got locked — the API was up, it just couldn't complete writes.
这句在纠偏。
再看它的另一个用法——反驳一个已经流传开的错误说法:
Rumor: The database crashed.
Correction: It was the orders table that got locked. Nothing was corrupted.
这里的强调句在做一件事:先承认”有东西出事了”(预设),再纠正”出事的是哪个”(焦点)。 它比平铺的 The orders table got locked 更有对话感,因为它回应了一个已经存在的说法。
注意这里 got locked 而不是 was locked 的选择。 为什么用 got?因为这句要强调的是”发生了一件不好的事”,不是”表处于锁定状态”。用 was 会把读者的注意力引向状态,用 got 引向事件。焦点结构决定了你必须先把”事件/状态”这个二义性消掉,否则聚光灯打在了不确定的东西上。
计算机类比:The orders table got locked. 是 event{type: LOCK, target: orders_table}。It was the orders table that got locked. 是 event{type: LOCK}.target = orders_table——类型已知,值未知,这一句在赋值。 如果你还没确定类型(到底是锁了还是崩了),你用不了这个结构。
f. What happened was that the orders table got locked.
在场的:orders table。消失的:Lin、migration。而且比 e 消失得更彻底。
这一句叫 wh-分裂句(wh-cleft),也叫伪分裂句。
它的结构是把”发生了什么”整个打包成一个名词性从句 What happened 当主语,然后用 was that ... 给出答案。
它和 e 的差别在哪?
e. It was the orders table that got locked. 预设:有东西被锁了
f. What happened was that the orders table got locked. 预设:发生了某件事(仅此而已)
e 的预设里已经包含了”锁”这个事件类型。f 的预设里什么都没有,只有一个空的”发生了某件事”。
所以 f 是这一组里施事抹除得最彻底、信息承诺得最少的一句。
它会在什么场合出现?
场合一:你还没想好怎么说。
凌晨三点,Marcus 打电话问”到底怎么回事”,Lin 大脑一片空白,他会说:What happened was... uh, the orders table got locked.——这个结构给了他半秒钟的缓冲,因为前半句 What happened was 是个纯粹的填充框架,可以在说出实质内容之前先开口。
场合二:你要把整件事定性为一个客观事件。
复盘报告的第一句:What happened was that a schema migration held a lock on the orders table for 33 minutes. 这句话的巧妙之处在于,它把整件事框定成了一个”客观发生的现象”,然后再往里填内容。读者还没看到内容,就已经被引导进了”这是一个事件,不是一个行为”的框架。
场合三:你要做一个长答案的开头。
What happened was that the migration locked the table, and by the time we caught it, 12,300 orders had already failed. 这个结构特别适合引出多句话的解释,因为 What happened was that 后面可以挂一整个复合句,而 It was X that 后面挂不了这么长。
计算机类比:
e 是:assert(locked_thing == ORDERS_TABLE) // 类型编译期已知,断言值
f 是:event = Event(); event.description = ... // 连类型都是运行期才知道的
生活类比:e 像说”坏掉的是刹车”,f 像说”情况是这样——刹车坏了”。后者的”情况是这样”是一个空的开场,它把所有信息都推迟到了后面。中文里”情况是这样的”和英文的 What happened was that 是同一个填充装置。
六句总表
| 句 | 施事 | 焦点 | 预设 | 语域 | 典型场合 |
|---|---|---|---|---|---|
| a | Lin 在场 | 无标记 | 无 | 中性 | 调查、吐槽、法庭 |
| b | 消失 | 无标记 | 无 | 口语 | 求援、现场同步 |
| c | 消失 | 无标记 | 无 | 中性偏书面 | 报告、叙述 |
| d | 消失 | 无(主语是空的) | 无 | 公关 | 道歉、政客声明 |
| e | 消失 | orders table | 有东西被锁了 | 中性 | 纠偏、反驳 |
| f | 消失 | 整个事件 | 发生了某件事 | 口语偏中性 | 开场、缓冲、定性 |
六句话,同一件事,六种在读者心里种下的”现实”。
把它们按”施事的可见度”排序:a > (b ~ c ~ e ~ f) > d。
把它们按”信息承诺量”排序:a > e > f > b ~ c > d。
注意 d 在两个排序里都在最末端。Mistakes were made. 是这一组里承诺最少、也最滑的一句。 它甚至不承诺”错误和这次事故有关”。
混合维度题组:8 句,练组合识别
单维度你大概能认出来了。真实语篇里,一句话很少只动一个旋钮。下面八句,每句都至少动了两个维度。
你的任务:标出每句动了哪些面,然后猜说话人想达到什么效果。
1. By the time Lin woke up, the error rate had already hit 34%.
2. The logs suggest the migration was the trigger.
3. Had Lin used gh-ost, this wouldn't have happened.
4. There was a 51-minute service degradation affecting approximately 12,300 orders.
5. Northwind Retail, our largest account, was hit hardest.
6. We're looking at roughly 12,300 failed orders.
7. Pallet has now gone 22 months without a P1 incident.
8. Lin now runs on-call training — the same engineer who locked the orders table in 2024.
参考答案
句 1:By the time Lin woke up, the error rate had already hit 34%.
动的维度:面 1(过去完成 + 锚点 2:26)、面 4(焦点:already 是焦点小品词)、面 8(the error rate 定指,因为上下文里已经提到了)、隐含面 10(叙事视角跟着 Lin 走)。
效果:这句在做一件事——为 Lin 开脱。
看它的因果暗示:“他醒来之前,错误率就已经到 34% 了。“言下之意:就算他 2:19 听见了 PagerDuty,也挽回不了多少。 这句把 2:19 到 2:26 这七分钟的”失职”在时间轴上相对化了。
对比另一句事实完全一样的:
a. Lin woke up at 2:26, by which time the error rate had already hit 34%.
b. Lin didn't wake up until 2:26, and by then the error rate had hit 34%.
b 句里 didn't ... until 是”迟迟才”的框架,带明显的责备。a 句里 woke up at 2:26 是中性时序。主句的事实一模一样,从句的一个框架词把责任翻了个面。
这就是解码能力值钱的地方:这两句在中文里都是”他 2:26 才醒,那时错误率已经 34% 了”。
句 2:The logs suggest the migration was the trigger.
动的维度:面 5(言据:the logs suggest)、面 7(the trigger 名词化,把”触发了事故”这个动作压成一个名词)、面 8(the migration 定指,the trigger 定指)。
效果:把因果判断降级为基于证据的推断。
注意两个选择:
第一,suggest 而不是 show。show 是”证据直接证明”,suggest 是”证据指向”。写报告的人选了较弱的那个,说明他还留了余地——万一后面发现真正的触发因素是别的东西,他可以说”我当时说的是 suggest”。
第二,was the trigger 而不是 triggered。The migration triggered the outage 里,migration 是施事,做了动作。The migration was the trigger 里,migration 是一个被指认的角色——它”是”触发器,这是一个分类判断,不是一个动作描述。
分类比动作温和。 因为动作暗示”它做了什么”,分类只是”它属于哪一类”。
中文呢?“日志表明是迁移触发的”和”日志显示迁移触发了这次事故”——中文里这个差别几乎不存在,因为我们没有”名词化降级”这个装置的直觉。
句 3:Had Lin used gh-ost, this wouldn't have happened.
动的维度:面 6(虚拟语气 + 倒装省略 if)、面 8(this 指代整个事件,单数定指)。
效果:在陈述一个反事实,同时隐含责备——但责备得很轻。
这句有意思的地方在于它的两面性:
- 它说了”Lin 没用 gh-ost”(反事实标记),这指向 Lin
- 但它没说”Lin 应该知道要用 gh-ost”,它只是说”如果用了就好了”
对比:
a. Had Lin used gh-ost, this wouldn't have happened. (客观推演,责备轻)
b. Lin should have used gh-ost. (直接评价,责备重)
c. Why didn't Lin use gh-ost? (质问,责备最重)
a 的精妙在于它把评价伪装成了推演。说话人没有下判断,他只是描述了一个未发生的世界。但听众会自动补出那个判断。
这就是为什么 Had X done Y, Z wouldn't have happened 是职场里最高级的批评句式——它完成了批评的全部功能,而说话人手上是干净的。
倒装值得单说。 Had Lin used = If Lin had used。倒装把 if 拿掉、把 had 提到主语前,功效有两个:一是更书面(适合报告和正式发言),二是降低条件句的假设感——它读起来更像”事实上他没用”,而不像”让我们假设一下”。
一句话:虚拟倒装 = 一个用陈述语气说出的反事实。它是英语里最礼貌的批评方式。
句 4:There was a 51-minute service degradation affecting approximately 12,300 orders.
动的维度:面 3/4(存现句,事件当容器)、面 7(名词化:service degradation,51-minute 作定语)、面 5(approximately 是精度标记,和言据同族)、面 8(a 不定指,首次提及;approximately 12,300 数字的软限定)。
效果:这是公关/对外通报的标准形态。
三个装置一起工作:
There was ...把事件变成容器,人和动作退出画面service degradation把”故障”降级成”服务质量下降”(不是 outage,不是 failure)approximately把数字软化成约数,留出回旋空间
注意 approximately 这个词的位置。 它紧贴数字,而不是在句尾说 “The number is not exact”。英文的精度标记必须贴着被修饰的数字,因为它是限定词系统的一部分。中文说”大约一万两千笔”,“大约”也是贴着数字的——这一处中英文恰好一致,是少数你能直接迁移的地方。
再看一个细节:affecting approximately 12,300 orders,用的是现在分词 affecting 而不是定语从句 which affected。分词短语把”影响了一万两千笔订单”降级成了一个附属信息——它不再是句子的主要断言,只是附着在 degradation 上的一个修饰。
对比:
a. There was a 51-minute service degradation affecting approximately 12,300 orders.
(主要断言:有降级。订单数是附属说明。)
b. A 51-minute service degradation affected approximately 12,300 orders.
(主要断言:降级影响了一万两千笔订单。两者平级。)
a 把数字降级成了脚注,b 把数字放在了台面上。 事实一样,重量不同。
句 5:Northwind Retail, our largest account, was hit hardest.
动的维度:面 3(被动 was hit)、面 4(焦点:非限制性插入语 our largest account)、面 9(语域:hit 是口语化的动词,正式报告里会写 was most severely affected)、面 8(最高级 hardest 是一种限定)。
效果:安抚客户 + 铺垫赔偿。
这句的潜台词是:“我们知道你受的伤最重。”
注意 was hit hardest 用了被动 + 无 by。谁打的?不写。这既是避免说”是我们打的”,也是避免说”是天气打的”——在这个阶段,归因还没定,说话人选择不表态。
而 our largest account 这个插入语是给内部读者看的(如果是内部通报),或者给 Northwind 看的示好(如果对 Northwind 说)。它在提醒所有人:这是最大客户,处理要小心。
语域的落差值得注意:was hit 是很口语的说法(“被打击了”)。在正式文档里你会看到 was most severely impacted。同一份文件里混用这两种语域是很常见的——前半句正式,后半句突然口语化,往往是说话人想表达一点情绪。 这是解码的一个抓手:语域突变的地方,通常藏着说话人的真实态度。
句 6:We're looking at roughly 12,300 failed orders.
动的维度:面 10(视角:we're looking at 把叙事距离拉近到”我们现在正在审视数据”)、面 1(现在进行时,但这个进行时不是”正在发生”,是”当前阶段的认知活动”)、面 5(roughly 精度标记)、面 9(looking at 口语)。
效果:把结论包装成”进行中的初步估计”。
这句最值得讲的是 We're looking at。
它是一个认知动词的进行体。严格说,“看”这个动作不是”正在看数据”——说话人可能在打电话,手上什么都没有。这个进行体表的是:“我们当前处于’审视这个问题’的阶段,这是这个阶段的产物。”
英语里有一大批这样的用法:
a. We're looking at roughly 12,300 failed orders. (目前估计约……)
b. We're thinking the migration was the trigger. (我们目前的想法是……)
c. I'm wondering if we should roll back. (我在想是不是该回滚)
d. We're seeing elevated error rates. (我们目前观察到……)
这些句子的共同点是:用一个进行体,把一个断言降格为”阶段性看法”,从而给自己留出修正的余地。
如果换成一般现在时 We think the migration was the trigger,就成了明确表态。换成 We're thinking,就成了”这是初步的,可能改”。
这是英语里极其重要的一个免责装置,而教科书几乎不讲。 教科书会告诉你”现在进行时表正在发生”,然后你看到 I'm wondering if you could help me 就懵了——我明明不是”正在 wonder”,我只是想礼貌一点。
计算机类比:We're looking at X 相当于返回一个带 TTL 的缓存值。We think X 相当于写进数据库。前者过期可以不算数,后者要进审计日志。
一句话规则:进行体 + 认知动词(think / wonder / look at / see / hope)= “这是我此刻的想法,不是我的最终结论”。这是英语口语里最常用的软着陆装置。
句 7:Pallet has now gone 22 months without a P1 incident.
动的维度:面 1(现在完成时,时间窗口从过去延续到现在)、面 2(完成性:go 22 months without 把”没出事”这个状态铺成一段可度量的持续)、面 9(now 是态度标记,强调”到现在为止”)。
效果:把一段”什么都没发生”的时间,变成一项成就。
这句的语法难点在 go。
你不能说 *Pallet has had 22 months without a P1 incident(别扭),也不能说 *Pallet is having(错,have 是状态动词)。你用 go——一个动态动词,它可以承载”时间流逝”这个意义。
英语里有一批这样的”时间流逝”表达:
a. Pallet has gone 22 months without a P1 incident.
b. We've had 22 months of clean on-call. (have + 时间段 + of,这个可以)
c. It's been 22 months since our last P1. (最常用的中性说法)
d. Twenty-two months have passed without a P1. (最书面)
c 是你在真实对话里听到最多的:It's been 22 months since our last P1.
它的中文翻译是”我们 22 个月没出 P1 了”。 中文里”了”一个字搞定。英文里你必须同时做三件事:现在完成时(has been)、since + 过去时间点(our last P1)、以及把”22 个月”这个段放在主语位置。
为什么中文这么省? 因为中文的”没出 P1 了”里,“了”已经承担了”从过去某点持续到现在”的全部语义。中文把时间结构挂在句尾助词上,英文把它焊在动词形态 + 介词(since/for)+ 语序上。这是全书核心命题的又一次验证。
顺便提一个中国人极常犯的错:
*Pallet is having 22 months without a P1 incident.
两个错误叠在一起:have 表”拥有”是状态动词不能用进行体;而且”22 个月持续到现在”要求完成体。中文”我们正在拥有 22 个月不出事故”这句话本身就很怪,但中文不强迫你选形态,所以你会本能地用最简单那个。
句 8:Lin now runs on-call training — the same engineer who locked the orders table in 2024.
动的维度:面 10(视角:双层叙事距离)、面 1(现在时 runs + 过去时 locked,两个时间平面并置)、面 8(the same engineer 定指 + same 这个限定词制造的反差)、面 4(破折号后的同位语是焦点位置)。
效果:用一个限定词和一个破折号,完成了人物弧光。
这句是全书人设反转的语法形态。
拆开看:
Lin now runs on-call training—— 现在时,叙述者的”现在”(2026 年 9 月)—破折号,制造停顿和悬念the same engineer who locked the orders table in 2024—— 过去时,闪回到 2024
the same 是这一句的灵魂。 它做了一件很妙的事:它同时断言了两个时间点上的同一个人,然后让读者自己感受到这两者之间的张力。
如果去掉 same:Lin now runs on-call training. He locked the orders table in 2024.——平淡无奇,像两件不相关的事。
加上 the same engineer who:立刻变成”你敢信吗,就是那个人”。
中文怎么表达? “Lin 现在负责 on-call 培训——就是 2024 年锁了订单表的那个工程师。”
中文靠”就是……那个”这个框架。英文靠 the same + 名词 + who 从句。装置的材质不同,功能完全相同。
这句话还藏着第四个维度:视角。 叙述者站在 2026 年,回头看 2024 年,他知道结局。这种”事后视角”在英语里有一个专门的语法后果:你可以自由地在现在时和过去时之间跳,因为读者知道你的坐标是现在。
反过来,如果你在写 2024 年当时的实时日志,你就不能跳——你不知道后来会怎样。
这就是第十面说的”叙事距离”:你站的年份,决定了你能用哪些时态。 中文里这个约束不存在,因为中文的时态是隐性的。
混合题组小结:解码的三步法
做完这八句,给你一个可复用的解码流程:
第一步:扫形态。 哪些地方没走默认?(had done / was done / may have / There was / It was ... that)
第二步:问代价。 他为了用这个形态,放弃了什么?(放弃指名?放弃确定性?放弃状态/动作的区分?)
第三步:猜动机。 他放弃的那个东西,是不是正好是他不想承担的?
第三步是关键。语法形态的选择,几乎总是在规避某种责任或风险。
- 用被动 -> 规避”谁”
- 用言据 -> 规避”你怎么知道”
- 用情态 -> 规避”万一错了”
- 用名词化 -> 规避”有人在做这件事”
- 用进行体 + 认知动词 -> 规避”这是我的最终结论”
把这张表记住,你读英文技术文档的能力会立刻上一个台阶。
跨领域倒推小测:四句话,四个完全不同的场景
前面十四句全在 Pallet 那次事故里。规则要通用,就得换个领域还能解码。
下面四句,一句医疗、一句商业、一句社交、一句公共事务。每句都至少动了两个维度。你的任务还是那两步:找出旋钮,猜出动机。
1. The scan flagged something we'd like to take a closer look at.
2. The contract was awarded to another vendor.
3. We've decided to see other people.
4. Residents are advised to remain indoors until further notice.
参考答案
句 1:The scan flagged something we'd like to take a closer look at.
动的维度:面 3(让 the scan 当施事,医生退场)、面 5(flag 是证据动词,“标出”而非”发现”)、面 8(something 不定代词,拒绝命名)、面 9(we'd like to 是医疗行业的标准软化语,take a closer look 是 biopsy 的委婉说法)。
效果:这是一句”说了但什么都没说”的话。
它传达的信息精确到一个字:有异常,要进一步检查。它回避的信息有三个:异常是什么、有多严重、进一步检查是什么(穿刺?手术?)。
flagged 这个词是医学英语的杰作。 它的本义是”插旗标记”,来自版本控制(flag a commit)和质量检测(flag a defect)。它的语义是”系统认为这里值得注意”,不是”我认为这里有问题”。所以 The scan flagged X 把判断权交给了机器,医生只是转述。
对比:
a. The scan flagged something. (机器说的)
b. I found something. (我说的,我负责)
c. You have a nodule. (诊断,我负责,且已成事实)
从 a 到 c,医生的承诺在递增。 真实门诊里,医生会一路从 a 走到 c,而且走得很慢——每一步都在等患者的反应。
回扣第二部分开头那个卡点:Mistakes were made 靠”不指名”免责,这句靠”让机器当主语”免责。装置不同,功能一样:把判断主体从人换成非人。
句 2:The contract was awarded to another vendor.
动的维度:面 3(被动 + to 引出接受者)、面 7(award 是个”授予”动词,它把商业竞争重新描述成颁奖)、面 9(vendor 是行业中性词,不是 competitor)。
效果:这是”我们输了”这句话里,最不丢人的说法。
注意三个选择:
第一,用 another vendor 而不是 our competitor 或者 Yunshu。不定指的 another 把对手变成了一个可替换的选项——“换了别人”比”输给了云枢”体面得多。
第二,用 award 而不是 give 或 sell。award 的语义里包含”经过评审后的授予”,它预设了一个公平的程序。所以这句在说:不是我们不行,是评审的结果如此。
第三,被动无 by。谁授予的?没说。这个 by 的空位很关键——如果写成 The metro group awarded the contract to another vendor,就把客户摆到了”做出这个决定的人”的位置上,读起来像在暗示客户有眼无珠。
中文怎么说? “合同给了别家。” 一句话,同样模糊,同样没有 by。这一处中英文高度一致——因为中文的”给了”也不要求施事出场。
一句话规则:be awarded to 是商业英语里”输得起”的说法。它把竞争重构成评审,把对手重构成可替换项,把决定者留在阴影里。
句 3:We've decided to see other people.
动的维度:面 1(现在完成,强调”这个决定已经做出并且现在有效”)、面 3(we 把两个人捆成一个共同决策体)、面 9(see other people 是分手的标准委婉语)。
效果:这是英语里最著名的一句分手话术,值得拆到骨头里。
为什么是 we 而不是 I?
I've decided to see other people 是”我决定分手”。We've decided 是”我们一起决定分手”。大部分分手根本不是共同决定,但这句话把它说成了共同决定。
功效有两个:一是减轻说话人的愧疚(不是我甩你,是我们商量好的),二是堵住对方的追问——你没法跟一个”我们共同的决定”争辩,你只能跟一个人争辩。
为什么是现在完成而不是一般过去?
We decided to see other people. 是在陈述一件发生过的事(可能是一次争吵中的气话)。We've decided 是宣布一个当前有效的状态——它已经生效了,现在是事实。
中文怎么说? “我们想分开一段时间。” ——中文也用”我们”,也用委婉语。这一处中英文的礼貌策略完全一致。 但中文没有形态手段来区分”我们决定过”和”我们已经决定了”,英文有。
一句话规则:We've decided to X 这个框架(现在完成 + 复数主语 + 委婉动词)是英语里宣布坏决定的标准装置,它同时完成了三件事:分摊责任、宣告生效、软化措辞。
句 4:Residents are advised to remain indoors until further notice.
动的维度:面 3(被动,are advised)、面 9(advise / remain / further notice 全是官方书面语)、面 8(Residents 复数零冠词,泛指一类人,不带任何个体)、面 4(until further notice 压在句尾,是新信息,也是最模糊的信息)。
效果:这是官方通告的标准形态,它把一道命令伪装成一条建议。
are advised 是这一句的核心。 它不是 must(必须),也不是 should(应该),是”被建议”。法律上它不产生义务,事实上它产生了全部义务。
为什么不用 must?因为 must 意味着发布者要承担”如果不遵守出了事,我负责”的隐含承诺;are advised 意味着”我告诉过你了,出事是你的选择”。
until further notice 是一个无限期的时间框架。它没有终点。台风暴雨预警、地铁停运、场馆关闭,全用这个短语。它的功效是:发布者保留了随时延长的权利,而不必再次道歉。
中文怎么说? “请居民尽量避免外出,后续通知另行发布。” ——中文也用”请”和”尽量”,同样的软化。
对比一下紧急程度:
a. Residents are advised to remain indoors. (建议,最软)
b. Residents should remain indoors. (应该,中等)
c. Residents must remain indoors. (必须,命令)
d. Evacuate immediately. (立即撤离,无主语祈使句,最强)
d 句没有主语、没有情态动词、一个副词打头——这是紧急命令的形态。从 a 到 d,句子在变短,主语在消失,情态在消失。 这个规律值得记住:英文里,紧急度和句子的完整性成反比。
第二部分收尾:回扣开头那个”因为被动更正式”
回到本部分开头的卡点。
你当时的答案是”被动显得正式”。现在你应该能给出一个完整得多的答案:
Mistakes were made. 之所以像官方声明,是因为它同时动了四个维度:
面 3 被动语态 —— 拿掉施事的语法位置
面 8 复数无定主语 —— "错误"不携带任何具体信息,是一团雾
面 5 零言据标记 —— 不说"我们调查发现",直接断言一个抽象概念
面 9 公关语域 —— 短句、无修饰、无情绪
“正式”只是最后那一条的表现,而且它是最不重要的一条。你把 Mistakes were made 换成 It has come to our attention that certain procedural irregularities transpired.,够正式了吧?但它不像官方声明,它像拙劣的模仿。
这才是解码能力的本质:
不是”这句话听起来像什么”,而是”他为了听起来像这样,放弃了什么,以及他放弃的那个东西是不是正好是他不想承担的”。
回头看这一部分新增的四句话,你会发现它们放弃的是同一类东西:
医院放弃的是"我在下判断" -> 让 scan 当主语
输家放弃的是"我们输了" -> 让 contract 当主语,用 award
分手方放弃的是"是我想分" -> 让 we 当主语
当局放弃的是"我在命令你" -> 用 are advised
四句话,四个领域,同一个动作:把施事换成非人,或者换成复数。
记住这个模式。它会在你读到的每一份英文公告里出现。
第三部分:中文回译训练(暴露中文的信息缺口)
这一部分是全册最”反直觉”的一段。
前面两部分给你的都是英文,让你转。从这一节开始,我给你中文,让你翻——然后你会发现一件让你恼火的事:
很多中文句子,你翻不动。不是因为你英语差,是因为中文原句的信息本来就不够。
先说清楚这是怎么回事。
中文是一种**高语境(high-context)**语言。大量的信息不写在句子里,而是外包给语境——谁在说、对谁说、什么时候说、之前聊了什么。只要这些信息在场,中文句子可以短到令人发指:“系统挂了。“四个字,全公司都懂。
英文不许你这么干。英文在动词形态上有一批强制槽位:时、体、数、语气、言据(可选但有代价)。你不填,句子就不合法;你乱填,句子就错意。
所以当你拿到”系统挂了”要翻英文的时候,你卡住的那个瞬间,本质上是:
你在等一个中文里根本不存在的东西——一个明确的时间坐标、一个明确的体、一个明确的言据立场。
中文原句没有给你,因为你从来不需要它给你。但你翻英文的时候需要。
于是有了这一节的核心训练法:翻之前,先问三个问题。
这三个问题不是修辞。它们是补全信息缺口的具体步骤。每一题我都会把这三个问题摆出来,你练熟之后,这个动作会变成自动的——你听到中文的瞬间,脑子里会同时跑起三个查询。
进入卡点:现在就翻这句话
别往下看题,先在这儿停一下。
给你一句中文,请你立刻翻成英文。不要想,第一反应是什么就说什么,最好出声。
“系统挂了。”
(翻完了吗?)
我猜你翻出来的是这一句:
The system is down.
或者:
The system crashed.
现在我问你:你凭什么选这句?
你一定会愣一下,然后反问一句:
”……对谁说?”
停。这就是这一节的全部内容。
你刚才那一秒的迟疑,是整个第三部分最有价值的一秒。因为你在没有任何人提示的情况下,自己意识到中文不够用了。
仔细看看你刚才脑子里跑过的东西:
"系统挂了" ——
是现在正挂着,还是挂过又好了? -> 你不知道,中文没说
挂了多久? -> 你不知道,中文没说
是跟同事在群里喊一声,还是写进客户通报? -> 你不知道,中文没说
是谁说的?你亲眼看见了,还是听人说的? -> 你不知道,中文没说
四个问题,中文一个都没回答,而英文要求你每一条都填。
为什么会这样? 因为”系统挂了”这四个字是在一个信息完备的场景里说出来的——凌晨三点的 Slack 群里,所有人都在事故里,谁都知道现在是挂着还是好着、挂了多久、为什么。
中文的句子是为”在场的人”设计的。英文的句子是为”不在场的人”设计的。
计算机类比:中文的这句话像一个只带 payload 的事件对象,发送方和接收方共享一份 schema,字段默认值全靠上下文。英文要求你把这个对象序列化(serialize)——序列化的时候,所有依赖上下文的隐式字段都必须显式写出来,否则对面 parse 不出来。
生活类比:中文像你跟同屋说”没奶了”——他全懂(是冰箱里的牛奶,不是奶粉,不是你的母乳)。英文像你给一个从没进过你家的人发消息,你得写”冰箱里那盒全脂牛奶喝完了”。
回扣你刚才那句 The system is down.:它不是错的,它是你替中文补了四个默认值之后的产物。你默认了”现在还挂着”(所以用了 is)、默认了”对内部人说”(所以用了 down 这么随意的词)、默认了”我亲眼所见”(所以没有言据标记)。
这三个默认,很可能全错。
这一节要教你的,就是把这种”自动补全”变成”显式选择”。下面每一题,我都会先逼你问三个问题,再给答案。
题 1:“系统挂了。”
先停下来。翻之前,我必须搞清楚哪三个问题?
- 什么时候挂的,挂了多久?(决定时和体)
- 现在恢复了没有?(决定用状态还是用事件,决定能不能用现在时)
- 对谁说?同事、领导、还是客户?(决定语域,以及能不能用”挂”这么随意的词)
参考答案
这三个问题一问,“系统挂了”这句中文至少裂成四种英文。
分支 A:正在挂,跟同事在 Slack 上说
The system is down.
或者更具体:Order API is down.
down 是形容词,表状态。这句说的是”它现在处于不可用的状态”,不提它什么时候崩的、为什么崩的。
注意: 你不能用 *The system is crashed.(详见第四部分题 2)。crash 是瞬时动词,没有”正在崩溃状态”这个读法。要状态,用 is down。
分支 B:刚挂,正在通报
The system just went down.
Order API crashed at 2:17.
went down 是事件。这句回答的问题是”发生了什么”。
分支 C:已经恢复了,事后陈述
We had an outage this morning — about 51 minutes.
The system was down for about 51 minutes.
was down for 51 minutes 是状态 + 持续段。这句回答的问题是”影响持续了多久”。
分支 D:对客户说
We are currently experiencing a service disruption.
或者已经恢复了:
We experienced a brief service disruption between 14:00 and 15:30 UTC, which has now been resolved.
看到差别了吗?对同事说”挂了”,对外说”我们正在经历一次服务中断”。
而且对客户的版本里多了一堆中文里没有的东西:明确的时间窗(between 14:00 and 15:30 UTC)、明确的结论(which has now been resolved)、以及一个刻意软化的词(disruption,不是 outage 更不是 crash)。
一句话:“系统挂了”这四个字里,藏着四个英文句子,和一个必须你自己补上的世界观。
题 2:“我们修了一个 bug。”
翻之前,三个问题:
- 哪个 bug?听话人知道我说的是哪一个吗?(决定
a还是the) - 什么时候修的?到现在为止有影响吗?(决定一般过去还是现在完成)
- 强调结果还是强调过程?对谁汇报?(决定动词选择和信息包装)
参考答案
分支 A:刚修完,跟同事说,结果导向
I've fixed the bug.
或者更实用:I've fixed it — can you re-run the test?
这里用现在完成,因为重点不在”什么时候修的”,而在”现在修好了,你可以继续了”。这是现在完成时最核心的用法:过去动作对当下造成的可操作状态。
对比 I fixed the bug.——一般过去,只是陈述一件往事。如果你接着说 “Can you re-run the test?”,用过去时会显得两句之间脱节。
分支 B:周报里,对领导,带时间和部位
We fixed a null-pointer bug in the payment service on Tuesday.
这里用 a 而不是 the——因为周报的读者可能不知道你说的是哪个 bug。用一般过去(on Tuesday 是封闭时间)。
分支 C:强调过程(想让领导知道你很辛苦)
We spent two days tracking down a race condition in the payment service.
注意这里连”修”这个动词都没出现。句子的谓语是 spent two days tracking down——强调”定位”这个过程,修复是顺带的。
这在真实汇报里极其常见,因为定位的难度通常远大于修复的难度。中文说”我们修了个 bug”,把两天的定位工作压缩成了一个”修”字。
分支 D:强调现状(别人问”现在还有问题吗”)
The bug is fixed.
这是系表结构,fixed 是形容词化的过去分词,表状态。对比 The bug has been fixed.——被动完成,表事件。
中文都是”bug 修好了”。英文里一句在回答”现在什么状态”,一句在回答”发生了什么”。这就是导论第 4 题那个对子的实战版。
分支 E:对客户说
We've resolved the issue you reported.
issue 而不是 bug。bug 是内部语言,对客户说 bug 等于承认产品有缺陷。客户视角只有 issue。
一句话:“我们修了一个 bug” 里,“我们”是谁、“一个”是哪个、“修”是过程还是结果——三个问题,五个分支。
题 3:“这个问题很严重。”
这一题是第三部分里最重要的。翻之前,三个问题:
- 对谁说?(这一问的权重超过其他所有)
- “严重”的衡量标准是什么?影响面、紧急度、还是客户情绪?
- 这是在定性,还是在请求资源?
参考答案
分支 A:对同事(口语,情绪)
This is bad.
This is a big deal.
分支 B:对领导,要资源(升级)
This is a P1 — we need all hands on it.
This is critical. I'd suggest we page Priya now.
注意 P1 和 critical 都是等级词,它们把”严重”从主观感受变成了一个组织内部的客观标签。这是技术团队沟通的核心技巧:用严重等级代替形容词。
分支 C:对客户(承认,但控制范围)
We understand this is a serious issue, and we're treating it as our top priority.
这句的巧妙在于:We understand 是认知动词的现在时(不是进行体,所以不是”目前看法”,是确认),this is a serious issue 承认了严重性,we're treating it as our top priority 给出了行动。
它没有承诺任何具体的时间或赔偿。 这是客服话术的标准结构:承认 + 表态 + 不给承诺。
分支 D:写进复盘报告
这一条是重点。
你会怎么写?This problem is very serious.?
Native 不会这么写。他会这么写:
The incident resulted in a 34% order failure rate at peak, 12,300 failed orders, and approximately $80,000 in lost GMV for Northwind Retail, our largest account.
看到了吗?报告里没有”严重”这个词。
这就是这一题要教的核心:
在英文技术写作里,“很严重”不是一个可以写进报告的评价,它是一个必须被替换成度量的占位符。
为什么?因为 very serious 是一个主观判断,读者无法验证、无法比较、无法行动。而 34% failure rate at peak 是一个可验证的数据,读者自己会得出”很严重”的结论。
英文技术写作的黄金法则之一:
Show the number, not the adjective.
中文报告里我们习惯写”影响严重,需高度重视”。英文报告里这句话会被读成”你没有数据”。
再看一个对照:
a. The impact was significant. (很大——多大?)
b. The impact was limited to order creation. (影响仅限于下单——范围明确)
c. The impact was 51 minutes of degraded service. (影响是 51 分钟的降级——可度量)
a 是最弱的,尽管它用了个很重的词 significant。因为形容词没有刻度,数据有。
一句话:“这个问题很严重”在英文里有两条路——对人说,用等级词(P1 / critical);对文档写,用数字。形容词是两条路上都最差的选项。
题 4:“迁移没做好。”
这一题是母案例的命门。翻之前,三个问题:
- 谁的迁移?(限定:the / a / 谁的)
- 是完全失败,还是只完成了一半?(完成性:结果 vs 过程)
- “没做好”指的是结果不对,还是过程不安全?(这是本题的核心)
参考答案
分支 A:结果失败——迁移没跑完
The migration failed.
The migration didn't complete.
分支 B:只完成一半——被中途掐断
The migration was only halfway done when we killed it.
We had to abort the migration midway.
分支 C:跑完了,但过程有问题
The migration completed, but it locked the table.
The migration ran to completion — it just shouldn't have been run that way.
分支 D:事后评价(带情态动词)
The migration wasn't done safely.
The migration should have been run through gh-ost.
现在,关键问题来了:Pallet 那次,是 A、B、C 还是 D?
答案是 C 和 D。
那次迁移其实”成功”了——索引加上了,SQL 执行完了,Priya 在 2:47 KILL 掉连接的时候,索引可能已经建好或者回滚了。它的问题是过程不安全:它锁了表 33 分钟。
这个区分,是整起事故定性的分水岭。
- 如果是”结果失败”(A),那是操作失误:Lin 没把事办成。行动项是”让他更熟练”。
- 如果是”过程不安全”(C/D),那是流程缺失:我们没有一个安全的迁移方式。行动项是”引入 gh-ost 并写进标准流程”。
母案例的复盘结论是后者,Lin 没被处罚。 而支撑这个结论的语法形态,就是那句:
The migration completed, but it locked the table.
中文说”迁移没做好”,一个”没”字把”失败”和”有瑕疵”混在一起。 你要是写英文报告的时候随手译成 The migration failed,你就在无意中把这起事故从”流程缺失”重新定性成了”操作失误”——一句话,把 Lin 卖了。
计算机类比:这就像 err != nil 和 err == nil but result.Suspicious 的区别。前者是明确的失败,后者是成功但带警告。你的监控系统怎么分类这个事件,直接决定了谁来背这个锅。
生活类比:装修队把活干完了,但把楼下邻居的天花板砸裂了。“没做好”可以指”活没干完”,也可以指”活干了但搞坏了别的东西”。这两种投诉,索赔的金额完全不同。
一句话:“没做好”是中文里最危险的三个字之一。翻英文前,先判死刑:是 failed(没干成)、incomplete(没干完)、还是 not done safely(干了但方式有问题)。三者的事故等级差两个数量级。
题 5:“要是早点发现就好了。”
翻之前,三个问题:
- 发现的人是谁?我?我们?还是监控系统?(决定主语,也决定责任的落点)
- 早多久?有没有明确的时间点可以对比?(决定要不要写具体的时间差)
- 这是在表达遗憾,还是在提改进建议?(决定用不用虚拟语气——这一问最关键)
参考答案
分支 A:纯粹的遗憾,我自己的
If only I had caught it earlier.
I wish I had woken up sooner.
If only 和 I wish 都是专门表达”与现实相反的愿望”的框架。注意它们后面都要用过去完成(had caught / had woken up),因为愿望指向的是已经不可改变的过去。
分支 B:带具体时间差的遗憾(更有信息量)
If we had caught it at 2:17 instead of 2:26, we'd have saved about nine minutes.
这句比 A 有用得多,因为它给出了一个可计算的差值。复盘会上的遗憾,最好都写成这种形式——遗憾是可以量化的,量化之后就变成了行动项的优先级。
分支 C:把主语换成系统(责任外移)
If the alert had gone off sooner, we'd have caught it before the error rate spiked.
注意:主语从 we 变成了 the alert。这一句在说”不是我们发现得晚,是告警响得晚”。 这就是母案例行动项②的语法基础。
分支 D:从遗憾转成建议(脱掉虚拟语气)
Going forward, we should page the secondary on-call after three minutes.
From now on, any migration that doesn't respond to a kill within 60 seconds gets escalated automatically.
这一条是本题的暗门,也是最重要的一条。
看清楚了:D 是真实语气。它没有 had done,没有 would have。它用的是一般现在时 + should / 现在时。
为什么?因为它说的不是”过去没做的事”,而是将来要做的事。
虚拟语气的定义就是”非真实”。一旦你的建议变成了真实要执行的行动项,你就必须脱掉虚拟语气,换成真实语气。
这是中国人写英文复盘时最常犯的一个形态错误:整篇都是 We should have done X,通篇遗憾,没有一句落地。Native 读完的反应是:“所以你们到底打算干什么?”
正确的复盘报告节奏是:
过去(虚拟):If we had had a documented abort step, we'd have saved 13 minutes.
现在(真实):Going forward, the runbook will include an abort section.
将来(真实):Every production migration must be reviewed by a second engineer.
虚拟语气负责解释过去,真实语气负责承诺将来。 一份只有虚拟语气的复盘报告,是一份没有行动项的报告。
顺带修一个中国人极常犯的错:
*If I would have known, I would have rolled back.
错在 if 从句里的 would have。if 从句禁用 would have。
为什么?因为 would 是结果标记,而 if 从句是条件,不是结果。你在条件里写结果标记,就像你在函数参数里写返回值。
正确说法:
If I had known, I would have rolled back.
Had I known, I would have rolled back. (倒装,更书面)
一句话:“就好了”三个字就是中文的虚拟语气标记。但要注意——一旦从”早知道”变成”下次要”,立刻脱掉虚拟语气。
题 6(加餐):“他当时不知道。”
这一题放在最后,是因为它是题组 2 的收尾验证——四个英文,一个中文,四种责任归属。
翻之前,三个问题:
- 这句话是想开脱,还是想追责?(决定情态动词的方向)
- 正式程度要求多高?口语吐槽、还是写进报告?
- “不知道”的原因是什么?没人告诉他,还是他自己没看?
参考答案
四档,责任从轻到重:
第一档(最轻):He had no way of knowing.
第二档(较轻):He wasn't aware that...
第三档(中性):He didn't know.
第四档(最重):He should have known.
第一档:He had no way of knowing.
意思是”在当时的信息条件下,任何人都不可能知道”。这是免责声明,不是事实陈述。
它的语法值得注意:have no way of doing 是个固定框架,way 在这里是”途径、可能性”。它断言的不是”他不知道”,而是**“知道的途径不存在”**。
这是 blameless 复盘的黄金句式。母案例里对应的就是:
Lin had no way of knowing how to abort the migration — the runbook didn't cover it.
第二档:He wasn't aware that...
aware 指向当下的意识状态,know 指向知识储备。
He didn't know X 暗示”他的知识库里缺 X”。
He wasn't aware that X 暗示”他那一刻没意识到 X”——X 可能是存在的,只是没进入他的注意。
后者明显更轻。
而且 wasn't aware 比 didn't know 正式得多。口语里没人说 I wasn't aware,但报告里到处都是。
第三档:He didn't know.
中性陈述。但注意:中性不等于无害。 在没有上下文的报告里,一句光秃秃的 Lin didn't know how to stop it 会被读成一种指控——因为读者会问”为什么他不知道?”
第四档:He should have known.
should have done 是”过去应该做而没做”,带责备。
它的杀伤力在于:它断言了能力。 说 should have known 等于说”他有能力知道,他没做到”。
计算机类比:这四档就是日志级别。
DEBUG:He had no way of knowing. (免责,不追责)
INFO :He wasn't aware that... (记录状态,轻微)
WARN :He didn't know. (陈述事实,读者自行解读)
ERROR:He should have known. (追责,需要有人处理)
同一个事实,四个级别,四种后续动作。
中文里这四句的差别有多大?几乎没有。“他当时不知道” “他当时不清楚” “他应该知道的”——只有最后一句加了”应该”,前三句几乎无差别。
一句话:中文只给了你一个开关(加不加”应该”),英文给了你一根四档滑杆。
题 7:“这事不怪他。”
翻之前,三个问题:
- “怪”是道德责任、法律责任、还是因果责任?(三种责任的英文完全不同)
- “这事”指什么?说的人和听的人都知道是哪件事吗?(决定
this还是that,还是得把事说出来) - 你是在开脱,还是在陈述事实?(决定要不要加”我认为”)
先想三十秒。 你的第一反应大概是 It's not his fault. —— 记住这句,答案里会告诉你它缺了什么。
参考答案
四档,从口语到报告:
第一档(口语,护短): Don't blame him.
第二档(常用): It's not his fault.
第三档(报告体): He can't be held responsible for this.
第四档(blameless): Nothing he did caused this. / He had no way of preventing it.
你的第一反应 It's not his fault. 缺了什么?
缺了**“这事”**。fault 是个名词,它需要一个归属对象——谁的 fault、对什么事的 fault。光说 It's not his fault,读者会问”对什么事不怪他”。
所以自然的说法是:
It's not his fault — the runbook never covered this.
That wasn't his fault. Nobody had told him.
注意后面那半句几乎是必须的。 因为 It's not his fault 是一个断言,而断言需要支撑。中文说”这事不怪他”可以光秃秃地说完(语境提供了支撑),英文里你最好自己把支撑补上。
第一档 Don't blur him. 里的 blame 是这一题的核心词。
blame 是归责动词,它的论元结构是 blame someone for something。所以:
a. Don't blame him. (别怪他——祈使句,直接制止)
b. Don't blame him for this. (这事别怪他)
c. He's not to blame for this. (这事不该由他负责——最正式)
d. He is not to be blamed. (同上,被动式,更冷)
c 和 d 值得单说。 be to blame 是个固定框架,意思是”应负责任”。注意它的形式很怪:它是主动的不定式,却表被动的意思(“他该被责怪”)。这是英语里少见的”主动形式表被动意义”的结构,记住就行。
而且 be to blame 天然是正式的、书面的。 复盘报告里你会看到 No single individual is to blame for this incident. —— 这就是 blameless 原则的语法形态。
第三档 He can't be held responsible for this. 值得拆开:
hold someone responsible for X (让某人对 X 负责)
-> 被动:someone be held responsible for X
-> 加情态:someone can't be held responsible for X
can't 在这里不是”能力不够”,是”在道义或规则上不成立”。 它在说:按我们的规则,这个责任落不到他头上。这是最有力的一档,因为它把免责从”我说是”升级成了”规则说不是”。
第四档最狠:Nothing he did caused this.
这句没有”怪”这个词,没有 fault,没有 blame。它直接否定了因果链——他做的任何一件事,都不是这件事的原因。
这是 blameless 复盘里最干净的一句,因为它不是在”原谅”,是在”证伪”。
中文怎么说? “这事不怪他。” 四个字,不分道德责任、法律责任、因果责任。英文里这是三个动词、四种语域。
一句话规则:“不怪他”的四种英文,责任依次是:制止归责(Don’t blame)-> 否认过错(not his fault)-> 否认可归责性(can’t be held responsible)-> 否认因果(didn’t cause)。越往后越难被反驳。
题 8:“我们尽力了。”
翻之前,三个问题:
- 说这话的时候,事成了没有?(成了是总结,没成是辩护)
- 对谁说?对老板、对客户、还是对自己?(这一句几乎决定了全部措辞)
- “尽力”的”力”是什么?人力、时间、还是预算?(决定能不能给出度量)
先想三十秒。 你的第一反应大概是 We tried our best. —— 记住这句,它在真实的职场英文里是个危险句。
参考答案
四个场合,四种英文,而且第一种是有毒的:
对老板(事没成): We did what we could with what we had.
对客户(事没成): We explored every available option.
对自己(事成了): We gave it everything we had.
对报告(需要度量):We allocated four engineers for six weeks; it wasn't enough.
先说你的第一反应 We tried our best. 为什么危险。
try one's best 在英文里是个小孩子用语。它的语域是:老师对没考好的学生说 “You tried your best, that’s what matters.”
一个成年人在工作场合说 We tried our best,Native 听到的不是”我们努力了”,是”我们努力了但没做成,而且我不想谈细节”。
它是一句免责声明,而且是最无力的一档——因为它把”力”这个东西说成了一个不可度量的内心状态。
对比第一句:We did what we could with what we had.
这句好在哪?它有两个 what 从句:
We did [what we could] with [what we had].
^ 能力的上限 ^ 资源的上限
它在说:我们的出力,受限于我们手上的资源。 这句把”尽力”从”我们很努力”(主观)改成了”我们把手上的东西用完了”(客观,可验证)。
这是一句可以接下文的话——下一句自然是 “Next time we need X earlier.”
第二句 We explored every available option. 是对客户说的。
注意 explored(探索过)、every available option(每一个可用选项)。这两个词把”尽力”从”用力气”改成了”穷举”。 客户听不懂你的辛苦,但他能听懂”我们把所有路都试过了”。
而且这句没有承认失败。 它没说”我们没做到”,它说”我们把选项都试过了”——后半句留给客户自己补。
第三句 We gave it everything we had. 是唯一可以用在”事成了”的场合的。
give it everything one has 是”倾尽所有”,它是褒义的、有画面感的。用在庆功、用在回顾一段艰难时期,都很合适。
注意它和 tried our best 的语域差别:give it everything 是成年人的、有力量的;try one's best 是小孩子的、安慰性的。差别不在意思,在使用者的年龄感。
第四句是这一题的答案。
“尽力”在英文职场里,正确写法不是形容词,是数字。
a. We tried our best. (不可验证,显得 defensiveness)
b. We allocated four engineers for six weeks. (可验证)
c. We ran 200 test cases across three environments.(可验证)
d. Four engineers, six weeks, and it still wasn't enough. (可验证 + 承认不够)
d 句是这一题的满分答案。 它没有用任何”努力”的词,但它让每一个读者都知道这不是敷衍。
回扣题 3 那条黄金法则:Show the number, not the adjective. —— “尽力”和”很严重”是同一类词,它们是必须被替换成度量的占位符。
中文怎么说? “我们尽力了。” 中文里这句话是有分量的,因为中文文化里”尽力”承认了努力和无奈两层意思。但英文里,这句话的”无奈”部分会盖过”努力”部分,听者只听到”没做成”。
一句话规则:try one's best 是职场英文里的地雷。想说”尽力”,要么用 do what we could with what we had(客观受限),要么用数字(可验证)。
题 9:“房子到期了。”
翻之前,三个问题:
- “到期”是指租约结束,还是已经过期了?(决定时体:将来、现在完成、还是一般过去)
- 谁的房子?你和听者都知道是哪套吗?(决定 the 还是 a 还是 my)
- 说这话的背景是什么?要续租、要搬走、还是在解释为什么搬家?(决定要不要说后果)
先想三十秒。 这一题是第三部分里限定维度最重的一道,你大概率会漏掉冠词。
参考答案
四种时态,四种完全不同的处境:
a. My lease is up at the end of the month. (快到了——现在时表将来安排)
b. My lease is up. (已经到期了——状态)
c. My lease expired last Friday. (上周五到期了——事件,封闭过去)
d. My lease has expired. (已经过期了——强调当下的失效状态)
先说一个几乎所有人都会犯的错:
*My house is expired.
错在哪?expire 的主语不能是”房子”。
expire 的语义要求是”一个有时限的契约/证件/食品”到期。房子本身没有期限,有期限的是租约(lease / tenancy / rental agreement)。
中文说”房子到期了”,是把”房子的租约到期了”压缩成了五个字。 英文不给你这个压缩:你不能让没有期限的东西做 expire 的主语。
这就是这一题真正的卡点:中文允许”整体代部分”(房子代租约),英文要求主语和动词的语义特征匹配。
再看四句的时体差别。
a 句 My lease is up at the end of the month. —— 用一般现在时表将来的确定安排。这在英文里完全合法(时刻表、日程、合同到期都用现在时)。be up 是个短语,意思是”到期了/结束了”。
b 句 My lease is up. —— 注意这句有歧义!
b1. 我的租约到期了。(已经结束了)
b2. 我的租约快到期了。(即将结束)
英文里 is up 没有明确的时态标记,靠上下文。要消除歧义:
My lease is up — I have to be out by Sunday. (已经到期)
My lease is up next month. (即将到期,有时间状语就清楚了)
c 句 My lease expired last Friday. —— 一般过去 + 封闭时间状语。这是事件读法:上周五那一刻,租约终止了。
d 句 My lease has expired. —— 现在完成。这是这一组里最值得琢磨的一句。
has expired 强调的是当下的状态:现在这份租约是无效的。它的言下之意通常是”我现在是非法占用,或者我需要立刻签新的”。
中文怎么区分 c 和 d? 都是”房子到期了”。你只能靠加字:“上周五到期了” vs “已经过期了”。
再看限定维度(面 8)——这一题的隐藏考点:
a. My lease is up. (我的租约——说话人的,听话人通常知道是哪份)
b. The lease on my apartment is up. (我公寓的租约——更明确)
c. A lease expired. (有一份租约到期了——极其奇怪,除非在数据库日志里)
d. The lease expires on June 30. (特指那份租约)
c 句为什么奇怪? 因为 a lease 是不定指的,而”租约到期”在真实生活里永远是关于某一份特定的租约。你不会在跟人聊天的时候说”有一份租约到期了”,你会说”我的租约”。
中文根本不逼你想这个——“房子到期了”里没有”我的”,但每个中国人都知道是说自己的房子。英文逼你把 my 写出来。
还有一种常见场景值得给:
房子到期了,我不打算续了。
-> My lease is up and I've decided not to renew.
房子到期了,房东要涨 800。
-> My lease is up for renewal and the landlord wants to raise it by 800 a month.
注意 renew(续约)和 renewal(续约,名词化)。be up for renewal 是个固定搭配。
一句话规则:“到期”在英文里,主语必须是有时限的东西(lease / contract / passport / license / subscription),不能是那个东西的载体(house / job / account)。而且 expired(事件)和 has expired(状态)是两句不同的话。
题 10:“他还没回我。”
翻之前,三个问题:
- “没回”是一个结果(到现在还没有),还是一件发生过的事(我问了,他没理)?(完成时 vs 一般过去)
- 你什么时候问的?五分钟前还是上周?(决定能不能用现在完成,以及要不要加时长)
- 你在抱怨,还是在陈述?(决定语气和副词)
先想三十秒。 这一题是完成时和一般过去时最容易混的一题,因为中文的”没”两个时态都能译。
参考答案
两种形态,两种完全不同的心态:
a. He hasn't replied yet. (现在完成:到现在还没回)
b. He didn't reply. (一般过去:他没回(那次))
c. He still hasn't got back to me. (现在完成 + still:都这时候了还没回)
d. I asked him on Tuesday and I haven't heard back. (有起点,有持续)
核心区别,用一句话说清楚:
He didn't reply是在讲一件结束了的事。He hasn't replied是在讲一个持续到现在的缺口。
为什么这个区别重要? 看这两个场景:
场景一:你周二给他发了邮件,周五同事问你结果。
-> He didn't reply. (那次没回,事情已过,我放弃了)
-> He hasn't replied. (到现在还没回,我还在等/还在困扰)
场景二:你三分钟前发了条微信,现在盯着屏幕。
-> He hasn't replied yet. (正确)
-> *He didn't reply. (奇怪——三分钟前的事用一般过去,暗示"他决定不回")
关键在 yet。
yet 是现在完成时的专属副词(用于否定句和疑问句)。它的语义是”到说话这个时刻为止,预期中的事还没发生”。它天然要求完成体,因为它描述的是一个”从过去到现在”的窗口。
c 句 He still hasn't got back to me. 值得单说。
get back to someone = 回复某人(口语,比 reply 轻松得多)
get back to 是英语里”回复”的最常用口语说法。 它的字面是”回到你这儿”,暗示”我忙完了会回来找你”。这个短语比 reply 有人情味,适合用在同事、朋友之间。
而 still 是这一句的灵魂:
a. He hasn't replied. (还没回——陈述)
b. He still hasn't replied. (到现在还没回——隐含"早该回了")
c. He STILL hasn't replied. (还没回!——口语重音,明显的不满)
still 是一个预期标记:它标记了”我预期这件事已经发生,但它没发生”。中文里这个”预期”靠语气和上下文,英文里靠一个副词。
d 句 是这一组里信息最完整的一句:
I asked him on Tuesday and I haven't heard back.
^ 起点(过去) ^ 持续到现在
这个”过去起点 + 现在完成”的组合,是英语里表达”悬而未决”的标准配方。 中文说”我周二问他的,到现在还没消息”,要靠”到现在”三个字;英文里 asked ... on Tuesday 和 haven't heard back 两个形态已经把这个结构焊死了。
再看一个中国人极常犯的错:
*I am waiting for his reply since Tuesday.
两个错:一是 wait 表持续要用完成/完成进行(have been waiting),二是 since Tuesday 要求完成体。
正确说法:
I've been waiting for his reply since Tuesday.
I've been waiting to hear back from him since Tuesday.
注意 hear back from someone 和 get back to someone 的区别:
hear back from him = 收到他的回音(从我的角度)
get back to me = 他回复我(从他的角度)
中文都是”他回我”。 英文里这两个短语的主语不同,所以你不能说 *I haven't got back to him(那意思是”我还没回复他”)。
一句话规则:“还没 X” 在英文里几乎总是现在完成 + yet(或 still)。用一般过去说”没 X”,等于宣布这件事已经结束了,你不等了。
题 11:“早知道就不去了。”
翻之前,三个问题:
- 这是纯粹的感慨,还是带具体后果的后悔?(决定要不要给出后果)
- “早知道”知道的是什么?(决定条件从句里写什么)
- 说话人真的去了吗?(这一题的陷阱:“早知道就不去了”其实有两种意思)
先想三十秒。 而且我要提醒你:这一题有两条完全相反的路,你走哪条取决于一个中文里没写的东西。
参考答案
先解开那个陷阱。中文的”早知道就不去了”有两个意思:
意思 A:我去了,后悔了。("早知道(这么无聊)就不去了")
意思 B:我没去,而且我庆幸没去。("早知道(会下雨)就不去了"——所以我没去)
中文里这两句的字面完全一样,靠”了”的语调和上下文区分。英文里它们是两种完全不同的句式。
意思 A(去了,后悔)——标准虚拟:
a. If I had known, I wouldn't have gone.
b. I shouldn't have gone.
c. I wish I hadn't gone.
d. Had I known it was going to be like that, I'd have stayed home.
意思 B(没去,庆幸)——这个更妙:
e. Good thing I didn't go.
f. I'm glad I didn't go.
g. If I had known, I would never have gone — and I didn't.
B 组的 e 和 f 是真实语气,不是虚拟语气!
这是这一题最大的坑。看清楚:
I wish I hadn't gone. (虚拟:我去了,我希望我没去)
I'm glad I didn't go. (真实:我没去,我很高兴我没去)
两句话的形态差别在 wish vs be glad。 wish 指向非真实(所以它后面用 hadn't gone 表反事实),be glad 指向真实(所以它后面用 didn't go 表事实)。
中文怎么说的? “早知道就不去了” 和 “幸亏没去” —— 中文得换一句话才能区分。英文靠换一个主句动词就能区分。
再看 A 组内部的四档:
a 句 If I had known, I wouldn't have gone. 是最标准的。If I had known 里的 known 是省略了宾语的——知道什么?中文说”早知道”,也没说知道什么。这一处中英文都允许省略,因为语境会补。
但如果要补,功效完全不同:
a1. If I had known it would rain... (抱怨天气)
a2. If I had known he was going to be there... (抱怨某个人)
a3. If I had known how long the drive was... (抱怨路程)
你补什么,就暴露了你真正后悔的是什么。 这是解码别人的”早知道”的抓手。
b 句 I shouldn't have gone. 比 a 重,因为它是直接自我评价,不是推演。
c 句 I wish I hadn't gone. 最情绪化,最接近中文”真不该去”的语气。
d 句 Had I known it was going to be like that, I'd have stayed home. 是倒装虚拟 + 具体后果(stayed home)。它的画面感最强——你不仅能听出后悔,还能看见他窝在家里。
再补一个这一题最容易犯的错:
*If I would have known, I wouldn't have gone.
这是诊断 4 那一句的同款错误。if 从句里禁用 would have。正确是 If I had known。
还有一个中国人爱犯的错,值得单独说:
*If I knew, I wouldn't go.
这句语法完全正确,但意思是”如果我知道(将来的事),我就不去了”——它是对现在或将来的假设,不是对过去的后悔。
时态往回退一格,就是虚拟;退两格,就是过去虚拟。 这是英语虚拟语气的核心机制:
对现在/将来:If I knew, I wouldn't go. (退一格:know -> knew)
对过去: If I had known, I wouldn't have gone. (退两格:knew -> had known)
中文里这两个”如果”长得一模一样。
一句话规则:“早知道就不去了”先判有没有去。去了用 I wish I hadn't gone / I shouldn't have gone(虚拟);没去用 I'm glad I didn't go(真实)。中文靠语调区分,英文靠主句动词区分。
第三部分小结:翻不动的时候,先检查中文
六题做完,我要把这一节的核心结论砸实:
你翻不动的时候,不是你英语差,是中文原句的信息本来就不够。
这句话请记住。它有一个直接的实用价值:下次卡住的时候,别查词典,回头问中文。
问什么?就问这三条:
1. 这件事在时间轴上的位置是?(点?线?段?有没有锚点?持续到现在吗?)
2. 这句话里有哪些参与者?他们都要出场吗?(施事、受事、工具、受益者)
3. 我说这话是站在哪儿说的?对谁说?我想让他得出什么结论?
三个问题问完,你会发现你不是”不会翻”,你是”还没决定要说什么”。
而”决定要说什么”这件事,中文从来不逼你做,英文逼你每一次都做。
这就是”英语思维”最朴素的定义。
第三部分收尾:回扣那句”……对谁说?”
回到本部分开头的进入卡点。
你翻”系统挂了”的时候,自己反问了一句”对谁说?“。这一个反问,值十道题。
因为它是你自己生出来的,不是我教你的。这说明你已经有能力感知中文的信息缺口了,你缺的只是一张清单,把这个反问系统化。
十一道题做完,我把那三个问题扩成一张完整的清单。以后卡住的时候,从上往下问:
第 0 问(最重要):对谁说? -> 一次决定语域、措辞、委婉度、句子长度
第 1 问:在时间轴的哪一格? -> 点、线、段、状态?有没有锚点?窗开关?
第 2 问:有哪些参与者?都要出场吗? -> 施事、受事、工具、受益者、机构
第 3 问:我凭什么这么说? -> 亲眼、日志、听说、推理?几成把握?
第 4 问:这是事实还是假设? -> 真实语气 / 虚拟语气 / 建议
第 5 问:这个数字要放大还是缩小? -> 绝对数、百分比、副词、量词框架
第 6 问:有没有行业的"中性替换词"? -> degradation / issue / procedure / behind schedule
注意第 0 问的位置。它在最上面,而且它决定后面六个。
这一部分的十一道题里,最能说明这件事的是题 8(“我们尽力了”):
对老板: We did what we could with what we had. (客观受限,准备好接下文)
对客户: We explored every available option. (穷举,不承认失败)
对自己: We gave it everything we had. (褒义,有画面)
对报告: Four engineers, six weeks. (数字,可验证)
同一句中文,四个听众,四句英文,没有一句用了”努力”这个词。
中文里”我们尽力了”的”尽力”,是一个自带道德分量的词——它同时承认了努力和无奈,听者会给你同情。英文里没有这样一个词能一次做完这两件事,你必须选一件:要么证明你真的做了什么(数字),要么证明你受限(with what we had)。
这就是”对谁说”排在第 0 位的原因:它先决定了你的目标,然后才有措辞。
最后给你一个可以立刻用的判断法:
拿到一句中文,先别翻。先问:如果我把这句中文原样告诉一个不在场的人,他会问什么?
他问的每一句,就是你必须在英文里补上的东西。
第四部分:诊断训练(“语法没错但不地道”)
这一部分的十句话,语法全部正确。
不是”基本正确”,是任何语法检查器都会放行的那种正确。但每一句都有问题,而且问题不在语法层。
你要诊断三件事:
- 错在哪个维度?
- 为什么?
- 正确说法是什么?
顺序很重要。先定位维度,再改句子。 直接改句子是治标,定位维度是治本——因为同样的错误你会在别的地方再犯。
我给一个定位的口诀,先记下来:
先看搭配(及物性、可数性、动词的论元结构)——这是编译错误。 再看十个维度——这是设计缺陷。
编译错误和设计缺陷的处理顺序不能颠倒。这个比喻放到最后一句你会彻底明白。
进入卡点:三句语法全对的英文,哪一句不像人话?
先撞墙。下面三句,每一句都通过了任何语法检查器——时态对、主谓一致、冠词无误、介词无误。
a. The 51-minute degradation occurred as a result of a migration
executed by an engineer.
b. There were 12,300 orders which failed during the incident.
c. I am writing to inform you that the issue has been resolved, and we
apologize for any inconvenience caused.
哪一句不像人话?
先别往下看。挑一句,然后说出理由。这一步是必须的——光挑出来不算,你得能说清它别扭在哪。
(三十秒)
好,我替你说出答案。
大部分人会挑 c,理由是”太模板了、太假了”。少数人会挑 a,理由是”太长太绕”。挑 b 的人最少,因为它看起来最正常。
现在我说结论:三句全有问题,而且问题在三个完全不同的维度。挑 c 的人离得最近,但理由说错了。
c 句的问题不在”假”,在语域错配(面 9)。 I am writing to inform you that 是一个公文框架,它只在一种场合成立:你是机构,对方是陌生人,而且这件事有法律效力。一封工程师发给工程师的事故通知用这个框架,读者会觉得你在演戏。“假”是症状,“语域和受众不匹配”是病灶。
a 句的问题在名词化过载(面 7)+ 被动 + by + 人(面 3)。 数一下:一句话里有 degradation、migration 两个抽象名词,只有一个动词 occurred,而这个动词几乎是空的(occur 不传递任何实质意义)。然后句尾挂着 executed by an engineer——一个被藏了又没藏住的施事。 三件事叠在一起,句子就垮了。
b 句的问题最隐蔽,也最值得学:在 There were 12,300 orders which failed 里,which failed 应该简化成 failed 或者 failing(面 4,信息包装)。
b1. There were 12,300 orders which failed during the incident. (笨重)
b2. There were 12,300 failed orders during the incident. (干净)
b3. 12,300 orders failed during the incident. (最干净)
为什么 b1 笨重? 因为 there be 存现句的功能是”把一个新对象放进画面”,放进来的东西应该是一个简单的名词短语。你往里塞一个关系从句,等于在”介绍新对象”的同时又给它加了一整句说明——两个动作抢同一个位置。
回扣你刚才说不出理由的那一刻:
你能感觉到别扭,说明你的语感是好的。你说不出理由,说明你脑子里没有维度表。 语感给你一个布尔值(怪 / 不怪),维度表给你一个坐标(面 7,名词化过载)。
前者只能让你改这一句,后者能让你改这一类。 这就是第四部分要给你的东西。
热身:二十句先扫一遍,挑出最别扭的三句
在逐个诊断之前,先把全部二十句扫一遍。
你的任务:凭直觉挑出你觉得最别扭的三句,并写下你挑它们的理由。写完再往下看诊断。
1. I have fixed the bug yesterday.
2. The system is crashed.
3. Mistakes were made by Lin.
4. If I would have known, I would have rolled back.
5. The orders table is locked at 2:14 yesterday.
6. Lin was knowing how to stop it.
7. Pallet is having 22 months without a P1 incident.
8. The incident was happened at 2:14.
9. I am working here since 2022.
10. We will discuss about this in the postmortem.
11. The implementation of the fix was done by Lin.
12. We need to do a discussion about this before we roll back.
13. The outage caused a big impact to our customers.
14. I have three feedbacks about the runbook.
15. We should take a consideration of this issue.
16. He is a very famous engineer who has much experiences.
17. Please be informed that your order has been shipped.
18. I want to say sorry for the trouble I made.
19. This incident had a bad effect in customer trust.
20. According to my opinion, we should roll back first.
提示一句:前十句大多是”时体”和”语态”的错——那是中国工程师的老病灶,你可能一眼就看出好几句。但你真正要留意的是后十句:它们里头有几句,你能感觉到别扭,却说不出所以然。
把那几句的编号记下来。 全部诊断做完之后,我会回过头来处理它们。
诊断 1
*I have fixed the bug yesterday.
诊断:面 1(时间坐标)——完成体撞封闭时间状语。
正确说法:
I fixed the bug yesterday.
(如果你就是想强调”现在修好了”,去掉时间状语:I've fixed the bug.)
为什么?
现在完成时定义的是一个从过去某点延续到说话时刻的时间窗口。这个窗口必须是开着的——它的右沿就是”现在”。
yesterday 做了什么?它在这个窗口上盖了一块砖。yesterday 是一个封闭区间,它有明确的起点和终点,而且终点在说话时刻之前。你把一块封闭的砖塞进一个必须开口的窗,窗就关上了,完成体当场失效。
这不是”规则”,这是语义冲突。 完成体在说”这件事和现在有关”,yesterday 在说”这件事和现在无关(它已经结束了)“。两句打架,句子就炸。
注意一个反直觉的点:很多人以为判断标准是”影响大不大”。 错。一个 bug 修了,影响当然大——那也不行。判据是窗口的开关,不是影响的大小。
验证:把 yesterday 换成 this morning(今天早上,属于”今天”这个还未结束的窗口),完成体立刻复活——I've fixed the bug this morning. 完全成立。窗开着,因为今天还没过完。
计算机类比:这就像给一个 context.WithTimeout 传一个已经过期的 deadline。不是”参数格式错”,是这个 deadline 和这个 context 的语义互斥。
一句话规则:现在完成时和一个封闭的过去时间点互斥。看到 yesterday / in 2020 / on Monday / last week / when I was a kid,直接改用一般过去。
诊断 2
*The system is crashed.
诊断:面 2(完成性与过程)——点动词不能表持续状态。
正确说法:
The system has crashed. (事件:它崩了)
The system is down. (状态:它现在不可用)
为什么?
crash 是一个瞬时动词(achievement verb)。它的时间结构是”一个点”——崩就崩了,没有”崩到一半”的状态,也没有”崩完之后持续崩着”的状态。
be + 过去分词 表状态这个用法,要求那个过去分词能形容词化。而形容词化不是自动的,它是词汇层面的事实:
能形容词化: The door is open. The window is broken. The system is down.
不能形容词化:*The system is crashed. *The bomb is exploded. *The guest is arrived.
看出来了吗?open / broken / down 是形容词(或者已经形容词化的分词),而 crashed / exploded / arrived 不是。
为什么有的分词能形容词化有的不能? 大致规律是:能形容词化的,通常是那些描述”结果状态”的动词——这个状态可以持续,而且和施事无关。break 的结果是”破的”,可以持续;crash 的结果是……什么?没有一个叫”crashed”的状态。“崩”的后果是”down”(不可用),所以英文里用的是另一个词 down,不是 crashed。
这就是这一句的真正教训:点动词的”状态”,要用另一个词表达。
crash -> is down
explode -> is in pieces / is gone
arrive -> is here
die -> is dead
finish -> is over / is done
中文呢? “系统崩了” “系统挂了” “系统死机了” ——都能表状态,因为中文的”了”不分事件和状态。中文一个”了”字覆盖了英文 has crashed 和 is down 两种形态。
生活类比:你不能说”我正在已经到达的状态”,你得说”我在了”。“到达”是一瞬间的事,“在”是持续的状态。 中文用”到了”一个词覆盖了两个,英文必须换词。
一句话规则:crash / explode / arrive / die 这类瞬时动词,没有 is + 过去分词 的状态用法。要状态,换一个形容词(down / dead / here / over)。
诊断 3
*Mistakes were made by Lin.
诊断:面 3(语态与主语选择)——甩锅被动一加 by 就破功。
正确说法(二选一,不能拼接):
Lin made mistakes. (要指名:用主动)
Mistakes were made. (要不指名:别加 by)
为什么?
这一句第二部分已经讲透,这里只给一句最狠的:
被动语态的全部功能是不指名。你加了 by,就等于宣布”我本来想藏,但我还是说了”。
Lin made mistakes. 是一次普通的陈述——它有信息,没有姿态。
Mistakes were made. 是一次明确的遮掩——它有姿态,没有信息。
Mistakes were made by Lin. 是一次失败的遮掩——它既有姿态,又有信息,而且这两者互相拆台。
它在真实世界里的唯一用途,是讽刺。 记者写一个公司的道歉声明时,会故意模仿这个句式来嘲笑它。
计算机类比:Mistakes were made by Lin. 相当于:
// We don't name names here.
// (Names: Lin)注释和实现打架。每个读这段 diff 的人都会停下来。
一句话规则:被动 + by + 人名 = 失败的遮掩。要么主动指名,要么被动到底。
唯一的例外:by 后面是无生命的力量,而且它是关键信息——The outage was caused by a thunderstorm.(免责,不是甩锅)。
诊断 4
*If I would have known, I would have rolled back.
诊断:面 6(语气与非真实)——if 从句禁用 would have。
正确说法:
If I had known, I would have rolled back.
Had I known, I would have rolled back.
为什么?
would 是结果标记。它在条件句里的合法位置只有一个:主句。
If [条件], [结果].
If I had known, I would have rolled back.
^ 条件,用 had done ^ 结果,用 would have done
你在条件里写结果标记,等于你在函数的入参位置写返回值。
那为什么这么多人会犯这个错? 因为它是英语母语者的口语里也真实存在的变体(尤其在美国某些方言里)。你在电影里能听到。但它在书面语和标准英语里被判为非标准,而技术文档、商务邮件属于书面语。
还有一个更实际的原因:中文的”要是……就好了”里,两个分句在形态上完全对称,没有任何东西提示你”前半句和后半句要用不同的形态”。所以你会本能地追求对称,把 would have 复制到两边。
英文在这里是刻意不对称的——条件用 had done,结果用 would have done。这个不对称本身就是虚拟语气的标记。
计算机类比:这就是 if err != nil 里的 err 和 return 值。你不能写 if return err != nil。条件是输入,结果是输出,两个位置的语法是不同的。
一句话规则:if 从句里永远不会有 would。条件用 had done,结果用 would have done。
顺便:这个规则也解释了为什么 If it rains, I will stay home. 是对的——条件用一般现在(rains),结果用 will。同样是”条件不带 will,结果带 will”的不对称。
诊断 5
*The orders table is locked at 2:14 yesterday.
诊断:面 1(时间坐标)——一般现在时撞一次性过去时间状语。
正确说法:
The orders table was locked at 2:14 yesterday. (事件读:2:14 被锁了)
The orders table was locked for 33 minutes. (状态读:锁了 33 分钟)
为什么?
英语的一般现在时有两个主要功能:
- 经常性/习惯性:
I get up at 7.(每天都这样) - 当前的客观状态:
The table is locked.(现在锁着)
它不接受一次性的过去时间点。is locked at 2:14 yesterday 试图让一个”现在的状态”发生在一个”昨天的时间点”上——矛盾。
这个错误在中国工程师里特别常见,因为中文里”表在 2:14 被锁了”和”表是锁着的”用的是同一个”了/着”,动词没有任何形态变化。
更隐蔽的坑:at 2:14 和 for 33 minutes 这两句都对,但读法不同(第二部分讲过)。你在写事故报告时要清楚自己要哪一读。
一句话规则:一般现在时不接受一次性的过去时间状语。看到 yesterday / at 2:14 / last night,动词必须退到过去时。
诊断 6
*Lin was knowing how to stop it.
诊断:面 2(完成性与过程)——状态动词不能上进行体。
正确说法:
Lin knew how to stop it. (他知道)
Lin didn't know how to stop it. (他不知道)
Lin was trying to work out how to stop it. (他在想办法——换动态动词)
为什么?
进行体的语义要求是:这个谓语必须有内部阶段,可以被”切一刀进去看”。
know 没有内部阶段。你要么知道,要么不知道。它描述的是一个状态,不是一段过程。
英语里有一批这样的状态动词(stative verbs),默认不进行体:
认知: know, understand, believe, remember, forget, realize, mean
情感: love, hate, want, need, prefer, like
所属: have(表"拥有"), own, belong, contain, consist of
感官: see, hear, smell(表"感知到",非主动去听/闻)
其他: cost, weigh, matter, seem, appear
注意 have 的分裂:have 表”拥有”是状态(不能 am having a car),但表”经历/进行某个活动”是动态的(am having a meeting / am having a great time)。这是同一个动词的两个义项,属于不同类别。
为什么会有这个限制? 深层原因是有界性(boundedness)。进行体要求谓语是无界的、可延续的;而 know 这类词描述的是一个静态的属性,它既无起点也无终点,无法被”进行”。
听起来矛盾?我换个说法:进行体的功能是”取一个过程的一帧”。 一段视频可以取一帧。一张照片不能”正在是照片”。状态动词是照片,动态动词是视频。
中文怎么处理的? “他正在知道”——中文里也是错的。所以这一条中文和英文是一致的,你不会犯这个错。
那你为什么会犯? 因为你不是在翻译”他正在知道”,你是在根据体的规则做推广:“过去某个时刻正在进行 -> was doing”。你推广得太快,把状态动词也扫进去了。
一句话规则:进行体要求谓语是过程不是状态。know / own / belong / contain / cost 这类词要先换成动态说法(try to work out / be using / be holding),再上进行体。
诊断 7
*Pallet is having 22 months without a P1 incident.
诊断:面 1(时间坐标)+ 面 2(完成性)——状态动词进行体 + 持续段要求完成体,两个错叠在一起。
正确说法:
Pallet has gone 22 months without a P1 incident. (最地道)
It's been 22 months since Pallet's last P1. (最常用)
Pallet has had 22 months of clean on-call. (也可以)
为什么?
两个错:
错误一:have 表”拥有”是状态动词,不能进行。(同诊断 6)
错误二:一个从过去持续到现在的”段”,要求完成体。 22 months 是一个有长度的段,它的起点在过去(2024 年 12 月左右),它的终点是现在(2026 年 9 月)。这种”起点在过去、终点是现在”的结构,在英语里只有一个形态能承载:现在完成时。
为什么 go 能用? 因为 go 是动态动词,它可以承载”时间流逝”这个意义。go 22 months without X 的字面意思是”走了 22 个月而没遇到 X”——它把时间拟人化成了一段旅程。
类似的还有:
We've gone three releases without a rollback.
She went two years without a single sick day.
The service has run for 400 days without a restart.
注意到没有?这些句子里的动词都是动态的(go / run),没有一个用 have/be 这类状态动词。 因为你需要一个能”推进”的动作来承载时间。
中文呢? “Pallet 已经 22 个月没有 P1 事故了。” 一个”了”字,一分形态成本都没有。
一句话规则:“持续了多久 + 到现在为止” 必须用现在完成时,而且谓语动词要选动态的(go / run / pass / be since)。have 表拥有既不能进行,也撑不起这个持续段。
诊断 8
*The incident was happened at 2:14.
诊断:面 3(语态与主语选择)——不及物动词没有被动。
正确说法:
The incident happened at 2:14.
为什么?
被动语态的形成机制是:把及物动词的宾语提到主语位置。没有宾语,就没有被动。
happen 是不及物(intransitive)——它只有一个论元(主语),事件自己发生,不作用于任何东西。
英语里有一批这样的纯不及物动词,永远不能被动:
happen, occur, arise, appear, emerge, vanish, disappear,
arrive, come, go, fall, rise, die, sleep, sneeze,
belong(to), exist, remain, seem
其中有几个在中国人笔下特别常错:
*The accident was happened. -> The accident happened.
*The problem was occurred. -> The problem occurred.
*A good idea was occurred to me. -> A good idea occurred to me. / I had a good idea.
*The meeting was taken place. -> The meeting took place.
最后那个 take place 特别坑,因为它看起来像及物的(take + place),但它是个固定短语,整体不及物。
中文为什么不会有这个问题? 因为中文的”被”字句不要求及物性那么严格——“被发生了一次事故”虽然怪,但”出了一次事故""发生了一次事故”在中文里根本不需要被动,我们直接把事件放主语位置就行。英文里 happen 也把事件放主语位置——只不过它是主动形式。
这里有一个更深的东西值得说:中文的”发生了”和英文的 happened 在词序上完全对应(事件在前,动词在后),所以你会本能地想:主语 + 动词,那我加个”被”是不是更正式?——不会。英文的主语 + 不及物动词已经是完整的主谓结构了,加被动等于给它强加一个不存在的施事。
计算机类比:这相当于给一个没有入参的函数做参数变换。happen() 是 func happen(),你不能写 happen(actor)。编译器不让你加。
一句话规则:不及物动词无被动。拿不准的时候问自己:这个动词后面能直接跟宾语吗?不能,就不能被动。
诊断 9
*I am working here since 2022.
诊断:面 1(时间坐标)——since + 起点要求完成体。
正确说法:
I have worked here since 2022.
I have been working here since 2022. (强调"这些年一直在")
为什么?
since 2022 标出的是一个起点,它隐含的意思是”从那个点开始,一直延续到现在”。
这个”从过去某点延续到现在”的语义,在英语里只能由完成体承载。一般现在时承载不了——它要么表习惯,要么表当前状态,都不包含”延续”这个意思。
为什么中国人特别容易犯这个错?
因为中文里”我从 2022 年就在这里工作”这句话,时间信息全部由”从 2022 年”这个介词短语承担,动词”工作”没有任何形态变化。所以你在组织英文的时候,会本能地:
- 主语 I
- 动词 work——用什么时态?“现在还在这儿工作嘛”,那就现在时
- 时间状语 since 2022
你以为 since 2022 已经把活儿干完了,其实它只是个提示,真正的活儿要由 have been working 来干。
这就是全书核心命题的又一个实例:
中文是词汇化的语言——时间信息挂在动词外面(“从""已经""了""过”); 英文是形态化的语言——时间信息焊进动词的骨头里。
中文里 从 2022 年 是承载者,英文里 since 2022 是指针,指向的形态才是承载者。
顺便说 have worked 和 have been working 的区别:
I have worked here since 2022. (我在这儿工作了四年——陈述一段经历)
I have been working here since 2022. (我在这儿一直干了四年——强调连续性和投入感)
后者更口语、更有感情。面试的时候用后者,简历上用前者。
一句话规则:since + 时间点 / for + 时间段,只要终点是”现在”,谓语动词必须是现在完成(或现在完成进行)。
诊断 10
*We will discuss about this in the postmortem.
诊断:严格说,这一句不属于十个维度中的任何一个。它是及物性(transitivity)错误——动词的论元结构问题。
正确说法:
We will discuss this in the postmortem. (换掉 about)
We will talk about this in the postmortem. (换掉动词)
为什么?
discuss 是及物动词,它直接带宾语,中间不加介词。discuss something。
talk 是不及物动词,它必须通过介词带宾语:talk about something。
这是每个动词自己的论元结构(argument structure),是词汇层面的事实,没有规则可推,只能记。
那我为什么把这一条放在这里?
因为我需要用它来说清第四部分最重要的一件事:
十个维度不是英语的全部。它们管的是”你怎么包装信息”,管不了”动词能带什么”这种底层搭配。
这一句放最后,是为了给你一个诊断顺序:
第一层:搭配层(编译错误)
及物性(discuss about)、可数性(information / advice)、
介词搭配(depend on / consist of / interested in)、
动词的论元结构(explain me -> explain to me)
第二层:维度层(设计缺陷)
时、体、语态、焦点、言据、语气、名词化、限定、语域、视角
先排第一层,再排第二层。
为什么这个顺序重要?因为这两层错误的可接受度完全不同。
搭配错了,Native 的反应是”这个人英语不好”。这是能力问题。
维度选错了,Native 的反应是”他这个说法有点怪”或者”他好像在推卸责任”。这是判断问题,甚至可能只是文化差异。
前者会让人怀疑你的水平,后者只是一次沟通失误。前者的代价大得多。
计算机类比(这一句你会彻底懂):
搭配错误是编译错误(compile error)——代码跑不起来,所有人都看得见。 维度选错是设计缺陷(design smell)——代码能跑,功能都对,但三年后维护的人会骂你。
*We will discuss about this 是编译错误:native speaker 的 parser 直接 parse 失败。
The 51-minute degradation 用在不该用的场合是设计缺陷:句子合法,语义清晰,但读者会觉得你在躲。
一个工程师的价值,在于能看出后者。 这本练习册的全部内容,都是在练这个。
一句话规则:写完任何一句英文,先扫一遍动词的搭配(介词、及物性、可数性),再扫十个维度。顺序反了,你会在错误的层面上优化。
诊断 11
*The implementation of the fix was done by Lin.
先想三十秒。 这句话里,有几个地方在”绕”?把它们一个个找出来。
参考答案
诊断:面 7(名词化过载)+ 面 3(被动 + by + 人)——两个错误互相掩护。
正确说法:
Lin implemented the fix. (要指名:直接说)
The fix was implemented. (要不指名:被动到底)
The fix went out on Tuesday. (最自然的中性说法)
为什么?
这句话的问题在于它同时做了三件不必要的事:
1. 把动词 implement 变成名词 implementation (名词化)
2. 给这个名词配一个空动词 do (名词化配套的空动词)
3. 再把整个东西变成被动,还加了 by Lin (被动 + 指名)
第 1 步和第 2 步必须成对出现,这是名词化的隐藏成本。 你把 implement 变成 implementation,就失去了一个动词;可英语的句子不能没有谓语动词,所以你必须补一个”空动词”进来——do / make / give / take / have。
这些空动词不携带任何意义,它们只是给名词化提供一根拐杖。
do the implementation of X -> implement X
make a decision about X -> decide X
give X a consideration -> consider X
have a discussion about X -> discuss X
take a look at X -> look at X
每一组里,右边都比左边短、比左边清楚。 这就是英语写作里那条被讲烂了但依然重要的建议——用动词,别用”空动词 + 名词”——的真正原因。它不只是”简洁”的问题,是你把动作藏进名词之后,施事、时态、语气全都要靠那个空动词来扛,而空动词扛不动。
第 3 步是压垮骆驼的那一根。 你在进入卡点里见过了:by Lin 让一次遮掩变成了失败的遮掩。
回扣你刚才的”绕”:你感觉到的”绕”,其实是三次改道——动作被压成名词(改道一)、补一个空动词(改道二)、再翻成被动(改道三)。三改下来,读者要解三次码才能拿到”Lin 修好了”这个信息。
计算机类比:这就是 fmt.Sprintf("%s", fmt.Sprintf("%s", x))——包了三层,跑得动,但每个 review 的人都会让你拆掉。
一句话规则:看到 do / make / give / take / have + 一个动作名词,先试着把名词还原成动词。九成情况下,还原之后更好。
诊断 12
*We need to do a discussion about this before we roll back.
参考答案
诊断:面 7(名词化的空动词结构)+ 搭配层。
正确说法:
We need to discuss this before we roll back. (最干净)
We need to have a discussion about this before... (能说,但重)
We should talk this through before we roll back. (最口语,最自然)
为什么?
do a discussion 是错的——discussion 不跟 do 搭配。它跟 have 搭配(have a discussion)。
这类”动词 + 名词”的搭配没有规律可推,是词汇层面的事实。 常见的几个:
have a discussion / have a meeting / have a look
make a decision / make a mistake / make an effort
give a talk / give it some thought / give an explanation
take a break / take a decision(英式)/ take a look
do research / do the work / do a review(这个可以)
注意最后一行:do a review 是可以的(“做一次评审”),但 do a discussion 不行。你没法推导,只能积累。
那为什么我还要把这一句归到面 7 而不是纯搭配错误?
因为就算你用对了 have a discussion,这句话依然不如 discuss this。这就是名词化的代价,和搭配无关。
对比:
a. We need to discuss this before we roll back. (一步到位)
b. We need to have a discussion about this before we roll back.
b 多了三个词,还多了一个介词。 而且更关键的是:a 句的 this 是 discuss 的直接宾语,它和动词挨在一起;b 句的 this 被 about 推到了 discussion 后面,中间隔着一个名词——信息的距离被拉开了。
生活类比:discuss this 是你直接把东西递给对方。have a discussion about this 是你先摆开一张桌子,宣布”我们现在要开会了”,然后再把东西放上去。场合不对的时候,摆桌子这个动作本身就是多余的仪式。
什么时候该用 have a discussion?
当”讨论”本身是你想强调的事件时:
We had a long discussion about it yesterday. (讨论这个事件持续了很久)
There needs to be a discussion before we roll back. (需要有一次讨论这个环节)
判断标准:如果”讨论”是你这句话真正要说的动作,用动词;如果”讨论”是一个你要指称的环节、有长度、有参与者,用名词。
一句话规则:do a discussion 是搭配错误(应为 have),但 have a discussion about X 就算搭配对了,也通常不如 discuss X。两件事要分开修。
诊断 13
*The outage caused a big impact to our customers.
先想三十秒。 这句里有两个错,一个在搭配层,一个在面 9。你找得出第二个吗?
参考答案
诊断:搭配层(介词 + 动词)+ 面 9(形容词 vs 度量)+ 面 7(名词化的错误使用)。
正确说法:
The outage had a significant impact on our customers. (搭配修对)
The outage affected 12,300 orders across 40 accounts. (换度量,更好)
Northwind alone lost about $80,000 in GMV. (最有力)
为什么?
第一个错:介词和动词都错了。
impact 的搭配是:impact ON something
impact 的动词是:have an impact(不是 cause an impact)
所以正确的组合是 have an impact on。
第二个错,是这一题真正的重点:big。
a big impact 在语法上完全成立,但它在技术写作里几乎不出现。为什么?
因为 big 是一个没有刻度的形容词。题 3 那条黄金法则在这里又一次生效:
Show the number, not the adjective.
a big impact 说了等于没说——多大?读者无法验证、无法比较、无法行动。而 12,300 orders across 40 accounts 是一个可验证的数据。
有意思的是,很多人”改进”这句的时候会用 significant 替换 big:
The outage had a significant impact on our customers.
好一点,但只好了半档。 significant 听起来更专业,但它同样没有刻度。它在学术写作里是个有意义的词(统计显著性),但在事故报告里,它只是 big 的正式同义词。
真正专业的写法是不用形容词,用数字和范围:
a. The outage had a significant impact. (弱)
b. The impact was limited to order creation. (范围明确)
c. The outage affected 12,300 orders across 40 accounts. (可验证)
回扣你刚才找第二个错的三十秒:如果你只找到了介词,说明你还在”搭配层”;找到 big 的人,已经进到”维度层”了。这两个层的顺序不能颠倒——先修介词,再换形容词。
一句话规则:impact 的搭配是 have an impact on,不是 cause an impact to。但修完搭配还不够:a big/significant impact 在报告里依然是废话,换成范围或数字。
诊断 14
*I have three feedbacks about the runbook.
参考答案
诊断:面 8(数与限定)——不可数名词被强制加了复数。
正确说法:
I have three pieces of feedback about the runbook. (最准确)
I have some feedback about the runbook. (最常用)
I have three comments on the runbook. (换成可数名词,最自然)
为什么?
feedback 在英语里是不可数名词(mass noun)。它不能被数,不能加 s。
为什么不可数? 因为英语把 feedback 理解成一种物质,像 water / advice / information 一样——你可以有一”份”反馈、一些反馈、大量反馈,但你不能有”三个反馈”。
这跟中文的冲突在哪? 中文里”反馈”是可数的——“我有三个反馈”。而且中文里几乎所有名词都能被数(“三个建议""五个信息""两个设备”),中文没有”可数/不可数”这个语法范畴,只有”能不能加个量词”的语感问题。
所以这不是一个你能靠”想清楚”解决的错,这是一个必须记的词汇事实。
改法有两条路,功效不同:
第一条路:加量词。 three pieces of feedback。这最贴近中文的”三个反馈”,但它有点笨重——piece 是个通用量词, informative 含量为零。
第二条路(推荐):换一个可数名词。 three comments / three suggestions / three points。
这条路更好,因为它逼你把”反馈”具体化——你到底是要提意见(comments)、提建议(suggestions)、还是要说三点(points)?
中文说”我有三个反馈”,可以什么都不具体;英文的 three comments 已经规定了它是什么类型的反馈。
顺带说一句,工程师最常踩的不可数名词清单:
feedback -> a piece of feedback / some feedback / comments
advice -> a piece of advice / some advice
information -> a piece of information / some information / data
research -> some research / a study
equipment -> a piece of equipment / some equipment
progress -> some progress / a milestone
knowledge -> some knowledge / a fact
evidence -> a piece of evidence / some evidence
troubleshooting -> some troubleshooting
注意 evidence:它在事故报告里高频出现,而且它永远不加 s。
一句话规则:feedback / advice / information / research / evidence / equipment 永远不加 s。要计数就加 a piece of,更好的办法是换一个可数的近义词(comment / suggestion / point)。
诊断 15
*We should take a consideration of this issue.
参考答案
诊断:面 7(名词化的空动词结构 + 介词错误)。
正确说法:
We should consider this issue. (一步到位)
We should take this issue into consideration. (保留名词化,但介词对)
This issue deserves consideration. (名词化 + 换动词,最书面)
为什么?
第一,搭配错了。 固定框架是 take something INTO consideration,不是 take a consideration OF something。
take X into consideration (把 X 纳入考虑)
give X consideration (给 X 以考虑)
under consideration (在考虑中)
第二,就算介词对了,take this issue into consideration 依然不如 consider this issue。
原因和诊断 11、12 一样:空动词 + 名词化的组合把动作藏起来了,代价是多出三四个词,而且施事被弱化。
那这一句为什么还有存在的价值?
因为名词化有一个动词版做不到的功能:它能让”考虑”这个动作变成一个可以被指称、被修饰、被量化的对象。
看这三句:
a. We should consider this issue. (动作,一步到位)
b. We should give this issue serious consideration. (加了 serious,形容词修饰)
c. This issue is under consideration. (状态,施事彻底消失)
b 句的 serious 只能加在名词上——你不能说 *We should consider this issue seriously 而不改变意思(副词修饰动词,语感完全不同)。所以”我想强调考虑的程度”这个需求,只能用名词化满足。
c 句的 under consideration 是这一组里最值钱的。 它是介词短语表状态,施事完全不在画面里,而且”谁在考虑”这个问题不合语法。
这在什么场合有用? 当你需要说”我们在考虑,但我不承诺会做、也不说什么时候”的时候。
The proposal is under consideration.
这句话的承诺量约等于零,但它礼貌地拒绝了追问。
回扣:名词化不是”坏”的,它是有代价的工具。代价是冗长和施事模糊,收益是可修饰、可量化、可去施事。你要能说出你买的是哪一份收益。
一句话规则:take X into consideration 的介词是 into。但先问自己要不要名词化——consider X 通常更好;只有需要加形容词修饰(serious consideration)或需要彻底去施事(under consideration)时才用名词。
诊断 16
*He is a very famous engineer who has much experiences.
参考答案
诊断:面 8(数与限定)——experience 的可数/不可数分裂 + much 的语域。
正确说法:
He's a very well-known engineer with a lot of experience. (最自然)
He's an engineer with extensive experience in distributed systems. (最专业)
He's had a lot of different experiences in on-call rotations. (可数用法,意思变了)
为什么?
experience 是英语里可数和不可数意思不同的那类词的典型代表:
不可数 experience = 经验(多年积累的能力)
可数 experience = 经历(一件一件发生过的事)
a. He has a lot of experience. (他很有经验——能力)
b. He had many interesting experiences.(他有很多有意思的经历——事件)
你要表达”资深”,必须用不可数的那一个。 一加 s,意思立刻变成”他经历过很多事”,而且听起来像在讲旅游。
第二个错:much。
much 在肯定句里是极其受限的。它基本只出现在否定句和疑问句里:
a. He doesn't have much experience. (否定句:自然)
b. Does he have much experience? (疑问句:自然)
c. ? He has much experience. (肯定句:生硬,书面到不自然)
肯定句里该用什么?a lot of / a great deal of / extensive / considerable。
为什么 much 在肯定句里受限? 这是一个历史遗留:英语的 much 属于”否定极项”(negative polarity item)倾向的一类词,它天然喜欢待在非断言的环境里。你不需要记这个术语,你只需要记住:肯定句里用 a lot of。
第三个错,很多人看不出来:very famous。
famous 的意思是”广为人知”,它用在明星、景点、品牌上。用在一个工程师身上,语域不对(面 9)。
工程师的”有名”该怎么说?
well-known (在圈内为人所知——最安全)
highly regarded (受同行尊敬——带褒义)
respected (受尊敬的)
a recognized expert in ... (某领域公认的专家——最强)
这四个词的差别不是程度,是”名气”的类型:famous 是大众知名度,well-known 是圈内知名度,highly regarded 是同行评价,recognized expert 是机构认证。
中文说”很有名的工程师”,一个”有名”覆盖了全部四种。 英文逼你选。
一句话规则:experience 表”经验”不加 s,表”经历”才加 s。肯定句里用 a lot of 不用 much。说人用 well-known / highly regarded,famous 留给明星。
诊断 17
*Please be informed that your order has been shipped.
参考答案
诊断:面 9(语域与态度)——过度正式 + 被动祈使句的双重生硬。
正确说法:
Your order has shipped. (现代电商标准写法)
Your order is on its way. (偏友好)
Good news — your order is on its way. (营销邮件)
为什么?
这一句是中式商务英语的头号模板,值得拆开说。
第一,Please be informed that 是一个真正的英语结构吗?
是。它在极度正式的公文里存在(大使馆通知、法院文书)。但它有三个问题:
- 它是被动祈使句——
be informed是”请你被通知”。这个结构把读者放在了一个被动接受的位置,而且命令他用被动语态去接收 inform是个”机构动词”,它预设了上下级关系- 它长了。
Please be informed that四个词,一个信息都没有
第二,它传达的态度是”我在履行告知义务”。
这才是真正的问题。发件人用这个框架,是在说”法律规定我要告诉你这件事,我现在告诉你了”。 电商发给消费者的发货通知,用这个框架,等于把一次本可以愉快的互动变成了一次公文送达。
对比一下真实的电商邮件:
a. Please be informed that your order has been shipped. (公文)
b. Your order has been shipped. (中性被动,还行)
c. Your order has shipped. (现代标准)
d. Your order is on its way! (友好)
e. Good news — your order is on its way and should arrive Thursday. (最好)
c 句值得注意:Your order has shipped.
order 做 ship 的主语? 这在传统语法里是错的——订单不会自己发货,是有人发的。但在现代商业英语里,ship 有一个”不及物的商业用法”:
The order shipped yesterday.
It's shipping now.
The item ships within 24 hours.
这叫”中间语态(middle voice)“或者”受事主语结构”:形式上主动,意义上被动,它描述的是”这个东西在流程中的状态”。它的好处是去掉了施事,也去掉了被动的沉重感。
中文怎么说? “您的订单已发货。” ——中文本来就是受事主语结构,所以这一处中文和现代英文恰好对上了。
一句话规则:Please be informed that 只属于公文。日常商务邮件里,直接用受事主语 + 现在完成(Your order has shipped),或者干脆用 is on its way。
诊断 18
*I want to say sorry for the trouble I made.
参考答案
诊断:面 9(语域与态度)+ 搭配层(make trouble 的语义偏移)。
正确说法:
I'm sorry for the trouble. (口语,最直接)
I apologize for the inconvenience. (正式,标准)
Sorry about that — my mistake. (很口语,很自然)
I'm sorry — that was on me. (承担责任,最诚恳)
为什么?
第一,I want to say sorry 是中文”我想说声抱歉”的直译。
英文里,I want to say sorry 的问题不是语法,是它把”道歉”这个行为拆成了”我想”+“说”+“抱歉”三步。而英文的道歉是一个一步完成的言语行为:I'm sorry / I apologize。
你加了 I want to say,等于在道歉之前先宣布”我打算道歉了”。 这个预告让道歉变得像在表演。
对比中文:“我想说声抱歉”在中文里是自然的、甚至有点郑重的。所以这一个错是纯粹的语用迁移,不是语法问题。
第二,the trouble I made 的语义偏了。
make trouble 在英文里是一个固定短语,意思是**“捣乱、惹事”**——它指的是故意或者习惯性地制造麻烦。
He's always making trouble. (他老是惹事——描述一个熊孩子或者刺头)
Don't make trouble. (别惹事)
所以 the trouble I made 读起来像”我惹出来的那些乱子”——你把自己说成了一个麻烦制造者,而不是一个犯了错的人。
中文的”给你添麻烦了”该怎么说?
a. Sorry for the trouble. (最常用)
b. Sorry to put you to so much trouble. (很客气,"让您费心了")
c. I'm sorry for any inconvenience this may have caused. (正式)
注意 b 句里的 put you to trouble —— 这是”给你添麻烦”的地道对应,它是个固定框架:put someone to trouble。
第三,“道歉”在英文里的强度梯度,值得记一下:
Sorry. -> 最轻,日常
I'm sorry. -> 标准
I'm really sorry. -> 强调
I apologize. -> 正式,书面
I apologize for ... -> 正式 + 具体化(比光说 I apologize 有力得多)
Please accept my apologies. -> 极正式,商业信函
That was my mistake. -> 不道歉,但承担责任(很多场合比道歉更有用)
注意最后一行。 英文职场里,承认具体错误(That was on me / My mistake)往往比泛泛道歉更受欢迎——因为它指向一个可以被修正的行为,而 I'm sorry 只是一个情绪表达。
一句话规则:别译”我想说抱歉”。英文的道歉是一步完成的:I'm sorry / I apologize for X。make trouble 是”惹事”,“添麻烦”是 put you to trouble 或者干脆 sorry for the trouble。
诊断 19
*This incident had a bad effect in customer trust.
参考答案
诊断:搭配层(介词)+ 面 7(名词化的空动词)+ 面 9(形容词 vs 度量)。三个错叠在一起。
正确说法:
This incident had a bad effect on customer trust. (只修介词)
The incident damaged customer trust. (换动词,更好)
We saw a 12-point drop in our NPS after the incident. (换度量,最好)
为什么?
第一个错:介词。 effect 的搭配是 effect ON something,不是 in。
have an effect on X
have an impact on X (impact 和 effect 同介词)
have an influence on X
记一个就行:effect / impact / influence 后面全是 on。
第二个错:had a bad effect 这个空动词结构。
和诊断 11 到 15 一样的问题:have 是空动词,effect 是名词化。还原成动词之后:
The incident had a bad effect on customer trust. -> The incident damaged customer trust.
注意这里不是简单地把 effect 变成 effect 的动词形式(effect 作动词的意思是”促成、实现”,完全不是这个意思,那是个坑)。你需要换一个真正的动词:damage / hurt / undermine / erode。
这四个词的力度不同:
hurt (伤害,通用)
damage (损害,程度重,且暗示需要修复)
undermine (削弱,从基础上,最重)
erode (侵蚀,缓慢的过程,适合形容"信任一点点流失")
erode trust 是这一组里最地道、也最有力量的搭配。 因为信任的流失从来不是一瞬间的,它是一个过程——erode 这个词自带时间形状。
第三个错:bad。
和诊断 13 的 big 一样:形容词没有刻度。
真正的写法是换度量:
a. The incident had a bad effect on customer trust. (不可验证)
b. We saw a 12-point drop in our NPS after the incident. (可验证)
c. Two of our top ten accounts asked about their data during the review. (可验证)
c 句是我最想给你的一句。 它没有用任何”信任”相关的抽象词,它给了一个场景:客户在评审会上问起了他们的数据安全。
读者读到这句,自己会得出”信任受损了”这个结论——而且这个结论比你说一百遍 bad effect 都更牢固。
这就是英文技术写作里那条最高级的建议:Show, don’t tell. 而”展示”在英文里的具体手段,就是给场景、给数字、给引语,而不是给形容词。
一句话规则:effect on / impact on / influence on,介词是 on。但更重要的是——had a bad effect on X 换成 damaged X 或 eroded X,再进一步换成数字或场景。
诊断 20
*According to my opinion, we should roll back first.
参考答案
诊断:面 9(语域与态度)+ 冗余——中式英语的”礼貌堆砌”。
正确说法:
I think we should roll back first. (最自然)
In my view, we should roll back first. (稍正式)
From my perspective, ... (强调"我的立场")
I'd suggest we roll back first. (最礼貌,推荐)
为什么?
according to my opinion 是一个冗余结构,而且冗余得很微妙。
according to X 的语义是”依据 X 这个来源”。它后面应该接一个外部来源:
According to the logs, ... (依据日志)
According to Priya, ... (据 Priya 说)
According to our runbook, ... (依据我们的手册)
According to the postmortem, ... (依据复盘报告)
而 my opinion 不是一个来源,它就是你自己。 说 “according to my opinion” 等于说”依据我自己的看法”——你在引用你自己,把自己当成了外部权威。
这个错为什么在中国人里特别普遍? 因为中文里”按照我的看法”是完全自然的,而且它听起来很客观、很谦虚。中文的”按照/根据”自带一种”我不是在武断”的礼貌。
但英文里 according to 的功能是把信息来源外包,它不提供谦虚。 你想谦虚,得用别的装置:
a. According to my opinion, ... (错:把自己当外部来源)
b. I think ... (中性)
c. In my view / In my opinion, ... (正式,标记"这是我的判断,不是事实")
d. I'd suggest ... / I'd recommend ... (最礼貌:把断言降级为建议)
e. It seems to me that ... (最软:加上"看起来")
d 句值得单说。 I'd suggest 里的 would 不是过去,是委婉标记。它把”我建议”从一句断言降级成了一句提议。这是英文里提反对意见的标准装置。
直接: We should roll back.
委婉: I'd suggest we roll back.
最软: I wonder if it might be worth rolling back first.
第三句用了三层软化:I wonder if(我想知道是否)+ might(可能)+ be worth(值得)。
中文怎么说的? “要不我们先回滚一下?” ——一个”要不”加一个”一下”。
这就是中英文礼貌策略的一个关键差别:
中文的礼貌靠”降级词”(要不、一下、稍微、随便),这些词是加在句子里的装饰。 英文的礼貌靠”形态降级”(would / might / wonder if),它是改句子本身的模态。
所以中国人说英文显得生硬,不是因为不礼貌,是因为我们把礼貌加在了错误的地方——我们加了 please、加了 sorry、加了 according to,但句子的模态还是断言。
一句话规则:according to 后面接外部来源(logs / Priya / the runbook),不接 my opinion。想表达”这只是我的看法”,用 In my view / I'd suggest / It seems to me that,让情态动词替你软化。
诊断训练小结:一张错误地图
十题做完,把错误类型归个类:
| 类型 | 题号 | 本质 |
|---|---|---|
| 时体冲突 | 1, 5, 7, 9 | 时间状语和动词形态打架 |
| 动词的体性 | 2, 6 | 点动词/状态动词被要求做它们做不到的事 |
| 语态 | 3, 8 | 施事的处理 / 不及物动词不能被动态 |
| 语气 | 4 | 条件与结果的形态不对称 |
| 搭配(不属于十面) | 10 | 动词论元结构 |
看这张表,你会注意到一个规律:十题里有四题是时体冲突,两题是动词体性。六题都跟”时间结构”有关。
这不是我挑题的偏差。这就是中国工程师写英文的头号病灶——因为中文的动词完全没有时间形态,我们的大脑里根本没有”动词有时间结构”这根弦。
所以,如果这本练习册你只记住一件事,我希望是这件:
英文的每一个动词,除了意思之外,还自带一个时间形状——点、线、段,或者状态。 你选动词的时候,同时在选它的形状。 中文不需要你选,英文不许你不选。
补充:后十句的错误地图
上面那张表只统计了前十句。后十句(诊断 11 到 20)是特意补的,因为名词化、数与限定、语域这三个维度在前面偏少,而它们恰好是中国工程师的第二大病灶。
| 类型 | 题号 | 本质 |
|---|---|---|
| 名词化(空动词结构) | 11, 12, 15, 19 | 动作被压成名词,再配一个空动词(do / make / have / take),冗长且弱化施事 |
| 数与限定 | 14, 16 | 不可数名词加 s;much 用在肯定句;可数/不可数意思分裂 |
| 语域与态度 | 13, 16, 17, 18, 19, 20 | 形容词无刻度(big / bad);过度正式(Please be informed);中式礼貌堆砌(according to my opinion) |
| 搭配(不属于十面) | 12, 13, 18, 19 | do a discussion / impact to / make trouble / effect in |
看这张表,你会注意到第二个规律:后十句里,有六句跟语域有关,四句跟名词化有关。这两项加起来占了后十句的全部。
这不是巧合。中国工程师的英文有个很典型的两极分化:
一方面,句子"不够正式"——通篇 I think / very bad / a lot of / try our best
另一方面,句子"过度正式"——Please be informed / according to my opinion / I want to say sorry
两个方向都错,而且错的原因是一样的:你在用词和模板上做调整,没有在模态和维度上做调整。
想显得不武断?别加 according to,改用 I'd suggest / It seems to me。
想显得专业?别用 big / bad,改用数字和范围。
想显得客气?别加 please 和 sorry,改用 would / might / I wonder if。
语域不是一个”用词难度”的问题,是一个”模态 + 度量 + 措辞”的组合问题。
回扣热身:你说不出理由的那几句
回到第四部分开头的那个热身。
你当时挑了三句”最别扭”的。现在问你一个问题:
你挑的那三句,和你挑完之后写下的理由,能对上吗?
我猜大概率是这种情况:挑对了,理由说错了。 或者更糟——你挑的是前十句里那些明显的时态错,而真正让你在真实写作里丢分的后十句,你一句都没挑出来。
为什么会这样?
因为前十句的错是形态错——yesterday 撞了完成体,is crashed 撞了瞬时动词。这些错有一个明确的”规则”可以对照,你查一下时态表就能判断。
后十句的错是”选择错”。have a discussion 语法全对、搭配也对,它只是比 discuss 差。a significant impact 语法全对,它只是不如一个数字有力。Please be informed that 语法全对、还很正式,它只是用错了场合。
这些错误没有任何一条规则可以判定,因为错的不是语法,是判断。
而这正是你在第四部分开头的进入卡点里体验到的那一刻:
你能感觉到别扭 -> 语感在工作(这是好事,说明你读得够多)
你说不出理由 -> 没有维度表(这是问题,说明你没法复现这个判断)
二十句做完,你现在应该有第二样东西了。下次写英文的时候,如果某个句子让你觉得”好像差点意思”,别再靠感觉改词——按维度往下扫:
第一步:搭配层 动词的介词、及物性、可数性对不对?(编译错误)
第二步:面 7 有没有"空动词 + 动作名词"?能不能还原成动词?
第三步:面 8 名词可数吗?加了 s 吗?much 用对了吗?
第四步:面 9 形容词有没有刻度?正式度对不对听众?
第五步:面 1/2 时间形状对不对?(这是老病灶,但优先度其实在第五)
注意这个顺序和第四部分开头给的那个口诀不完全一样。 开头给的是通用顺序(搭配 -> 十面),这里是针对中国工程师的实战顺序——因为在你身上,名词化和语域的命中率比时体还高。
第五部分:终极迁移(举一反三的真正检验)
前面四部分,你都在 Pallet 那次事故里打转。
好处是你不用分心去理解事实,可以全神贯注于形态。坏处是——你可能只是在背这个案例的十句话。
现在换个事件。
一个和数据库、和 Lin、和 Pallet 毫无关系的事件。如果你还能切出十面,那说明十面长在你身上了;如果你切不动,说明前面四部分你只是看懂了,没学会。
这一节是全册的高潮。请务必自己先写一遍,再看答案。
进入卡点:就四个字,你现在切三面给我看
在给你新事件之前,先用一句话做个热身。
给你一句中文,请你现在就把它切成三个面:时间坐标、语态与主语、语域。三个面,各写一句英文。
“航班延误了。”
动笔。别往下看。
(一分钟)
好。我猜你写出来的要么是空着,要么是这三句:
时间坐标:The flight was delayed. (或者 *The flight has been delayed.)
语态: The flight was delayed.
语域: The flight was delayed.
三面写了三句一模一样的话。
这就是这一节存在的理由。
现在我说清楚你为什么切不动。
你切不动,不是因为你不会这三个维度——前面四部分你练得很熟了。你切不动,是因为这四个字里根本没有足够的字段。
逐个看:
"航班延误了。"
时间坐标 —— 什么时候的航班?今天?上周?2025 年?
现在还延误着吗?延误多久了?
我是在讲这一次,还是在讲"我老遇上这事"?
-> 四个字里,一个都没回答
语态 —— 谁延误了它?航司?空管?天气?
我要不要提这个施事?
-> 四个字里,"了"不区分主动被动
语域 —— 我在跟谁说?同机的乘客?接机的家人?报销的财务?投诉信?
-> 四个字里,没有任何受众标记
中英文的差别在这儿暴露得最彻底:
“航班延误了”是一个”事件类型”的标签,不是一个”事件实例”的描述。
中文允许你只说类型,把实例交给语境。英文要求你必须描述实例——而且每一个维度都要填。
计算机类比:中文给你的是一个 type(type DelayEvent struct),字段全是空值。英文要求你提交一个 instance(一个所有必填字段都填了的实例)。你一直以为自己在翻译,其实你在做实例化。
生活类比:这就像有人跟你说”吃饭了吗”。这句话在不同语境下是问候、是邀请、还是催你走——但它的字面完全一样,全靠语境。你要把它转述给一个不在场的人,你就必须把语境补上:“他问我吃没吃饭(是客气,不是要请我)。”
你现在明白为什么我非要先给你完整的事件卡了。
下面这张卡上的每一行——日期、航站楼、航班号、时间线、乘客情况、补偿、后续——都不是”背景资料”,它们是那四个字里缺失的字段。 你把字段填上,十面立刻切得动。
拿好这张卡,再看一遍那四个字。你会发现自己已经能切了。
新事件:一次航班延误
日期: 2025 年 8 月 3 日,星期日
地点: 上海浦东机场 T2 航站楼
航班: MU5137,浦东 -> 北京首都
原定起飞: 14:30
实际起飞: 17:05(延误 2 小时 35 分)
实际降落: 18:50
时间线:
13:40 雷暴过境,机场实施流量控制
14:00 广播通知航班延误,未说明具体原因
16:20 开始登机
17:05 起飞
18:50 降落北京
乘客情况: 有一位乘客当晚 19:30 在北京有一场重要会议
最终迟到 40 分钟
补偿: 航空公司发放了餐券,没有现金赔偿
后续: 现在是 2026 年 9 月
这位乘客此后养成了"重要会议前一晚飞"的习惯
你的任务:用十个维度,各写一句英文。每句都要说明:这一面我选了什么,思维差异在哪。
写之前,先把事件核命题写出来(就像母案例那样):
2025 年 8 月 3 日,MU5137 因雷暴导致的流量控制延误 2 小时 35 分,使一位乘客错过了会议的前 40 分钟;航空公司只提供了餐券,没有现金赔偿。
好,开始。写完十句,再往下翻。
完整参考答案:十面全写
面 1:时间坐标(时 + 体)
Flight MU5137 was delayed by 2 hours and 35 minutes on August 3, 2025.
中文:MU5137 航班在 2025 年 8 月 3 日延误了 2 小时 35 分。
思维差异:on August 3, 2025 是一个封闭的过去时间,所以只能用一般过去时。这一句是”历史陈述”,它把整件事封进一个有明确边界的盒子里。
必须做的对比:
a. Flight MU5137 was delayed by 2h35m on August 3, 2025. (封闭过去,一般过去)
b. I've been delayed on that route twice. (开放窗口,现在完成)
c. This kind of thing has happened to me before. ("before" + 完成,经验)
b 和 c 里没有具体日期,所以完成体成立。中文里”我在这条航线上被延误过两次”和”MU5137 在 8 月 3 日延误了”用的是同一个”了/过”——中文的”过”确实有完成的味道,但它不要求和”现在”的窗口关系,英文要求。
这一面的选择点在哪? 在于你是在讲一个故事,还是在讲一个规律。
- 讲故事(有日期):一般过去
- 讲规律 / 讲经验(无日期):现在完成
- 讲持续到现在的后果:
Since then, I've always flown in the night before.
和母案例的对照:母案例里 Lin ran the migration on November 12, 2024. 和这里的 a 句是同一个形态,同一套逻辑。这就是迁移——你不需要重新理解规则,你只需要认出”这是一个封闭的过去时间”。
面 2:完成性与过程(点 / 线 / 结果)
这一面你需要写四句,因为它本身就包含四种看法:
点(事件): The delay was announced at 14:00.
线(过程): We were sitting at the gate for two and a half hours.
结果(倒带):By the time we boarded, I had already missed the first half of the meeting.
持续(进行):I had been waiting at the gate for over two hours when boarding finally started.
中文:
点:14 点广播了延误通知。
线:我们在登机口坐了两个半小时。
结果:我们登机的时候,我已经错过了一半的会议。
持续:开始登机时,我已经在登机口等了两个多小时。
思维差异,一句一句说:
点:was announced 是一个瞬时事件,它在时间轴上占一个位置。中文”14 点广播了”里,“了”承担了这个功能。
线:were sitting 是进行体,镜头推近到过程内部。注意这句里的”坐”在中文里也带”着/在”,所以中英文这一处比较接近。 但英文额外要求:持续段用 for two and a half hours,而且动词必须是可持续的(sit 可以,announce 不行)。
结果:这是本组最精彩的一句。had already missed 是过去完成,它的锚点是 we boarded(16:20)。但妙处在于:会议是 19:30 开始的,登机是 16:20——按时间顺序,登机在开会之前。
那为什么说”登机的时候我已经错过了一半会议”?
因为说话人在这里做的是心理时间的倒带,不是物理时间的倒带。他的意思是:从 16:20 那一刻起,我错过会议这件事就已经是注定的了。
这个”注定”,中文一个字都没写,英文用 had already missed 写出来了。
这是过去完成时最微妙的一个用法:它可以表达”在锚点时刻,某事在因果上已经确定”。 母案例里 By the time Lin woke up, the error rate had already hit 34%. 是同样的结构——都是用一个已经发生的形态,去标记一个”那时已成定局”的事实。
持续:had been waiting 是过去完成进行,强调”等”这个动作的持续和徒劳。它比 had waited 更有”两个多小时的煎熬”的感觉。
这一面的选择点:你想让读者看到事件的哪一帧? 是公告那一瞬、是等待那一段、还是”已经注定”那个倒带?
面 3:语态与主语选择
施事在场: The airline delayed our flight.
受事当主语:Our flight was delayed.
施事消失: Our flight was delayed due to air traffic control.
存现: There was a delay of two and a half hours.
中文:
航司延误了我们的航班。
我们的航班被延误了。
我们的航班因流量控制延误。
延误了两个半小时。
思维差异:
第一句 The airline delayed our flight. 是指控。主语是航司,动词是 delay,航司干了这件事。你在投诉信的开头会这么写。
第二句 was delayed 是中性陈述。
第三句 was delayed due to air traffic control —— 这句是这一组最值得琢磨的。
它把施事换成了 air traffic control(流量控制)。而流量控制是一个制度性的、非人格的力量。所以这句的功效不是甩锅,是免责说明:“不是航司不想飞,是空管不让飞。”
对比母案例:母案例里 Mistakes were made. 是甩锅(因为施事是人,被藏起来了)。这里 was delayed due to air traffic control 不是甩锅——恰恰相反,它是在交代一个可以为航司开脱的施事。
这就是迁移能力的核心考验:同样的被动语态,功能可以是甩锅,也可以是免责,取决于施事是”人”还是”天”。
你如果只是背了”被动=甩锅”,到这里就会判断错。
第四句 There was a delay of two and a half hours. 是存现句,把”延误”变成容器,把”两个半小时”放进去。这里连”我们的航班”都不见了——延误成了一个独立存在的东西。
这一面的选择点:你想让读者把这笔账记在谁头上?航司、空管、还是”命运”?
面 4:焦点与信息包装
强调原因: It was the thunderstorm that caused the delay.
强调后果: What I missed was the first 40 minutes of the meeting.
句尾焦点: The flight didn't leave until 17:05.
中文:
是雷暴导致了延误。
我错过的是会议的前 40 分钟。
飞机直到 17:05 才起飞。
思维差异:
第一句是 it 分裂句,预设”有原因”,断言”是雷暴”。它适合回应一个具体的疑问:“到底为什么延误?“——特别是当有人猜错原因的时候(“是不是飞机故障?”)。
第二句是 wh-分裂句,把”我错过了什么”这个整体打包成主语,然后给出答案。这个结构特别适合强调后果的严重性——因为把 What I missed 放在句首,读者的注意力被锁在”损失”上,整整半句的时间。
第三句用了 not ... until 框架。这是英语里表达”迟到”最有力的结构。
对比:
a. The flight left at 17:05. (中性:17:05 起飞)
b. The flight didn't leave until 17:05. (强调:直到 17:05 才起飞)
两句的事实完全一样。 但 a 回答的是”什么时候起飞的”,b 回答的是”等了多久”。not ... until 把读者的注意力从终点转移到了等待的过程。
中文里”飞机 17:05 才起飞”——一个”才”字。英文里是一个 not ... until 框架,横跨主句和状语。
这一面的选择点:你想让读者先看到哪一块? 英文的信息流是”旧信息在前,新信息在后”(句尾焦点原则)。所以你要把最重要的东西放在最后,或者用分裂句把它提到最前面打光。
面 5:确定性与言据
引用来源: The announcement said the delay was due to air traffic control.
传闻: It was apparently a flow-control issue.
推断: The delay must have been caused by the thunderstorm.
言据缺失: The airline never explained what actually happened.
中文:
广播说延误是因为流量控制。
好像是流量控制的问题。
延误肯定是雷暴造成的。
航空公司从来没解释过到底怎么回事。
思维差异:
第一句是转述。注意 said 用了一般过去——英文的转述通常需要时态呼应(“广播说延误是因为……” -> said ... was,两个都是过去)。中文没有这个呼应。
第二句的 apparently 是传闻标记(hearsay marker),意思是”据我所知/据说,但我没核实”。它和母案例里的 The logs suggest 是同一族——都是在给命题打可信度标签,只不过一个标来源,一个标强度。
第三句的 must have been caused 是高置信度推断。说话人没有直接证据(没看到雷暴的官方通报),但根据时间线(13:40 雷暴 -> 14:00 延误)推出结论。
第四句是这一组里最锋利的一句:它报告的不是信息,是信息的缺席。
The airline never explained what actually happened. —— 主语是航司,动词是 explained,否定是 never。这是一个指控,但它指控的是”没有解释”这个事实,而不是”延误”本身。
这在投诉信里是黄金句式。因为你没法证明航司做错了什么(天气是免责的),但你能证明它没告诉你发生了什么——而这个是可以追责的。
母案例对照:The runbook didn't say how to abort. 是同一个句式的同一个功能。你看,迁移其实就这么朴素:认出”我在指控一个信息的缺席”。
面 6:语气与非真实
反事实(自己): If I had flown in the night before, I would have made the meeting.
后悔(评价): I should have taken the earlier flight.
反事实(航司): Had the airline offered cash compensation, I might have felt differently.
中文:
要是我前一晚飞,就能赶上会了。
我应该坐更早那班的。
要是航司给了现金赔偿,我可能不会这么想。
思维差异:
第一句是标准虚拟:If + had done, would have done。中文”要是……就能”里的”能”其实带了点情态,但中文不要求形态配套。
注意这句的隐含断言:I had flown 在说”我没前一晚飞”。would have made 在说”我没赶上”。两个”没”,一个字都没写。
第二句的 should have done 是”过去本该做而没做”。它比第一句更直接地指向自己——第一句在推演一个平行世界,第二句在评价自己的决定。
第三句是这一组最妙的。
Had the airline offered cash compensation, I might have felt differently.
三个装置:
Had ... offered—— 倒装虚拟,说”航司没给”might have felt—— 注意是might不是would。would have felt是”我一定会觉得不同”,might have felt是”我可能会觉得不同”。说话人在这里收了力——他不想承诺”给了钱我就不生气”,他只说”给钱可能会让我好受点”。differently—— 一个模糊的副词,不具体说”好多少”。
这句的语用效果是:它提出了一个诉求(要现金赔偿),但用的是最不冒犯的形式——一个反事实条件句,一个 might,一个模糊副词。
中文说”要是给点现金赔偿我可能就不这么想了”——中文的”可能”和”可能”是完全一样的字面,但中文没有倒装、没有虚拟形态,所以整句话的”委婉装置”少了一半。
这一面的选择点:你想进入假设世界(虚拟),还是留在现实世界给建议(真实)?
从虚拟转到真实,就是行动项:
虚拟:If I had flown in the night before, I would have made it.
真实:From now on, I always fly in the night before any important meeting.
和母案例完全同构:If Lin had used gh-ost... -> Going forward, all migrations go through gh-ost.
面 7:名词化
一级(动作名词):The delaying of our flight cost me the first 40 minutes of the meeting.
二级(结果名词):The 2-hour-35-minute delay cost me 40 minutes of my meeting.
三级(整体打包):The lack of any cash compensation was the most frustrating part.
中文:
航班被延误让我错过了会议的前 40 分钟。
这两小时三十五分的延误让我错过了 40 分钟的会议。
没有任何现金补偿是最让人不爽的。
思维差异:
一级其实很别扭——the delaying of our flight 是语法正确但极不自然的说法。我把它列出来,是为了让你看到:名词化不是”把动词变成名词”这么简单,有些动词的名词形式就是不好用。 delay 恰好本身既是动词又是名词,所以直接用二级。
二级 The 2-hour-35-minute delay —— 注意:
2-hour-35-minute里有三个连字符,每个数字后面的名词都不加 s(hour不是hours)- 整个短语是
delay的前置定语 - 主语从”飞机”变成了”延误”这个东西
关键效果:cost me 40 minutes of my meeting —— 一个抽象名词(delay)做了主语,一个及物动词(cost)做了谓语,一个具体的时间段做了宾语。
这个句式是英语里表达”损失”的最强结构:[抽象事件] + cost + [人] + [代价]。
中文说”我错过了 40 分钟”——主语是我。英文说”这次延误花掉了我 40 分钟”——主语是延误。中文以人为主语,英文以事件为主语。 这个差别在索赔信里至关重要:以事件为主语,听起来更客观、更像在陈述损失;以人为主语,听起来像在诉苦。
三级 The lack of any cash compensation —— 和母案例的 The lack of a documented abort procedure 是同一个模板。
The lack of X was Y.
这个模板的威力在于:它把”航司没给钱”这个行为,变成了”钱这个东西不存在”这个状态。 一个可以追责的省略,变成了一个客观的短缺。
母案例 -> 航班延误的直接迁移:
The absence of any documented abort procedure was the single biggest contributor.
The absence of any cash compensation was the most frustrating part.
这两句的语法骨架一模一样。 你不需要重新学,你只需要认出”这里又是’某个东西不存在’“。
面 8:数与限定
首次提及: There was a delay. (不定指)
二次提及: The delay lasted two and a half hours. (定指)
泛指复数: We got meal vouchers. (零冠词 + 复数)
具体单数: We each got a 50-yuan meal voucher. (不定指 + 单数)
绝对否定: No cash compensation was offered. (No + 名词)
部分否定: Not all passengers got hotel rooms. (Not all)
约数: Some 200 passengers were affected. (Some + 数字)
中文:
延误了。
延误持续了两个半小时。
我们拿到了餐券。
我们每人拿到一张 50 元的餐券。
没有现金赔偿。
不是所有乘客都拿到了酒店。
大约 200 名乘客受影响。
思维差异:
中文没有冠词系统,所以这一面是中文迁移到英文时信息丢失最严重的一面。
逐条说:
a delay vs the delay:第一次提到用 a,第二次用 the。中文”延误了”和”这次延误”——中文靠”这次”这个指示词,英文靠冠词。中文的指示词是可选的强调,英文的冠词是强制的。
meal vouchers vs a meal voucher:
We got meal vouchers.—— 复数泛指,焦点在”餐券”这个类别,不关心数量We each got a 50-yuan meal voucher.—— 单数具体,焦点在”一张 50 元的”这个规格
在投诉信里,你永远用后者。 因为复数泛指把损失模糊化了,单数具体把损失量化了。中文里”我们拿到了餐券”和”我们每人拿到一张 50 元的餐券”,信息量差别很大,但语法上都成立——英文逼你选。
No cash compensation was offered. 是这一组里最值得学的。
对比三种否定:
a. The airline didn't offer cash compensation. (航司没提供现金赔偿——陈述)
b. The airline offered no cash compensation. (航司没有提供任何现金赔偿——强调"零")
c. No cash compensation was offered. (没有任何现金赔偿——最强,连主语都是否定的)
No + 名词 打头,是英语里最强的否定形式。它把否定从”谓语没做”提升到了”这个东西在世界上不存在”。
而且 c 用了被动,航司连出场都不用了。双重装置:主语位置是 No,施事位置是空的。 整句话没有一个人在做事,但它是一句极其锋利的指控。
Not all passengers got hotel rooms. 是部分否定,和 No passengers got hotel rooms.(全部否定)相对。中文”不是所有乘客都拿到了”和”没有乘客拿到”——中文靠词序,英文靠 Not all vs No。
Some 200 passengers —— some + 数字 = “大约”。这是个书面用法,about 200 更口语。注意 some 在这里不是”一些”,是”约”。中文”大约 200 名”。
面 9:语域与态度
同一件事,四种场合,四种英文:
朋友吐槽: The flight was a nightmare — two and a half hours sitting on the floor at Pudong.
中性汇报: The flight departed at 17:05, 155 minutes behind schedule.
正式投诉: I am writing to express my dissatisfaction regarding the handling of flight MU5137 on 3 August 2025.
航司口径: We apologize for any inconvenience caused.
中文:
朋友:这航班简直是噩梦——在浦东的地上坐了两个半小时。
汇报:航班 17:05 起飞,晚点 155 分钟。
投诉:我写此信,就 MU5137 航班 2025 年 8 月 3 日的处置表达不满。
航司:给您带来的不便,我们深表歉意。
思维差异:
朋友吐槽:nightmare 是情绪词,sitting on the floor 是具体画面(不一定真坐地上,但就是那个感觉),破折号后面是一个非正式的补充说明。整句是口语的、主观的、带画面的。
中性汇报:departed 而不是 left(更正式),155 minutes behind schedule 而不是 2 hours and 35 minutes late(用分钟数显得专业、客观)。注意 behind schedule 这个搭配——它是航空业的标准说法,比 late 中立得多。
late 暗示”犯错”,behind schedule 只说”偏离了计划”。这就是行业术语的语域功能:用中性词替换带评价的词。
正式投诉:几个装置
I am writing to express my dissatisfaction regarding...—— 书信固定开头dissatisfaction而不是anger(控制情绪,显得理性)regarding the handling of——handling是个名词化,把”你们怎么处理的”打包成一个抽象名词。这个选择极其精妙:它把指控对象从”延误”(天气,免责)转移到了”处置方式”(航司的行为,可追责)。flight MU5137 on 3 August 2025—— 英式日期格式(日在月前),正式文书常用
航司口径:We apologize for any inconvenience caused.
这是英语公关史上最著名的一句话,值得拆到骨头里。
any—— 不是the。the inconvenience承认了有不便,any inconvenience是”如果有任何不便的话”。一个词,把承认变成了假设。inconvenience—— 不是loss、不是damage、不是distress。inconvenience是”不便”,是这一组词里最轻的一个。你错过了一场重要会议,他们说这是”不便”。caused—— 被动的后置定语,没有施事。“造成的不便”——谁造成的?没说。
三个装置,一句话同时完成了:弱化、假设化、去施事化。
中文的对应是”给您带来的不便,我们深表歉意”——中文的”不便”同样轻,但中文的”给您带来的”其实默认了有这个东西,而英文的 any 是否定的假设。英文这一句比中文的官方套话还要滑一档。
面 10:视角与叙事距离
现场(当时): We're still sitting at the gate. No idea when we're leaving.
事后(现在): Looking back, that delay changed how I travel.
现状(持续): Since then, I've made it a rule to fly in the night before any important meeting.
反转(双层): The guy who missed that meeting now never books a morning flight before a big one.
中文:
我们还坐在登机口,不知道什么时候能走。
回头看,那次延误改变了我的出行方式。
从那以后,我定了个规矩:重要会议前一晚飞。
那个错过了会的人,现在再也不会在大日子前订早班机了。
思维差异:
现场:We're still sitting 是现在进行时——但注意,这个进行时不是”当时正在写”,而是**历史现在时(historical present)**或者是在模拟当时的朋友圈/消息。
如果你是在复述当时发的微信,这句就是真实的现在进行时(因为发的时候就是现在)。如果你是在一年后讲这个故事,用现在时是一种叙事技巧——把读者拉回现场。
这是第十面最直观的操作:你想让镜头离现场多远?
- 现在时 = 镜头贴脸,读者在现场
- 过去时 = 镜头退后,读者在听故事
- 现在完成 = 镜头在现在,回头看一整段
事后:Looking back 是一个分词短语,它显式地标记了叙事位置的转换——“我现在站在 2026 年,往 2025 年看”。
中文”回头看”三个字,英文 Looking back 两个词。这一处中英文几乎完全对应,是少数可以直接迁移的表达。 但你要注意它的语法后果:一旦用了 Looking back,后面就可以自由地在过去时和现在时之间跳了。
现状:Since then, I've made it a rule to... —— 现在完成时 + since then,表达”从那次事件之后一直持续到现在的习惯”。
这里有个细节值得学:make it a rule to do something 是个固定框架,意思是”给自己定了个规矩”。it 是形式宾语,真正的宾语是后面的不定式。这个框架是英语里表达”习惯改变”最地道的方式之一,比 I always do X now 更有”刻意制定”的味道。
反转:The guy who missed that meeting now never books a morning flight before a big one.
这句是母案例最后那句的完美对位:
母案例:Lin now runs on-call training — the same engineer who locked the orders table in 2024.
航班: The guy who missed that meeting now never books a morning flight before a big one.
两句话的语法骨架完全一样:
[现在的身份/行为,现在时] <- [who 从句,过去时,指向同一个人的过去]
the same engineer who... / the guy who... —— 都是用关系从句把两个时间点上的同一个人绑在一起,让读者自己感受张力。
这就是迁移的实证:你不需要学新规则,你只需要认出”这里又是人物弧光”。
十面合成:一段真实的文字
十面单练完了。真实语篇里,它们是一起工作的。给你一段把多面同时用上的示范:
What happened was that our flight sat on the ground at Pudong for two and a
half hours on August 3. There had been a thunderstorm at 13:40, and by the
time we finally boarded at 16:20, I had already written off the meeting.
The airline never really explained what was going on — the announcement just
said "flow control." We got meal vouchers, but no cash compensation was
offered, which, given that I missed the first 40 minutes of a meeting I'd
flown 1,200 kilometers for, felt a bit thin. Since then, I've made it a rule
to fly in the night before anything that matters.
这段话里出现了哪些面?
| 子句 | 面 |
|---|---|
What happened was that... | 面 4(wh-分裂,开场框架)+ 面 3(施事缺席) |
sat on the ground for two and a half hours | 面 2(持续体,过程) |
on August 3 | 面 1(封闭过去,一般过去) |
There had been a thunderstorm at 13:40 | 面 1(过去完成 + 锚点)+ 面 4(存现句) |
by the time we boarded, I had already written off | 面 2(倒带 + 锚点 16:20)+ 面 6(write off 是心理反事实) |
The airline never really explained | 面 5(指控信息缺席) |
We got meal vouchers | 面 8(复数泛指) |
no cash compensation was offered | 面 8(No 打头)+ 面 3(被动)+ 面 7(名词化) |
Since then, I've made it a rule | 面 1(现在完成)+ 面 10(视角在现在) |
七句话,几乎每一句都同时在动三四个旋钮。
这就是真实英文的样子。你现在能看出它们在干什么了——这就是”读得懂”。而你自己写的时候能主动这么安排,那就是”转得动”。
自测事件二:一次搞砸的面试
这一节只有事件和提示,不给完整答案。
你已经练过一次带答案的迁移了。这一次,自己来。写完之后,用文末的自检清单逐条过一遍。
时间: 2026 年 3 月 12 日,星期四,下午
地点: 北京,某公司办公室(也可线上面试)
轮次: 第三轮技术面
岗位: Go 后端工程师
事件经过:
14:00 面试开始,计划 45 分钟
14:10 面试官问:"有多个 sender 的 channel,怎么优雅关闭?"
14:12 候选人回答:让每个 sender 在写完之后 close 掉 channel
14:14 面试官提示:"如果其中一个 sender close 了,其他 sender 再写会怎样?"
14:18 候选人没接住,开始扯 select 的用法
14:30 面试提前结束
14:45 候选人走出大楼,在地铁上突然想明白:应该由一个额外的
协调者 goroutine 在收到所有 sender 的 done 信号后再 close
3 月 15 日 收到拒信,理由是"技术深度未达预期"
现状(2026 年 9 月):
这人把 Go 并发那一章重学了一遍
开始在团队内部做技术分享,第一讲就是"channel 关闭的四种模式"
已经面过了另外两家公司,拿到了一个 offer
十面提示(每面一个问题,不给你答案):
- 时间坐标:这件事有明确日期(2026 年 3 月 12 日),但也有”现状”(2026 年 9 月)。你在讲哪个时间平面的事?如果讲”从那以后我重学了并发”,该用什么形态?
- 完成性与过程:面试是一个 30 分钟的过程,还是一次失败的结果?“他答错了”是点,“他答错了然后越描越黑”是线。你要哪个?
- 语态与主语选择:主语是”我”(I bombed the interview)、还是”那道题”(The question threw me)、还是”那次面试”(The interview didn’t go well)?责任的落点在哪儿?
- 焦点与信息包装:你想强调的是”面试官问的那道题”、“我答的那个错误答案”、还是”我回家路上想明白了”这个反转?
- 确定性与言据:拒信上写的是”技术深度未达预期”。你信这个理由吗?如果你不信,该怎么说才不显得你在找借口?
- 语气与非真实:
If I had thought for another ten seconds.../I should have said.../I wish I had...—— 这三个有什么区别?哪一个最有用? - 名词化:把”我答错了”变成名词,能变成什么?
My answer?The mistake?My failure to...?哪一个最适合放进一份”我学到了什么”的复盘? - 数与限定:
a question还是the question?the interviewer还是an interviewer?I've done three interviews since then和I did three interviews有什么区别? - 语域与态度:对朋友吐槽、写在个人博客上、写进给下一家公司的自我介绍——三种场合,三种英文。特别注意:博客上的版本要显得坦诚但不自贬,怎么写?
- 视角与叙事距离:站在 2026 年 9 月回头看,“那次失败的面试”和”我现在每周做技术分享”之间,你能造出一个和母案例一样的人物弧光句吗?
简答(每面给一句,只给方向,不给讲解):
1. I bombed a Go interview in March. It's now September, and I've since
rebuilt my concurrency fundamentals from scratch.
2. I was still talking about select when he cut me off at 14:30.
3. The question wasn't hard — I just answered it from the wrong direction.
4. It wasn't the question that killed the interview. It was that I didn't
stop to think when he pushed back.
5. The rejection email said "technical depth below expectations." I'm not
sure I buy that, but the feedback stung enough to act on.
6. If I had paused for ten seconds, I'd have seen it. I should have said
"let me think about that" instead of filling the silence.
7. My failure to distinguish "who closes" from "who sends" cost me that offer.
8. Three interviews later, I had an offer.
9. Long story short: I got a concurrency question wrong in a way I should
have outgrown, and it turned out to be the best thing that happened to
me that year.
10. The guy who couldn't explain channel closing in March now gives a talk
on it — four patterns, forty slides, every new hire in the room.
写完之后,对照母案例问自己一个问题:
我在航班延误和这次面试里,用到的句子结构,有几个和母案例是同一个模板?
答案是:至少六个。 如果你找到的不止六个,说明你已经会迁移了。
自测事件三:楼下开了十年的面馆倒闭了
这一节只有事件和提示,没有简答,更没有完整答案。
前两个事件,一个给了完整十面,一个给了十面方向。这一个什么都不给。
理由是这个事件的特殊性:它没有责任人,但每个人都是责任人;它不是事故,但每个人都觉得损失了什么。 这种事件是第十面(视角与叙事距离)和第九面(语域与态度)的极限测试——你怎么切,取决于你站在谁的立场上,而不是取决于事实。
这恰恰是最难的一种迁移。
店名: 老马牛肉面
位置: 北京海淀区某小区东门外,临街,32 平米,六张桌子
经营者: 马建军(老马),52 岁,甘肃天水人,掌勺
妻子王秀兰,49 岁,煮面、收银、收拾
时间线:
2016-04-18 开业。前三个月靠小区居民和东侧写字楼的午市撑着
2018 - 2022 稳定期。中午排队排到门外,外卖占营业额四成
2023-06 小区东门的外卖柜换成另一家平台,抽成从 18% 涨到 23%
2024-09 隔壁开了一家连锁面馆,装修新,有空调,人均 26 元
2025-11 写字楼里三家公司搬走,午市客流掉了一半
2026-06-28 老马在玻璃门上贴了一张 A4 纸:"转让,联系电话……"
2026-07-15 最后一天营业,卖了 41 碗面,比平时少六成
2026-08 原址装修,新开了一家蜜雪冰城
人物:
老马: 52 岁,膝盖不好,站一天要吃两片止痛药
陈默: 35 岁,小区居民,从单身吃到孩子上小学,在这家店吃了十年
最后一天他特意去吃了碗面,临走拍了张照,没跟老马说话
后果:
老马夫妇回了天水,临走在小区群里发了一句:"谢谢大家十年照顾。"
小区群那天刷了两百多条,大部分是"啊?"和"怎么会"
陈默发了条朋友圈,只有四个字:"十年了。"
陈默后来换了一家面馆,他说"味道不对",但没说是哪儿不对
现状(2026 年 9 月):
蜜雪冰城生意不错,排队的多是放学的孩子
老马偶尔在群里发天水的照片,没人回,他还是发
陈默冰箱上贴着那家店的外卖单,过期了三个月,没撕
你的任务:十面全切,每面一句。写完之后,用文末的自检清单逐条过一遍。
十面提示(只是问题,不是答案):
- 时间坐标:这家店”开了十年”和”在 2026 年 7 月 15 日关了”是同一件事吗?一个用现在完成,一个用一般过去,你打算怎么安排?还有——“我在这家店吃了十年”该用什么形态?注意这句话可能有两种意思(吃了十年,还在吃 / 吃了十年,然后没了)。
- 完成性与过程:倒闭是一个瞬间的事件(贴 A4 纸、关门)还是一个缓慢的过程(客流一年年掉)?你想要哪一种?如果要过程,你的动词选对了吗?
- 语态与主语选择:主语是老马(
Lao Ma closed the shop)、是店(The shop closed)、是外卖平台的抽成、是搬走的那三家公司、还是”时代”?注意这一题和母案例最大的不同:这里没有人在甩锅,但每一种主语选择依然在回答”该怪谁”。 - 焦点与信息包装:你想让读者先看到”十年”、看到”41 碗”、还是看到那句”谢谢大家十年照顾”?如果要强调”十年”这个数字,你能想到几种结构?
- 确定性与言据:老马为什么关门,你真的知道吗?你只有时间线,没有他的账本。你能不能写一句既不下断言、又不显得在瞎猜的话?
- 语气与非真实:
If the delivery platforms hadn't raised their cut...这类句子在这里管用吗?如果没有一个清晰的”要是当初……”可以写,那这一面你该写什么? - 名词化:把”这家店开了十年然后倒闭了”压成一个名词短语,你能压到几级?
The closure of...?Ten years of...?The loss of...?哪一级最适合做一段话的开头? - 数与限定:
a noodle shop还是the noodle shop?for ten years还是for a decade?41 bowls和41 bowls of noodles有区别吗?最后一天只卖了 41 碗——这个数字你要放大还是缩小,怎么做? - 语域与态度:这一题是本事件的重点。四种场合都试试:陈默发朋友圈、在小区群里通知邻居、写进本地生活公众号的一篇稿子、写进一份”城市小微商业生存状况”的调研报告。特别注意最后一种——在调研报告里,“老马”和”那家店”还该不该有名字?
- 视角与叙事距离:你能造出人物弧光句吗?注意这里有两个人:老马(从开店到回天水)和陈默(从单身到孩子上小学)。你选谁当弧光的载体,决定了这段话是悲剧还是怀旧。 另外——最后一句你打算把镜头放在 2026 年 9 月的哪个画面上?蜜雪冰城的队伍?天水的照片?还是冰箱上那张过期外卖单?
写完之后,问自己三个问题:
一、我这十句里,有几句可以不改一个词就直接用在"一家 SaaS 公司倒闭"的报道上?
(如果六句以上,说明你切的是通用结构,不是这个事件。)
二、我这十句里,有没有一句能让一个没来过这个小区的人,也觉得有点难受?
(如果没有,说明你把事件抽象化了,但没给它画面。)
三、我有没有用"倒闭""关门""歇业""转让""结束营业"之外的说法?
(中文里这五个词可以互换;英文里 closed / shut down / went out of
business / closed its doors / called it a day 的语域和温度完全不同。)
这一题没有标准答案,因为它的答案取决于你认为这件事”是关于谁的”。
第五部分收尾:回扣那四个字
回到本部分开头的进入卡点。
你当时拿到”航班延误了”四个字,三面切出了三句一模一样的话。现在你已经做完了两个完整事件(航班延误、搞砸的面试),也拿到了第三个事件(面馆)的提示。
再给你一次机会:回到”航班延误了”这四个字,你现在能切出几个面?
答案当然是十个。但我想让你注意的不是这个数字,是你现在的切法和当时的切法有什么不同。
当时你是这么做的:
拿到中文 -> 查词 -> 排语序 -> 选时态 -> 输出
现在你应该是这么做的:
拿到中文 -> 问:对谁说?在什么年份说?想让读者记住什么?
-> 选维度 -> 选形态 -> 输出
中间多了的那个”问”,就是这本书的全部内容。
而第三个事件(面馆)比前两个更难,是因为它把这个”问”推到了极端——那件事里没有任何一个客观的事实需要你说清楚,只有立场需要你选。
航班延误 -> 有明确的责任方(航司)、明确的损失(40 分钟)、明确的诉求(赔偿)
-> 你的十面主要在分配责任
搞砸的面试 -> 有明确的责任方(你自己)、明确的遗憾(那道题)
-> 你的十面主要在调节自我呈现
面馆倒闭 -> 没有责任方、没有损失可以量化、没有诉求
-> 你的十面只能用来表达"我站在哪儿"
这三种事件,是英文写作的三个难度台阶。 大部分人的英文停留在第一个台阶上——能写清楚”谁对谁做了什么”。第二个台阶需要你动语域和语气(怎么呈现自己)。第三个台阶最难,因为它要求你在没有事实压力的情况下,依然能做出十个明确的选择。
一句话:当你能就一件”没有对错”的事,写出十句各有分工的英文,你才算真的会了。
附:十面自检清单
这一张表是给你日常用的,不是用来背的。
用法:写完任何一句英文(尤其是你觉得”好像差点意思”的那句),对着它从上往下问一遍。前二十次会很慢,慢到你烦。 坚持到第三十次,你会发现这些问题在你写之前就问完了。
主表
| # | 维度 | 我要问自己的问题 | 常见默认值 | 什么时候该主动切换 |
|---|---|---|---|---|
| 1 | 时间坐标 | 这件事在时间轴上的位置是点、线、还是段?有没有锚点?窗开着还是关着? | 一般过去(叙事)/一般现在(状态) | 出现 by the time / since / for / 明确过去日期时;需要”倒带”时 |
| 2 | 完成性与过程 | 我要让读者看到过程(进行)、结果(完成)、还是持续(完成进行)?我的动词是点动词还是可持续的? | 整体事件(点) | 想强调”花了多久""折腾了半天""已经注定”时 |
| 3 | 语态与主语选择 | 谁当主语?施事要出场吗?这个动词及物吗? | 主动,施事当主语 | 想弱化/强化施事、想把受事或事件当主角时;注意不及物动词不能被动 |
| 4 | 焦点与信息包装 | 哪一块是旧信息、哪一块是新信息?要打光吗?要不要用分裂句/存现句? | 自然语序,无焦点标记 | 需要纠偏、反驳、强调某一段、或把长信息塞进句尾时 |
| 5 | 确定性与言据 | 我凭什么这么说?要声明来源吗?可信度打多少? | 零标记(直接断言,100%) | 非亲眼所见、可能被追责、或需要留余地时 |
| 6 | 语气与非真实 | 我说的是真实世界还是假设世界?是后悔还是建议? | 真实语气 | 表达遗憾/后悔/评价时(虚拟),或要给行动项时(必须回到真实) |
| 7 | 名词化 | 这里要不要把动作压成一个东西?压到几级? | 零(用动词说动作) | 写报告、需要抽象主语、或要让”谁”这个概念无处安放时 |
| 8 | 数与限定 | 这个名词首次出现还是二次出现?单数还是复数?要不要软化/硬化数字? | the + 单数(已知)/a + 单数(首次) | 涉及数量、需要量化或模糊化、需要绝对否定时 |
| 9 | 语域与态度 | 对谁说?口语还是书面?要带情绪还是保持中立?有没有行业中性词可以替换评价词? | 中性偏书面 | 换任何听众都该重过一遍;尤其对内 vs 对外 |
| 10 | 视角与叙事距离 | 我站在哪个时间点说话?镜头离现场多远?要不要拉回来? | 旁观者,中距离 | 讲往事时想拉近(现在时)、或要造人物弧光(now + who 从句)时 |
三条使用须知
须知一:不是每一句都要动十面。
如果一句话你问完十个问题,结论是”十项全默认”,那完全没问题——只要那是你想清楚之后的选择,不是没想过。
自检清单的目的不是让你每句话都写得花里胡哨。它是让你意识到自己在默认。意识到,就够了。
须知二:真正需要动旋钮的,是那些”承重”的句子。
一篇事故报告里,真正需要你停下来想半分钟的,通常就三句:
第一句:定性(发生了什么)
中间那句:归因(为什么)
最后那句:承诺(我们要做什么)
其他句子走默认值就行。把注意力花在承重句上,这是投入产出比最高的做法。
须知三:改句子的顺序是”从粗到细”。
第一步:搭配层(编译错误)—— 及物性、介词、可数性
第二步:面 1 + 面 2(时间结构)—— 头号病灶,先修这个
第三步:面 3 + 面 4(镜头)—— 谁在场,什么被打光
第四步:面 5 + 面 6(立场)—— 凭什么说,是真是假
第五步:面 7 + 面 8(包装)—— 抽象度,数量框
第六步:面 9 + 面 10(关系)—— 对谁说,从哪儿说
反着来会浪费时间:你句子里还留着 is crashed 这种错误的时候,去纠结 a 还是 the,没意义。
示范:用清单改一遍自己写的句子
来看一个真实的例子。假设你在周报里写了这么一句:
I fixed a bug yesterday.
语法全对。十项全默认。放这儿,问十个问题。
问 1(时间坐标):yesterday 是封闭时间,一般过去,对的。但——这件事和现在还有关系吗?
如果 bug 已经修完并且上线了,那用一般过去没问题。如果你想强调”现在可以测了 / 现在没问题了”,就该用现在完成去掉 yesterday:I've fixed it.
决定:周报是给领导看结果的,重点是”现在的状态”。改成:
I've fixed the bug.
问 2(完成性/过程):我要说结果,还是过程?
如果这是花了两天才定位的 bug,只说”修好了”会低估工作量。而周报的一大功能是让领导知道你在干什么。
决定:改成过程:
I tracked down and fixed a bug in the payment service.
tracked down and fixed 两个动词并列,把”定位”这个真正费力的部分显式写出来了。
问 3(语态/主语):主语是 I,施事在场。这里要不要换?
周报里要——因为周报是给团队看的,太多个 I 会显得个人化。但也不能换成被动(A bug was fixed),因为那会让人觉得你在躲。
决定:保留 I,但把焦点从”我”挪到”bug”上:
The null-pointer bug in the payment service is fixed.
问 4(焦点/包装):哪块是新信息?
领导已经知道你在做支付服务,所以 in the payment service 是旧信息,应该往前放;新信息是”修好了”和”是什么 bug”。
决定:把位置调整,新信息压句尾:
In the payment service, I've fixed the null-pointer bug that was dropping retries.
问 5(言据):我凭什么说是这个 bug 导致的?
如果你有日志证据,加个言据标记会显得更专业:
In the payment service, I've fixed the null-pointer bug that the logs showed was dropping retries.
嗯,这句开始变笨重了。简化一下——把定语从句换成分词:
In the payment service, I've fixed the null-pointer bug that was dropping retries.
that was dropping retries 已经够了,the logs showed 在这个场合有点过。取舍:周报不是事故报告,不需要那么强的言据标记。
问 6(语气):真实还是虚拟?
真实。但要不要加个评价?这个 bug 本该更早发现吗?
如果加 should have been caught by our integration tests,那就从”汇报成果”变成了”提改进建议”。这是另一个动作,另起一句:
In the payment service, I've fixed the null-pointer bug that was dropping retries.
This should have been caught by our integration tests — we have no coverage for retry paths.
问 7(名词化):要不要压?
周报里一般不需要太抽象。但第二句里 coverage 已经是名词化了(“有覆盖”这个动作 -> “覆盖度”这个东西)。保留。
问 8(限定):the 还是 a?
I've fixed a null-pointer bug. (有这么个 bug,你可能不知道是哪个)
I've fixed the null-pointer bug. (你知道我说的是哪个)
周报的读者(你的领导)大概率知道你在忙什么,用 the。
另外,retries 用复数零冠词(泛指所有重试请求),对的。
问 9(语域):周报是什么语域?
中性偏书面,但不至于到”正式文书”。tracked down 是口语化的短语动词,在周报里可以——它让句子有点人味。保留。
但 dropping retries 里的 drop 有点太口语。内部周报可以,如果是发给客户的该换成 discarding。这里保留 dropping。
问 10(视角):我站在哪儿说?
现在。用现在完成时,对的。
最终版本:
In the payment service, I've fixed the null-pointer bug that was dropping
retries. This should have been caught by our integration tests — we have no
coverage for retry paths.
对比原句:
原句: I fixed a bug yesterday.
改后: In the payment service, I've fixed the null-pointer bug that was
dropping retries. This should have been caught by our integration
tests — we have no coverage for retry paths.
两句语法都对。两句描述的是同一件事。
但第一句读起来像”我今天干了点活”,第二句读起来像”我解决了支付服务里一个会静默丢重试的 bug,而且我发现我们的测试有盲区”。
信息量差了五倍,代价是三行字。
这就是自检清单的价值。它不是让你”写对”,是让你把脑子里本来就有、但中文不需要你写出来的东西,全部写出来。
收尾:三句话
写了这么多,最后留三句。
第一句:
语法是对的错的,英文会告诉你。 选择是好的坏的,英文不会告诉你。
这本书、这本练习册,教的全是第二部分。第一部分你查语法书就行,第二部分没人教——因为大部分语法书自己都不知道它存在。
第二句:
你说不出来的,不是英文,是你还没想清楚的事。
下次卡住的时候,别怪自己英语差。问问自己:这件事发生的时间窗到底关没关?我想让读者觉得是谁的责任?我凭什么说这句话?我有几成把握?
这三个问题,中文从来不问你。它们才是”英语思维”真正的样子。
第三句:
十面不是十个知识点,是一台机器的十个旋钮。 会转一个不叫会用,能同时转三个、还知道每个转了多少度,才叫会用。
母案例你练过了,航班延误你练过了,面试那题你自己写的。
现在,找一件今天真实发生在你身上的事,切一遍。
十分钟就够。
本册到此结束。所有题目的参考答案都已给出——但最重要的那份答案,是你写下一个新事件时的那十句。