{"slug": "how-i-stopped-sounding-rude-in-code-reviews-as-a-non-native-english-speaker", "title": "How I stopped sounding rude in code reviews (as a non-native English speaker)", "summary": "A developer who is a non-native English speaker built a Chrome extension to rewrite text in place, aiming to eliminate the 'blunt tax' and 'junior tax' that non-native speakers face in code reviews and team communication. The extension, which offers formal, friendly, and concise tones, rewrites messages directly in text fields without tab switching, making professional communication cost-free.", "body_md": "My code was fine. My comments were the problem.\n\nI've been a developer for years. English is not my first language — I think in\n\nmy native language, I think in code, and English sits somewhere third. And for\n\nmost of my career I didn't realize how much that third place was costing me.\n\nA while ago I left this comment on a pull request:\n\nthis code is bad, u dont handle when api return null. fix pls before merge\n\nI didn't mean to be rude. In my head, this was a neutral technical note:\n\nthere's a null-handling bug, it should be fixed before merge. Short, factual,\n\ndone. I hit \"Comment\" and moved on.\n\nThe author went quiet for the rest of the day. A colleague later told me the\n\ncomment came across as hostile. I re-read it and saw it with fresh eyes: no\n\ngreeting, no reasoning, an imperative \"fix pls\" — it read like a reprimand,\n\nnot a review.\n\nThen I scrolled through the same PR and found a comment from a native-speaker\n\nteammate about a very similar issue:\n\nThis looks close, but we're not handling the case where the API returns\n\nnull — that'll throw downstream. Could you add a guard for it before we\n\nmerge?\n\nSame technical content. Completely different reception. He sounded senior.\n\nI sounded angry.\n\nOnce I saw it, I couldn't unsee it. Non-native speakers on engineering teams\n\npay an invisible tax every day:\n\nThe blunt tax. Short sentences with no softening read as aggression in\n\nEnglish. In many languages directness is neutral or even polite. In English\n\nwork culture, \"fix this\" is an order and \"could you take a look at this?\" is\n\na request — and people remember which one you send them.\n\nThe junior tax. Simple vocabulary and choppy grammar get subconsciously read\n\nas junior, no matter what your actual level is. People conflate fluency with\n\ncompetence. It's not fair, but it's real — promotions, code review weight,\n\nand who gets listened to in threads are all shaped by it.\n\nThe rewrite tax. Knowing all this, I started re-reading every message three\n\ntimes before sending. A two-line Slack reply could take five minutes. Multiply\n\nby twenty messages a day.\n\nReading messages out loud helped a little. Keeping a document of \"polite\n\nphrases\" helped a little more — until I realized I was pattern-matching from a\n\nphrasebook like a tourist.\n\nThen, like everyone in the last couple of years, I started pasting messages\n\ninto ChatGPT: \"rewrite this to sound professional.\" And honestly — it worked.\n\nThe output was good.\n\nThe workflow was the problem. Copy the text. Switch tab. Find the chat. Type\n\nthe prompt. Wait. Copy the result. Switch back. Paste. For every single\n\nmessage. It broke my flow so badly that on busy days I just skipped it and\n\nwent back to sounding blunt.\n\nThe fix wasn't better English or better prompts. It was making the rewrite\n\ncost nothing.\n\nI built myself a small Chrome extension: you focus any text field — a PR\n\ncomment box, Slack, an issue tracker, anywhere — press one shortcut, and the\n\ntext gets rewritten in place. No tab switching, no prompting, no copy-paste.\n\nThe message you were about to send just... becomes the version a senior\n\nengineer would have written.\n\nI gave it three tones, because context matters: a formal one for PR reviews\n\nand technical docs, a friendly one for team chat, and a concise one for\n\ncommit messages. The \"before\" example above, run through the formal mode,\n\ncomes out like this:\n\nThe provided code lacks null-safety for API responses. This should be\n\naddressed prior to merge — please implement null-checking to ensure robust\n\nhandling of null returns from the API endpoint.\n\nThat's my actual thought, said the way I wanted it to land.\n\nThe obvious change: fewer awkward moments, fewer \"did I sound rude?\" spirals\n\nat 11pm.\n\nThe less obvious change: I write more. Before, every message in English had a\n\nsmall activation cost, so I'd stay quiet in threads where I had something to\n\nsay. When writing well becomes free, you stop rationing your words. I comment\n\non more PRs, ask more questions, disagree more openly — because I know the\n\ntone will come out right.\n\nThat was the real unlock. The tax wasn't just making me sound worse. It was\n\nmaking me participate less.\n\nWhatever tool or method you use, the principle that worked for me: don't try\n\nto become a different writer — remove the friction from fixing your writing.\n\nWillpower-based solutions (re-read everything! memorize phrases!) fail on busy\n\ndays, and busy days are exactly when you send the blunt message to the wrong\n\nperson.\n\nThe extension I built is called Softly — it's on the Chrome Web Store and\n\nfree while it's early: [https://chromewebstore.google.com/detail/nckkpgnjinhedmoojpbelkblefacineb](https://chromewebstore.google.com/detail/nckkpgnjinhedmoojpbelkblefacineb)\n\nBut honestly, even if you never install anything: re-read your last ten PR\n\ncomments as if a stranger wrote them to you. If any of them made you wince —\n\nthat's the tax. It's worth fixing, whichever way you choose.\n\n*I'm building Softly in the open - happy to answer anything about the\nextension (Plasmo + React, Laravel backend) or swap stories about writing\nEnglish as a second language in tech.*", "url": "https://wpnews.pro/news/how-i-stopped-sounding-rude-in-code-reviews-as-a-non-native-english-speaker", "canonical_source": "https://dev.to/klooder/how-i-stopped-sounding-rude-in-code-reviews-as-a-non-native-english-speaker-1c3j", "published_at": "2026-08-10 19:09:50+00:00", "updated_at": "2026-08-10 19:20:13.032534+00:00", "lang": "en", "topics": ["developer-tools", "artificial-intelligence", "natural-language-processing"], "entities": ["Chrome", "ChatGPT"], "alternates": {"html": "https://wpnews.pro/news/how-i-stopped-sounding-rude-in-code-reviews-as-a-non-native-english-speaker", "markdown": "https://wpnews.pro/news/how-i-stopped-sounding-rude-in-code-reviews-as-a-non-native-english-speaker.md", "text": "https://wpnews.pro/news/how-i-stopped-sounding-rude-in-code-reviews-as-a-non-native-english-speaker.txt", "jsonld": "https://wpnews.pro/news/how-i-stopped-sounding-rude-in-code-reviews-as-a-non-native-english-speaker.jsonld"}}