JOSHUA R. BUNNELL

Durham, NC · joshua.r.bunnell@gmail.com

Writing

Article

English Hides Its Implementation. Chinese Ships the Source.

Measure words are a type system. Chinese dates are ISO 8601. 没有为什么 is the answer to half of every codebase. I dreamed in Chinese years before I dreamed in code — here's the strongest case I can make that the two are related, and an honest accounting of where it breaks.

Joshua R. Bunnelllanguage, learning, engineering, cognition, china

The first time it happened I was in Hangzhou.

Nothing in the dream was remarkable, and that was the remarkable part. There was a conversation. The conversation was in Chinese. At no point inside the dream did I notice. No translation step, no reaching for a word, no assembling a sentence out of parts I'd studied. My sleeping brain had every shortcut available to it — it could have handed me English and let me get on with the dream — and it reached for Chinese instead, because Chinese was simply what was there.

I woke up and lay still for a while trying to account for it. I'd been working at Mandarin for years by then: first in classrooms in New York, then in Shanghai, then across a stretch of cities where nobody was grading me and the language was just the price of getting anything done. I'd passed a lot of visible milestones by that point. None of them felt like this one. The visible milestones were all things I could do. This was something that had happened to me, without my consent, while I wasn't in the room.

The second time it happened was this year, at a desk in the United States, and it took me a few days to recognize it as the same event.

I'd started dreaming in code. Not dreaming about code — I've done that for years, the anxious variety, the deploy that won't go out, the meeting where someone asks the question you can't answer. This was structural. Functions executing. A value moving through a transformation and coming out the other side changed. The specific texture of a bug: not the dread of one, the shape of one, the way a wrong assumption sits quietly in a system and poisons everything downstream of it. I wasn't watching code. I was thinking in it, in the same involuntary, unnarrated way I'd once dreamed a conversation in Chinese.

For most of the last decade I've told people, half-seriously, that Chinese is why I think the way I do — that spending years inside that language built the analytical, systems-shaped part of my brain that later made software feel familiar instead of foreign. I believed it in the loose way you believe things about yourself you've never had to defend.

Then I listened to Lera Boroditsky on Trevor Noah's podcast, and she handed me vocabulary for something I'd only ever felt. And having now watched the same phenomenon happen to me twice — once in a language, once in a machine — I think the claim I used to make was slightly wrong, and that the true one is more interesting.

What follows is the strongest case I can build for the parallel, and then an honest accounting of exactly where it breaks. Both halves are load-bearing. A version of this essay with only the first half is the kind of thing that does well on LinkedIn and shouldn't.

What the research actually says

Boroditsky's best-known work is about attention, not capability, and the distinction matters more than most coverage of it admits.

The example everyone remembers is Kuuk Thaayorre, an Aboriginal Australian language spoken in Pormpuraaw, which has no words for left and right. Everything is cardinal. Not just at landscape scale — there's an ant on your southwest leg, the cup is northeast of the plate. The ordinary greeting translates to something like which way are you going?, and the only acceptable answer is a direction. Which means you cannot say hello in Kuuk Thaayorre without knowing which way you're facing. And so speakers do, constantly, including small children, at a level of orientation most English speakers can't reach with deliberate training.

The language doesn't grant the ability. It makes the ability non-optional, and then you practice it ten thousand times a day because the alternative is not speaking.

The same shape shows up elsewhere. Russian has no single word for blue: goluboy and siniy are separate colors, the way pink and red are separate colors in English, and Russian speakers are measurably faster at discriminating shades that cross that boundary. English is comfortable saying he broke the vase about a pure accident; Spanish and Japanese prefer a construction closer to the vase broke itself, and speakers remember the agents of accidents differently as a result.

None of these are claims that a language prevents a thought. What a language does is make certain distinctions cheap, and some of them mandatory — and the cheap mandatory ones get rehearsed constantly, for free, forever.

Strong linguistic determinism — you cannot think what you cannot say — is dead, and Boroditsky isn't defending it. The surviving version is smaller and stranger: your language decides what you have to notice.

That's the bar. It's deliberately low, because everything I'm about to argue has to clear it honestly.

Which is the whole argument, compressed: English hides its implementation. Chinese ships the source.

没有为什么

There's a phrase I carried out of Chinese that I've never been able to move into English without breaking it. 没有为什么. Literally: not-have why. There is no why.

It's an answer, and that's the part English can't hold. Say "there's no reason" in English and you sound evasive, like a reason exists and is being withheld. Say "just because" and you sound like a parent out of patience or a child out of argument. Both English versions carry a defensive charge. 没有为什么 carries none. It's flat and complete. It says: the search terminates here, I'm not being short with you, and there is nothing behind this door.

You cannot learn Chinese without accepting a great many of these. Why is this character written with the water radical when it has nothing to do with water? Why does this verb take 了 here and not there? Why is this the measure word for this object rather than the obvious one? Some have wonderful answers — etymologies running back three thousand years, semantic drift you can trace like a git log. Many don't. They're accidents that hardened: a scribe's convention, a phonetic loan, a coincidence that outlived its cause.

The learner who demands a reason for each one does not get far. Not because curiosity is bad, but because the search is unbounded and the payoff isn't there. At some point every character is a base case. You accept the axiom and move.

I have watched engineers hit this exact wall, and I've hit it myself. Why is the array zero-indexed. Why is the terminal eighty columns wide. Why does this field allow null when nothing in the domain permits it. Why is this table named like that. A few of these have real answers worth knowing — eighty columns is a punch card, zero-indexing is pointer arithmetic. A large fraction of any real codebase has no answer at all. Someone made a call on a Tuesday in 2019, it worked, nothing forced a revisit, and now it's load-bearing.

没有为什么.

The senior skill isn't knowing all the reasons. It's knowing which questions have reasons and which ones don't, and terminating the second kind fast — without resentment, without treating the absence of a reason as proof that someone was careless. A lot of the friction I see in engineers new to a large system is the friction of a language learner demanding an etymology for every character.

Where the parallel gets specific

This is where it stops being a feeling. Eight features of Chinese, what each forces you to do, and the thing in software it's shaped like.

A three-column index of the eight mappings: the Chinese feature, what it forces the speaker to do, and the software concept it's shaped like — A-not-A questions as a built-in truth table, flexible word classes as duck typing, 的 as one modifier operator rather than five, 电-compounds as composition, classifiers as static typing, big-endian dates as ISO 8601 and namespacing, unspaced text as tokenization, and transparent numerals as an abstraction that isn't hidden.

Questions that carry their own truth table. Chinese has two ways to ask a yes/no question. One uses a particle: 你要吗 — roughly, you want, yes? The other is called A-not-A, and it's the one I care about. 你要不要. Want-not-want. 有没有: have-not-have. 是不是, 好不好, 对不对.

To ask the question, you state both branches. The question contains its own answer space, laid out in order, and the respondent picks one. English builds yes/no questions out of auxiliary-verb machinery — do you want, did you go, have you eaten — scaffolding that carries tense and agreement and has to be conjugated correctly before the question is even askable. Chinese writes want || !want and hands it over.

Then there's the answer. Chinese has no general-purpose yes and no — no token you can deploy against any question the way English deploys yes. You answer by returning the verb: 要 or 不要, 有 or 没有, 是 or 不是. (对 and 是的 do a lot of work in practice, but they're not universal; they're right for some questions and wrong for others.) The answer's type matches the question's type.

The habit that builds is worth naming: ask questions that enumerate their own answers, and answer in the type you were asked in. It's the whole difference between a bug report that says it's broken and one that says expected X, got Y.

Two panels. Asking: English builds a yes/no question by picking an auxiliary, matching tense, and inverting word order before it can produce "Do you want it?", while Chinese writes 要不要 — want, not-want — shown as want || !want. Answering: English accepts one universal yes/no token for every question, while Chinese returns the verb it was asked in — 要 or 不要, 有 or 没有, 是 or 不是.

Position assigns category. Classical Chinese has a phenomenon called 词类活用 — flexible use of word classes. A noun becomes a verb with no ceremony at all. 王 is "king," and in the right position it means "to rule as king." 衣 is "clothing"; in the right position, "to wear." 食 is "food," and also "to feed."

Nothing about the word changes. No ending, no marker, no derivation. The category comes entirely from where it sits — inferred from the call site, never declared. English can do a little of this (to table a motion, to google something) but it's a productive accident, not the design. In Classical Chinese it's the design.

The reflex it builds: read position before you read the word.

One operator where English has five. 的 attaches a modifier to a noun. All of them. 我的狗, my dog. 红的书, the red book. 我昨天买的书 — "the book I bought yesterday," with the entire relative clause sitting in front of the noun in precisely the slot where 红 sat.

English needs five separate mechanisms for that job: possessive 's, of-phrases, bare adjectives, relative pronouns, and participles. And their word order isn't even consistent — red book, but book that I bought. The modifier goes before or after depending on how heavy it is.

Chinese has one rule with no exceptions: modifier, 的, head. Any modifier, any length, always the same direction. And when the coupling is tight enough, the 的 drops entirely — 我妈 rather than 我的妈, 我们公司 rather than 我们的公司 — which is its own small lesson about the syntax you can omit once the relationship is obvious.

Vocabulary that ships its own source. 电 is electricity. 电脑 is electric brain: computer. 电话, electric speech: telephone. 电视, electric vision: television. 电梯, electric ladder: elevator.

An English speaker learning computer, telephone, television, elevator is memorizing four unrelated tokens built from Greek and Latin roots they probably can't decompose. A Chinese speaker is learning one primitive and four applications.

Radicals do the same thing a level down. 氵 is the water radical: 河 river, 海 sea, 湖 lake, 汗 sweat, 汽 steam. A character you've never seen carrying 氵 has already told you which namespace it lives in. And phono-semantic compounds encode two channels in a single glyph — 妈 is 女 (woman, carrying the meaning) beside 马 (, carrying the sound).

Where this lands hardest for me is technical vocabulary. 递归 is recursion: hand over, return. 数据库 is database: number-data storehouse. 内存 is memory: inner store. 编译 is compile: weave-translate. 算法 is algorithm: calculation method. A Chinese speaker meeting any of these for the first time gets a hint. An English speaker meeting recursion gets a Latin root and no help at all.

This is just naming. It's the argument every style guide makes and every codebase eventually loses.

The character 电 (diàn, electricity) branching into four compounds — 电脑 electric brain, 电话 electric speech, 电视 electric vision, 电梯 electric ladder — each resolving to computer, telephone, television, elevator. Below, the same four English words sit as four unconnected tokens with no shared root visible, alongside the same pattern in technical vocabulary: 递归 hand-over return for recursion, 数据库 number-data storehouse for database, 内存 inner store for memory.

Nouns come with types. You cannot count a noun in Chinese without a classifier. Not three books — three 本 books. 张 for flat things: paper, tables, tickets. 条 for long flexible things: roads, rivers, fish, trousers. 辆 for wheeled vehicles. 只 for many animals and for one of a pair. 位 for people you're being polite about.

Use the wrong one and you'll be understood, and you'll be wrong, and a native speaker will hear it the way you hear a subject-verb disagreement. It isn't a vocabulary mistake. It's a type error.

English keeps vestiges — a sheet of paper, a head of cattle, a pane of glass — but they're optional and mostly fossilized. Chinese makes it obligatory. Every time you count anything, you declare its type first.

I don't think it's a coincidence that a strongly-typed backend felt like coming home.

Scope before leaf. Chinese dates run 2026年9月1日: year, month, day. Addresses run country, province, city, district, street, number. Names run family first, given second — 王小明 is Wang's Xiaoming.

Every one of these is big-endian. Largest enclosing scope first, narrowing to the specific. English is inconsistent about this and mostly runs the other way: September 1, 2026; Joshua Bunnell; a street address that starts at the doorstep and works outward to the country.

The useful property of big-endian ordering is that it sorts. ISO 8601 dates — 2026-09-01 — fall into chronological order under plain lexicographic sort, which is why every engineer converges on them eventually, and it is exactly the Chinese date order. Reverse-DNS package names are the same instinct. Filesystem paths are the same instinct. Namespaces are the same instinct.

Chinese had me stating the enclosing context before the specific thing, dozens of times a day, for years, well before I'd ever heard the word namespace.

Chinese and English dates, addresses, and names side by side, each tagged with the scope of its parts. Chinese runs widest-first every time — year to month to day, country to province to city to district, family name to given name — while English runs the other direction. A footer shows 2026-09-01 and notes that big-endian ordering sorts chronologically under a plain lexicographic sort, which is why ISO 8601, reverse-DNS package names, and filesystem paths all share the instinct.

You are the tokenizer. Chinese is written without spaces. 我昨天买的书 is six characters in an unbroken run, and locating the word boundaries is the reader's job — done unconsciously, continuously, at speed.

This is a genuine computational problem, not a poetic one. In Chinese NLP the first stage of nearly every pipeline is 分词, word segmentation, and it occupied researchers for decades. Chinese readers perform it in real time without noticing they're doing it.

Classical Chinese went further and omitted punctuation too. Sentence boundaries were also the reader's problem — a practice called 句读. Learning to read a classical text meant learning to parse it, and getting the breaks wrong meant getting the meaning wrong.

And it was written vertically. Top to bottom, right to left, in columns.

Which is — and I'm aware of how convenient this is for my argument — how code is written. Prose is a paragraph. Code is a column: one statement per line, executing downward.

Numbers that show their work. This is the strongest empirical leg of the whole argument, and the one I'll come back and dent later.

Chinese number words are transparently base-10. 十一 is ten one. 二十一 is two ten one. There is no eleven, no twelve, no twenty concealing its relationship to two and ten.

The measured consequences are real and repeatedly documented. In the classic work on what became known as the Chinese number advantage, Miller and colleagues found four- and five-year-old Chinese children could generally count to forty while American children of the same age barely reached fifteen. The gap opens right where English number words go irregular. The regular naming system gives children a demonstrable head start on base-ten and place-value understanding.

The whole argument sits in that one difference: a language that exposes its abstraction produces better mental models of it.

Compression has a cost

Chinese is dense, and anyone who's held a bilingual document has noticed: the Chinese side takes visibly less page than the English one.

Some of the compression is extraordinary. 辛苦了 is three characters — roughly you have labored — doing a job English has no single move for: acknowledging that someone worked hard, at the end of the thing, without being effusive or condescending. 加油 is two characters, literally add oil, and it's what you say to someone mid-effort. 慢走, walk slowly, to a departing guest.

And then there are 成语: four-character idioms, each compressing an entire story.

画蛇添足 — draw a snake, add feet. From a parable about a man who won a drawing contest, kept going, added legs to his snake, and lost. Four characters for the whole concept of over-engineering. For shipping the thing and then continuing to work on it until it's worse.

守株待兔 — guard the stump, wait for the rabbit. A farmer watches a rabbit run into a tree stump and die, then abandons his farm to sit by the stump. Four characters for the entire failure mode of generalizing from one lucky result: the cargo cult, the ritual that survives because it once coincided with a good quarter.

I reach for both of these more often than any English equivalent, because English doesn't have equivalents. It has descriptions.

But density is not speed, which is the part that makes this more than a fan letter. In 2019 a team led by Christophe Coupé measured 17 languages, Mandarin among them, and found that information rate converges on roughly 39 bits per second across all of them — despite enormous variation in syllables per second. Spanish and Japanese fire off far more syllables per second than Mandarin or Vietnamese; Mandarin packs far more information into each one. The two effects cancel almost exactly. The channel runs at the same speed either way.

The page compresses. The conversation doesn't.

Three languages — Spanish, English, and Mandarin — each shown as a bar split between syllables per second and information per syllable. Spanish leans heavily toward speed, Mandarin toward density, English sits between them, and all three produce an identical information-rate bar of roughly 39 bits per second. Proportions are illustrative; the convergence finding is from Coupé et al., Science Advances 2019, across 17 languages.

And compression carries a bill, payable on the reading side. 画蛇添足 is four characters if you already know the parable. If you don't, it's "draw snake add feet," which is gibberish. The compression only works for people who share the dictionary — which is precisely the trade you make when you name something singleton, or N+1 query, or thundering herd. Those names are magnificent compression for people who hold the referent and completely opaque to everyone else. High density is a bet on shared context.

Chinese ran that experiment at civilizational scale and reached a verdict. 文言文 — Classical Chinese — was the densest register the language ever produced, and it was the written standard for two thousand years. Then, in the space of roughly a generation, 白话文 — vernacular writing, closer to how people actually spoke — displaced it almost entirely, in large part because mass literacy demanded it. The most compressed form available lost to the readable one.

That's the argument for boring code, made by a country.

Then it ran the experiment a second time, on the glyphs themselves, and this time the bill is itemized.

Character simplification is the clearest case I know of a deliberate, dated, well-intentioned compression of a working system. From the 1950s the PRC standardized simplified forms to cut stroke counts and accelerate mass literacy — 憂鬱 sheds roughly two-thirds of its strokes as 忧郁, and a child learns to write it in a fraction of the time. Taiwan, Hong Kong, and Macau kept the traditional forms. The fork was never merged; both branches are still in production today.

The savings are real. So is the regression, and it's one every engineer has caused: simplification merged distinct characters into shared forms. 後 (after, behind) and 后 (queen) both became 后. 麵 (noodles) and 面 (face, surface) both became 面. 發 (to emit, to prosper) and 髮 (hair) both became 发 — which is how one character came to cover both getting rich and getting a haircut.

Those are namespace collisions. Two identifiers that meant different things now share a symbol, and the only thing that resolves them is the surrounding context.

The consequence is exactly what you'd predict from a lossy encode: the inverse doesn't work. Traditional-to-simplified is a clean function. Simplified-to-traditional is one-to-many, and a converter working character by character has no way to know which word a given 后 or 面 or 发 came from — the information isn't in the glyph anymore. Real converters have to operate on whole words and still fall over on names, menus, and legal text. Anyone who's watched an automated conversion mangle a restaurant menu has watched a lossy round-trip fail in public.

And there's a coda every engineer will recognize. In December 1977 the PRC promulgated a second round of simplification — 248 characters in the first list, 605 more up for discussion, with components that would have reshaped some 4,500 others. It went too far. It confused people. On 24 June 1986 the State Council rescinded it.

A compression pass that broke comprehension, shipped anyway, and got reverted nine years later.

I don't think simplification was a mistake — the literacy argument is strong, it largely worked, and many of the "new" forms were old cursive variants rather than inventions. The traditional-versus-simplified argument is also a genuinely political one that I'm not trying to settle in a post about software. But it is the most legible instance I know of the trade this whole section is about. You can buy write-speed with read-ambiguity. The bill comes due later, at the point of decode, paid by everyone downstream.

Three pairs of traditional characters collapsing into one simplified form each: 後 (after, behind) and 后 (queen) into 后; 麵 (noodles) and 面 (face, surface) into 面; 發 (to emit, to prosper) and 髮 (hair) into 发. Each has a dashed return arrow marked with a question mark, because the reverse mapping is ambiguous. A footer notes the second round of simplification, promulgated December 1977 and rescinded by the State Council on 24 June 1986.

The parallel is real enough, incidentally, that somebody built it. In 2019 a Carnegie Mellon student named Lingdong Huang released wenyan-lang, a programming language whose syntax is Classical Chinese grammar. It compiles — to JavaScript, Python, and Ruby originally, to a long list of targets since. It ships a renderer that displays your program as a page from a classical woodblock text: vertical columns, right to left, no punctuation. It collected around twelve thousand GitHub stars in its first week.

I find that genuinely moving, and also useful as evidence. I'm not the only person who looked at Classical Chinese and saw a language spec.

No partial credit

The thing about Chinese that did the most to me was never a feature. It was a failure mode.

English degrades gracefully. Meet a word you've never seen — susurration, defenestrate — and you can sound it out, guess at the roots, take partial credit, keep reading. The writing system is a lossy encoding of the sound, and lossy is still something.

Chinese does not do this. Meet a character you don't know and you have nothing. You frequently can't even pronounce it; phonetic components help sometimes and mislead often. You can't skip it, because it might be the verb. Reading stops.

And you can't look it up the way you look up an English word, because there's no alphabet to look it up in. You identify the radical, count the remaining strokes, find the radical's section, scan. That's an index lookup performed by hand, and learning to do it is learning, physically, that access requires a path.

Two paths for meeting something you don't know. On the English side, the unfamiliar word susurration degrades gracefully — sound it out, guess at the root, take the gist from context, keep reading with partial credit. On the Chinese side, the unfamiliar character 蠡 fails hard: it can't be sounded out, it can't be skipped because it might be the verb, and reading stops. The only way through is to identify the radical, count the remaining strokes, and scan that section of the index by hand.

The system refuses to let you muddle through. Either you have the primitive or you don't, and when you don't, no amount of context-guessing rescues you. So you build primitives deliberately. You stop treating rote memorization as beneath you. You develop a tolerance for the long stretch where you are unambiguously bad and nothing is visibly improving.

This is exactly the wall that people who learn to program by copying and pasting eventually hit. You can get remarkably far on pattern matching — further than anyone wants to admit, and further still now that a model will hand you the pattern. You can ship real things. And then one day the pattern doesn't match, and there's no partial credit on offer, and the only way through is to actually know what a promise is, or what the event loop does, or why that reference is null at that moment and not the one before.

The people who cross that wall aren't the smartest ones. They're the ones who were already comfortable being a total beginner inside a system that gives nothing away.

Chinese made me comfortable with that. Not smart. Comfortable.

Where this breaks

I've now made the strongest case I can. Here's the case against it, which I find nearly as persuasive.

The effects are small. The findings I cited above are measured in milliseconds of reaction time and modest differences in recall. They're real and they replicate and they are not the stuff of separate worldviews. When popular coverage turns Russian speakers are a few dozen milliseconds faster at one color discrimination into Russians see colors we cannot see, that's the coverage, not the science. I've linked the science and I'd rather you hold me to its actual size.

Even my strongest leg has been narrowed. The Chinese number advantage is the most-cited case for language shaping cognition, and follow-up work has been steadily reining it in. A study comparing Vietnamese and French-speaking preschoolers — Vietnamese also has transparent number naming — found the advantage only limited. Another, revisiting Chinese and English children directly, concluded that the linguistic influence on mathematical development is specific rather than pervasive. The number words help you with number words. They don't make you better at mathematics.

The causation may run backwards. Nobody assigned Chinese to me. I chose it, kept choosing it through years when it was miserable, and then chose to move to a country where I'd have to use it. It's entirely plausible that a brain already inclined toward decomposition and pattern-hunting is a brain that finds Chinese appealing rather than punishing — and that I've spent a decade crediting the language for a disposition that selected it.

And the confound is fatal to the specific claim. If what actually transferred is comfort with a formal system that grants no partial credit, then Chinese has no special claim to it. Music notation does this. Law does this. Organic chemistry does this. Chess does this. Any of them might have done identical work, and I'd have written the same essay about whichever one I'd picked.

Finally: n equals two, one subject, one observer, and the observer is motivated. I can't A/B test my own brain. I have one life, one order of operations, and a strong aesthetic preference for the story where the hard thing I did at twenty-five turns out to have been secretly useful at thirty-five. That preference should make you discount everything above by some amount, and it should make me discount it by more.

A ladder of every claim in the essay ranked by support. Well supported: language shapes habitual attention, replicated across labs; transparent numerals help with number words, real but narrowed by follow-up studies. Plausible but badly confounded: Chinese made me systems-minded, undercut by selection bias; and the possibility that any no-partial-credit system — music, law, chess — would do the same work. Not supported: Chinese made me an engineer, resting on two subjects and one motivated observer; and the popular claim that speakers of different languages inhabit different worlds, which is the coverage rather than the science.

So I'm not going to tell you Chinese made me an engineer. I'm going to tell you something smaller that I think is actually true.

The part I'd defend

Fluency isn't a level. It's a phase change, and its defining property is that you stop translating.

You don't get to schedule it and you can't feel it arrive. The dream is just how you find out it already happened — the system reporting, in a moment when you have no conscious control over the machinery, that it's resident now, that it's not a thing you use anymore but a thing you use with.

Two parallel tracks running the same five stages. Mandarin: classroom, the plateau, primitives accumulating, then the dream, then resident with no translation step. Code: copy-paste-adjust, the plateau, primitives accumulating, then the dream, then resident — thinking in it rather than with it. The dream sits at the same position on both tracks, marking the phase change neither one could be scheduled.

What I actually took from Chinese, and the part I'll defend without hedging, is a piece of self-knowledge rather than a set of analytical habits. I know what it feels like from the inside when a formal system goes resident. I've been through the long plateau where nothing improves and you're just accumulating primitives on faith. I know what the far side looks like. So when I started writing software in my thirties, surrounded by people who'd been doing it since they were twelve, I wasn't calm because I'm clever. I was calm because I recognized the terrain.

The transferable part is that recognition, which is why this essay is for more people than the ones who speak Chinese.

Somewhere in your history there's a system that gave you no partial credit. An instrument. A trade. A legal code. A sport with a rulebook longer than its season. A craft where the material either holds or it doesn't. Whatever it was, you built primitives before you had fluency, you accepted axioms nobody would explain, you sat in the plateau, and at some point the thing went resident and you stopped translating.

That experience is the on-ramp. It's worth considerably more than it looks like on a résumé, and it's almost never the thing people lead with.

So — did Chinese make me a better engineer?

没有为什么. I can't hand you the mechanism, and I've just spent two thousand words showing you why the obvious one doesn't survive contact with the research.

But here's what I'll stand behind. Boroditsky's real point was never that your language traps you. It's the opposite: every language you learn is one more set of defaults you get to notice — one more arrangement of the world that turns out to have been a choice rather than a fact. Chinese was the first system that did that to me. Code is only the second.

I'd bet on there being a third.

Command Palette

Search for a command to run...