English for Tech
Amélie

English for developers: code reviews, RFCs, async communication

Your code ships, but your code reviews sound overly formal—or maybe too casual. Learn the exact English phrasing top developers use to communicate clearly in PRs, RFCs, and async channels without friction.

Try Amélie free →

Why this matters

French speakers often struggle with the pragmatics of tech English: directness without rudeness, async clarity without endless explanation, and feedback that lands right. Native speakers write "Use const here"; non-natives often write "I would kindly suggest we might consider using const, if it is not too much trouble." In code reviews, RFCs, and Slack threads, every word counts—and the wrong tone kills momentum. This cluster teaches you how developers actually communicate in async-first teams, with the technical vocabulary and unwritten rules that vary wildly from formal English training.

You submit a PR. A senior reviews it: 'Needs refactor—the loop is O(n²). See the optimization I pushed to your branch.' You feel attacked. Later, you write detailed feedback on someone else's PR, explaining three possible solutions. They don't respond for 3 days. You worry you were confusing or patronizing. You weren't; you were just not speaking async-first English.

Practical tips

Be direct, not diplomatic

In async communication, hedging language ('Perhaps we could consider...') reads as indecisive. Write: 'Use const here' or 'This is a performance risk.' Directness + presence = confidence. French politeness rules don't apply in technical chat—developers expect clarity over elaboration.

Async demands anticipation, not explanation

You can't have a Slack back-and-forth in real time. Assume the reader will only see your message once, so include the 'why,' not just the 'what.' 'This doesn't scale—we'd hit rate limits at ~5k concurrent users' works. 'This doesn't work' doesn't.

Use the present tense for code observations

Say 'This function mutates state'—not 'This function would mutate state' or 'It could mutate.' Present tense feels factual and less apologetic. It's what you're reading right now, not what might theoretically happen.

Imperative mood is standard, not rude

French might soften commands ('Would you mind...?'). English code reviews? 'Add error handling here.' 'Rename to getOAuthToken().' It's not an insult; it's a direction. The reader expects it.

Give feedback in layers: priority first

Lead with the core ask ('This needs unit tests'), then rationale ('Without them, we can't safely refactor later'). Save nice-to-haves for the end. Async readers skim; frontload importance or they'll miss your point entirely.

Use 'we' to soften scale, not emotion

"We should extract this logic into a helper" is collaborative without being weak. "I personally think you might want to..." is weak. Avoid 'I think/I believe'—just state the proposal or observation.

Emojis + tone don't rescue confusing code feedback

A thumbs-up and a 'This is suboptimal 😅' still reads as criticism if the reason isn't clear. Focus on clarity first. An emoji doesn't make vague feedback less frustrating; specificity does.

Phrases natives use

Opening a code review with a concern
I'd push back on this approach—here's why.
Direct and assumes good faith. 'I'd push back' is stronger than French 'I would suggest' but still collaborative.
Asking for performance metrics you don't see
Can we talk about the performance impact here? Do you have numbers?
Not 'I'm not sure if...' Framing as a gap, not a failure, invites collaboration.
Flagging a blocking issue in async
This breaks the build in CI. Can't merge until it's fixed.
Present tense + factual. No 'would/might.' Async readers need to know it's blocking now.
Approving code without much ceremony
Looks good. One small thing: test the edge case where count is 0.
LGTM is too terse; 'Looks good' is warmer. Then the specific ask feels like collaboration, not a demand.
Suggesting a cleaner pattern or idiom
There's a cleaner way to write this—check destructuring in this style guide.
Offers a direction instead of explaining the full fix. Async reader can follow up if they need more detail.
Declining a feature request in an RFC
I don't think this is the right time. We'd need to solve X first, and that's a quarter of work.
Gives the obstacle. 'Not now' + reason > 'No' > long explanation of why you feel uncomfortable.
Correcting an assumption in a Slack design thread
Actually, the API doesn't support that yet. We'd need a new endpoint.
Fact first. Not 'I'm pretty sure...' or 'I don't think...' Keep it matter-of-fact.
Asking for clarification when a requirement is fuzzy
Help me understand: what does 'fast' mean here? Under 100ms?
Frames it as your lack of understanding, not their unclear writing. Invites specificity.
Shipping a small, low-stakes PR
Ship it.
Very casual approval. Works only when actual risk is low. Shows you trust the author and move fast.
Summarizing agreement in a multi-person RFC
Consensus: we're going with Option 2. Impl owner, run a spike this week?
Pulls agreement into action. Not 'Everyone agreed...' but 'Here's the decision and next move.' Decisiveness in async.

FAQ

Why do native English developers sound harsh in code reviews?

They're not being harsh—they're being efficient. Async communication removes tone cues, so directness = clarity. 'This won't scale' sounds blunt in person. In a PR thread, it's the most helpful thing you can read because it's immediate and testable. French tends to soften speech for politeness; English code culture prioritizes signal-to-noise.

How do I give critical feedback without sounding mean?

Lead with specificity, not softening. 'This function is O(n²) and will timeout on large datasets' is criticism, but it's useful. 'I'm not totally sure but maybe this could be slow?' is unclear and gets ignored. Directness + explanation = professional feedback. Hedging + apology = looks like you don't believe your own feedback.

Is 'LGTM' too informal? Should I write it out?

'LGTM' (Looks Good To Me) is standard in tech, especially for smaller PRs. It signals you've approved without ceremony. If you have caveats, write them separately: 'LGTM, pending tests.' For bigger reviews, write 'Looks good' or 'Ship it' with your feedback. The shorthand works because teams agree on the meaning—it's not lazy, it's efficient.

How much detail should I write in a GitHub comment if I'm unsure?

More than you think. In async, the author can't ask follow-up questions in real time. Give context: the potential issue, why it matters, and what would fix it. 'Extract this to a helper' is too short. 'Extract this logic into a separate function to make it testable in isolation—right now it couples the API response to the UI update' is complete. They either understand and act, or they ask intelligently in the next sync.

Amélie understands your L1

The only AI English coach that catches L1 transfer errors. 19,99€/mo — first session free.

Get started →