Professional English for Developers Module 2 – Clear writing foundations
Writing for a global audience in tech teams
Replace words with two meanings, idioms and culture-bound references with plain English that colleagues and translation tools read one way.
What you will learn
- Identify idioms, slang, humour and culture-bound references that global readers may misread
- Replace ambiguous words such as "since", "while" and "once" with exact ones
- Use helper words such as "that", "then" and "the" that make sentences easier to parse
- Write text that survives machine translation into a colleague's first language
Before you start
What you’ll learn · Before you start
What you will learn
- Identify idioms, slang, humour and culture-bound references that global readers may misread
- Replace ambiguous words such as "since", "while" and "once" with exact ones
- Use helper words such as "that", "then" and "the" that make sentences easier to parse
- Write text that survives machine translation into a colleague's first language
Before you start
On this page
“Error rates are higher since the release” can report a time or blame a cause, and a colleague who reads it through a translation tool may get the one you did not mean. Twelve short sentences from tickets, docs and chat, checked below, each had a word like that; rewritten, none did.
This lesson shows how to write for a global audience: colleagues who read English as a second or third language, and the machine translation: Translation of text from one language into another by software rather than by a person, as in a browser's translate feature or a translation app. many of them use. You will replace words with two meanings by exact ones, and swap idioms and culture-bound references for plain words, with a rule pack you can run on your own sentences.
Words with two meanings: since, while, once, as and via
Google’s word list asks writers to use a few common words in one sense only. If you mean because, write because instead of since or as. If you mean after, write after instead of once. Do not use while for a contrast: write although, and keep while for time. Write “for example” instead of e.g. and “that is” instead of i.e., and do not use via at all. For a place in the text, write earlier and later rather than above and below.
Each of these words has two readings, and a translation has to pick one. Step through what happens to one incident message:
The drawing shows the whole scene; its 5 steps are listed below.
Every step as text
- The writer means a time. An engineer on call posts "Error rates are higher since the release." He means from the time of the release: nobody knows the cause yet. But since can also mean because.
- The translation must choose. The reader's language has one word for from the time that and another for because. Whoever translates, a tool or a person, has to pick one, and the sentence alone does not say which.
- The reader gets a cause. The colleague reads that the release caused the errors and starts to roll it back. The message never said that: the writer only knew when the errors began.
- The fix says what is known. The writer rewrites it: "Error rates rose after the release. We do not know the cause yet." Now only one reading exists, and the second sentence says what the first could only hint at.
- The same meaning at both ends. The colleague reads a time and an open question, and helps look for the cause instead of rolling back. Fixing a word with two meanings costs a few seconds when you write it.
The program below runs these rules on twelve sentences and on their fixed versions. Three flags are questions rather than mistakes: “Since version 3” really means from version 3 on, “Restart the service once” really means one time, and “While you wait for the migration” really means during. Rewriting them still removes the doubt for a reader who does not know which meaning you had in mind:
// A global-reader check: words that Google's word list asks writers to avoid or to use in one sense only, run on
// twelve sentences and their fixed versions. A flag is a question for the writer, not a verdict: "since version 3"
// means "from version 3 on" and is correct, but a translator may still read "because".
const RULES = [
[/\bsince\b/i, 'since', 'if you mean because, write because'],
[/\bwhile\b/i, 'while', 'for a contrast, write although'],
[/\bonce\b/i, 'once', 'if you mean after, write after'],
[/^as\b/i, 'as', 'if you mean because, write because'],
[/\bvia\b/i, 'via', 'write through, by or with'],
[/\be\.g\./i, 'e.g.', 'write for example or such as'],
[/\bi\.e\./i, 'i.e.', 'write that is'],
[/\b(?:above|below)\b/i, 'above/below', 'for a place in the text, write earlier or later'],
];
const flagsOf = (s) => RULES.filter(([re]) => re.test(s));
const PAIRS = [
['Once the build passes, deploy to staging.', 'After the build passes, deploy to staging.'],
['Since the API changed, update the client.', 'Because the API changed, update the client.'],
['While the cache is fast, it is not durable.', 'Although the cache is fast, it is not durable.'],
['As the token expired, the request failed.', 'Because the token expired, the request failed.'],
['Send the logs via the support portal.', 'Send the logs through the support portal.'],
['Use a short-lived credential, e.g. an OIDC token.', 'Use a short-lived credential, such as an OIDC token.'],
['Rotate the keys, i.e. create new ones and revoke the old ones.', 'Rotate the keys: create new ones and revoke the old ones.'],
['See the table above for the limits.', 'See the table of limits earlier on this page.'],
['Since version 3, the flag is on by default.', 'From version 3 on, the flag is on by default.'],
['Restart the service once.', 'Restart the service one time.'],
['While you wait for the migration, read the release notes.', 'During the migration, read the release notes.'],
['The steps below need admin rights.', 'The following steps need admin rights.'],
];
let before = 0;
let after = 0;
PAIRS.forEach(([original, fixed], i) => {
const flags = flagsOf(original);
before += flags.length ? 1 : 0;
after += flagsOf(fixed).length ? 1 : 0;
for (const [, word, advice] of flags) console.log(`${String(i + 1).padStart(2)} ${word}: ${advice}`);
console.log(` before: ${original}`);
console.log(` after: ${fixed}`);
});
console.log(`\nFlagged: ${before} of ${PAIRS.length} sentences before, ${after} of ${PAIRS.length} after`); Output
1 once: if you mean after, write after
before: Once the build passes, deploy to staging.
after: After the build passes, deploy to staging.
2 since: if you mean because, write because
before: Since the API changed, update the client.
after: Because the API changed, update the client.
3 while: for a contrast, write although
before: While the cache is fast, it is not durable.
after: Although the cache is fast, it is not durable.
4 as: if you mean because, write because
before: As the token expired, the request failed.
after: Because the token expired, the request failed.
5 via: write through, by or with
before: Send the logs via the support portal.
after: Send the logs through the support portal.
6 e.g.: write for example or such as
before: Use a short-lived credential, e.g. an OIDC token.
after: Use a short-lived credential, such as an OIDC token.
7 i.e.: write that is
before: Rotate the keys, i.e. create new ones and revoke the old ones.
after: Rotate the keys: create new ones and revoke the old ones.
8 above/below: for a place in the text, write earlier or later
before: See the table above for the limits.
after: See the table of limits earlier on this page.
9 since: if you mean because, write because
before: Since version 3, the flag is on by default.
after: From version 3 on, the flag is on by default.
10 once: if you mean after, write after
before: Restart the service once.
after: Restart the service one time.
11 while: for a contrast, write although
before: While you wait for the migration, read the release notes.
after: During the migration, read the release notes.
12 above/below: for a place in the text, write earlier or later
before: The steps below need admin rights.
after: The following steps need admin rights.
Flagged: 12 of 12 sentences before, 0 of 12 after
Recorded with Node.js 24.21.0 on macOS 26 arm64. To run it yourself: mise exec node@24.21.0 -- node global_check.mjs
Runs on this device, in your browser. The first run downloads JavaScript (about 0.6 MB), which is kept for the next runs.
Your run, in this browser
All twelve originals were flagged and none of the fixes were. A checker cannot know which meaning you meant, but it can find every place where a reader has to guess.
Check your own sentences
Press Edit, add two sentences from your last ticket or chat message to PAIRS, with your fix beside each, and run
it. A sentence you cannot fix without guessing your own meaning was ambiguous to you too.
Checkpoint
Check: Words with two meanings
Idioms, humour and references that need a shared culture
Google’s guide for a global audience asks writers to avoid colloquialisms, idiom: A phrase whose meaning is not the sum of its words, such as "ballpark figure" for a rough estimate. Readers outside the culture that uses it, and translation tools, may take it word by word. and slang, and names three examples, ballpark figure, back burner and hang in there, as confusing and difficult to translate. It also asks writers to skip humour and to avoid seasons and other references that depend on where the reader lives: “this summer” means July in Kraków and January in São Paulo. Microsoft’s global writing tips give the same advice for idioms, colloquial expressions and culture-specific references.
Here is a chat message for a team in Bengaluru, Kraków and São Paulo, checked before and after a rewrite. The idioms marked “Google” are the guide’s examples; the others come from MySmartCoPilot’s list of phrases common in meetings:
// A team chat message checked for idioms and references that need a shared culture, before and after a rewrite for
// colleagues in Bengaluru, Krakow and Sao Paulo. The idioms marked [Google] are examples in Google's guide for a
// global audience; the others are MySmartCoPilot's list of phrases common in meetings.
const IDIOMS = [
['ballpark figure', 'a rough estimate', 'Google'],
['back burner', 'later, or not now', 'Google'],
['hang in there', 'say what you are thanking or asking for', 'Google'],
['circle back', 'discuss again, with a time', 'MySmartCoPilot'],
['boil the ocean', 'try to do everything at once', 'MySmartCoPilot'],
['low-hanging fruit', 'the quick, safe fixes', 'MySmartCoPilot'],
['take the rest offline', 'discuss it in a separate call', 'MySmartCoPilot'],
['crunch time', 'name the deadline', 'MySmartCoPilot'],
];
const TIME = [/\bEOD\b/, 'EOD', 'whose end of day? write a time and a time zone'];
function check(label, text) {
const found = IDIOMS.filter(([phrase]) => text.toLowerCase().includes(phrase));
const eod = TIME[0].test(text);
console.log(`${label}: ${found.length + (eod ? 1 : 0)} flags`);
for (const [phrase, plain, source] of found) console.log(` "${phrase}" [${source}] -> ${plain}`);
if (eod) console.log(` "${TIME[1]}" -> ${TIME[2]}`);
}
const before =
"Hi team! Let's circle back on the billing bug tomorrow. We won't boil the ocean: grab the low-hanging fruit " +
'first and put the reporting revamp on the back burner. Can someone give me a ballpark figure for the fix by EOD? ' +
"Let's take the rest offline. Hang in there, it's crunch time!";
const after =
'Hi team, we will discuss the billing bug again tomorrow at 10:00 UTC. First we will fix the quick, safe issues; ' +
'the reporting redesign waits until next month. Can someone estimate how long the fix will take, by 17:00 UTC ' +
'today? We will discuss the other items in a separate call. Thank you for the extra work this week.';
check('Before', before);
check('After', after); Output
Before: 9 flags "ballpark figure" [Google] -> a rough estimate "back burner" [Google] -> later, or not now "hang in there" [Google] -> say what you are thanking or asking for "circle back" [MySmartCoPilot] -> discuss again, with a time "boil the ocean" [MySmartCoPilot] -> try to do everything at once "low-hanging fruit" [MySmartCoPilot] -> the quick, safe fixes "take the rest offline" [MySmartCoPilot] -> discuss it in a separate call "crunch time" [MySmartCoPilot] -> name the deadline "EOD" -> whose end of day? write a time and a time zone After: 0 flags
Recorded with Node.js 24.21.0 on macOS 26 arm64. To run it yourself: mise exec node@24.21.0 -- node chat_check.mjs
Runs on this device, in your browser. The first run downloads JavaScript (about 0.6 MB), which is kept for the next runs.
Your run, in this browser
The rewrite lost every idiom and the “EOD” whose end of day nobody could tell, and it gained two times with a time zone. Many of these phrases are worth understanding, because you will hear them in meetings; a later lesson of this track teaches the common ones. In writing, plain words reach every reader, and local forms of English that colleagues in one office use without thinking can stop a reader in another.
Key idea
Write each word in the one sense a reader cannot misread, and say plainly what an idiom only hints at.
Three more habits make text easy to parse and to translate, and each has a part of its own below. Helper words such as that and then show where a clause starts, and short noun phrases show which word describes which. Abbreviations need their full form at first use. A round trip through a translation tool shows which sentences can be read two ways.
Checkpoint
Check: Idioms and culture-bound references
Helper words, noun stacks and only: sentences anyone can parse Pro: opens with a Pro, Premium or Ultimate pass
Casual English drops small words that readers of a second language rely on, and piles nouns on top of each other. This part restores the helper words, takes noun stacks apart with a program that counts them, and puts only where it belongs.
In this part:
- Helper words that casual writing drops
- Noun stacks of four or more, taken apart and counted
- Only goes right before what it limits
1 runnable example (JavaScript) · about 4 minutes
Opening this part with your pass…
This part opens with any MySmartCoPilot pass.
- Pro pass · 1 week₹79$2.99
- 30 days₹179$5.99
- 1 year₹1,699$45
One payment; a pass never renews. The price shown is the total you pay: no fees or charges are added at checkout.
Passes can’t be bought right now, so this part can’t be opened at the moment. The free part above stands on its own. If you have a pass, enter your licence key.
It also opens every other in-depth part in Learn and every Pro tool. Sales are final, except where the law gives you a right to withdraw, for example in the EU and the UK (refund policy).
Abbreviations, numeronyms and pronouns, defined once Pro: opens with a Pro, Premium or Ultimate pass
Short forms save the writer seconds and cost every new reader a search. This part counts the abbreviations of a planning note, defines the ones worth keeping, and replaces pronouns that a translator cannot resolve.
In this part:
- Numeronyms and acronyms, counted in a planning note
- Pronouns a translator cannot resolve
1 runnable example (JavaScript) · about 4 minutes
Opening this part with your pass…Pro part. It opens with the same pass as the part above.
Testing a text for translation: a round trip and a self-review Pro: opens with a Pro, Premium or Ultimate pass
You cannot read your text in every colleague’s language, but you can find the sentences that will cause trouble. This part turns the tips for machine translation into checks, shows the round-trip habit and its limits, and ends with ten sentences to fix against sample tests.
In this part:
- What machine translation needs from your English
- The round trip, and when not to use it
- Practise: ten sentences for a team that reads in many languages
- Fix ten sentences for a team that reads in many languages
- Results of the sample tests
- Three rules to keep from the parts on parsing and translation
1 exercise with sample tests · about 5 minutes
Opening this part with your pass…Pro part. It opens with the same pass as the part above.
Practise: words a translation can carry
Answer the questions below on words with two meanings and on idioms; each session opens with whichever of the two your answers show you need most:
Practice that adapts to you
Practise this lesson
6 questions about 5 ideas of this lesson. Each answer is explained at once, and what you get right is kept in this browser.
Interview questions
Warm-up (fresher to mid-level): Why do global style guides say to avoid “since” and “while” in technical text?
Because each has two meanings and the reader, or a translation tool, has to guess which one you meant. “Since” can mean “because” or “from the time that”, and “while” can mean “although” or “during the time that”. Other languages often need different words for the two meanings, so a translation must choose, and a wrong choice changes the instruction. Google’s word list asks for “because” when you mean a cause and “although” for a contrast; for time, write “after”, “from” or “during”.
Three longer questions of this module’s bank build on this lesson:
-
Mid to senior
Your team lead's chat posts are full of idioms such as "let's circle back" and "low-hanging fruit", and they go to colleagues in three countries, some of whom read them through a translation tool. You are asked to help. What do you change, and how do you raise it?
-
Senior to staff
Your analytics show that a third of your documentation's readers use a browser's translation feature. Which changes to the writing make the biggest difference for them, and how would you check that they worked?
-
Fresher to mid
A new teammate says the team's docs and chat are full of abbreviations they cannot look up, such as a11y, RC and o11y. How do you handle abbreviations when you write for a global team?
Key takeaways
- Words with two meanings, such as since, while, once and as, force readers and translators to guess; write because, although, after or during instead.
- Avoid idioms, humour and references that need a shared culture, and write the plain meaning instead.
- A checker finds every place a reader has to guess; deciding the meaning stays with you.
Terms in this lesson
- idiom
- A phrase whose meaning is not the sum of its words, such as "ballpark figure" for a rough estimate. Readers outside the culture that uses it, and translation tools, may take it word by word.
- machine translation
- Translation of text from one language into another by software rather than by a person, as in a browser's translate feature or a translation app.
References
- Write for a global audience (Google developer documentation style guide) (Google for Developers)
- Word list (Google developer documentation style guide) (Google for Developers)
- Writing tips (Microsoft Writing Style Guide, global communications) (Microsoft)
- Localization vs. Internationalization (W3C Internationalization)
- Overview (Kubernetes documentation) (The Kubernetes Authors)
- Style (Plain language guide) (Digital.gov, US General Services Administration)
Related tools
Report a problem with this lesson
Kept only in this browser. Your Learn progress