DEV Community

Yash Gandhi
Yash Gandhi

Posted on

"Corporate Speak, Part 3 — The Hard Cases Nobody Warned You About"

Parts 1 and 2 gave you the grammar. Seven patterns, a decoder, before/after examples, practice exercises.

What they quietly assumed: you're composing a message. You have thirty seconds, a cursor, and a delete key.

That's the easy version.

The hard version is real-time — a meeting where someone challenges your call in front of everyone, a 1:1 where your manager says something you didn't expect, a Slack call where you answer before your brain catches up with your mouth. The patterns still apply. But there's no revision, no backspace, and the room is watching.

Every part of this series was building toward the situations where you can't edit. That's where it either works or it doesn't.


The Real-Time Problem | Milliseconds, Not Minutes

Here's what happens in the room.

Someone says your design choice was wrong in a team meeting. Fourteen people are looking at you. Your nervous system lights up before your rational brain finishes loading. And whatever comes out in the next four seconds is going to define how this moment lands — for you, for them, and for anyone watching.

Most direct communicators default to one of two bad outcomes. They fire back defensively — "that's not accurate, because X and Y and Z" — and sound rattled. Or they go quiet, which the room reads as either agreement or hurt.

Neither is what you want.

The only real-time tool that reliably works is the pause. Not a long pause — that creates its own awkwardness. One beat. A single sentence that buys you three to five seconds without making you look unsure: "That's a fair point — let me think about that for a second."

That sentence does three things simultaneously. It signals confidence, because only secure people say they need a moment. It buys you time to compose an actual response. And it models intellectual seriousness — you're treating their challenge as worth thinking about, which is disarming even to someone who came in swinging.

The pause isn't stalling. It's the fastest route to saying something you won't regret.

The verbal equivalents of the three core patterns are compressed versions of what you'd write. Remove accusation becomes "what's your read on this?" instead of "you're wrong about this." Add offer becomes "I can dig into that" instead of silence. End with openness becomes "what would you need to see from me on this?" instead of defending until one of you runs out of air.

And there's one phrase that saves you every single time: "Can I ask what's driving that?"

It pauses the conversation. It signals engagement. And it gives you ten seconds to think while they answer. The person who uses this phrase in difficult meetings gets labeled as thoughtful and collaborative. The person who doesn't gets labeled as reactive. Same situation. One sentence of difference.


Code Review | The Engineer's Daily Battlefield

You write code for forty hours a week. Thirty of those hours, you're producing work that someone else will evaluate and comment on — or evaluating theirs.

Code review is where tone does the most slow, silent damage. A harsh comment isn't a crisis on its own. But a harsh comment five times a week, in writing, permanently attached to someone's commit history — that's a relationship account being quietly overdrawn. By month three, people dread opening your reviews. They stop engaging with your suggestions. They start shipping around you.

The first thing to understand: code review comments are different from Slack messages. They're visible to everyone on the team, they live forever in the repository history, and they happen at volume. The same words that would be fine in a private message become a permanent record in a PR.

There are three types of comments, and the tone each requires is completely different.

Blocking concerns — must change before merge. This is the one place where clarity matters more than softness. If a change will cause a data race, say "data race" — don't say "this might cause issues." But there's a difference between clarity and aggression. Be specific about what and why, and point toward a solution or a direction. "This will cause a data race when two users update the same record simultaneously — one approach is to move this into a transaction. Happy to walk through it if helpful." Direct. Clear. Not cruel.

Non-blocking suggestions — nice to have. These are the comments where most engineers create the most unnecessary friction. You're not blocking the PR. You have a preference, a style note, a thought. But if you don't signal that, the author doesn't know whether this needs to be fixed before merge or not — and either they go silent, or they defend it, and now there's a debate about something you didn't actually care about.

The prefixes exist for a reason. Use them. "Nit:" "Optional:" "Up to you — but..." These two words give the author the information they actually need: their judgment call, not yours. Once that prefix is there, the comment can be as specific or as blunt as you like — the "nit" has already defused it.

Questions — when you don't understand something. Pure curiosity phrasing. Not "why didn't you just use X?" — that question has a judgment baked in, implying X was the obvious choice and they somehow missed it. Instead: "Can you help me understand what this handles that X doesn't?" That's a real question. It gives them the opportunity to explain something you might not know. And it turns out that half the time, they'll explain it and you'll learn something. The other half, they'll think about it and realize X would be better. Either way, you've arrived at a better outcome without starting a fight.

Blunt: "Why is this hardcoded? This should be a constant."

Transformed: "Nit: this value gets used in a few places — might be cleaner as a named constant, but up to you."

Blunt: "This is going to break for empty arrays."

Transformed: "Blocking: this will throw if the array is empty — happens when the API returns no results. Adding a guard before the first call should fix it."

Blunt: "This is doing way too much. Split it up."

Transformed: "Optional: this function is getting a bit dense — might be worth extracting the validation logic into its own helper. Happy to suggest where I'd split it if useful."

Blunt: "Why didn't you use the existing hook for this?"

Transformed: "Can you help me understand what this handles that usePaymentStatus doesn't? Just want to make sure I'm following the reasoning."

Blunt: "Wrong. The type should be string, not number."

Transformed: "Blocking: the API returns this as a string — I think we need string here, not number. Confirmed in the schema."

Blunt: "No tests."

Transformed: "Blocking: this path doesn't have test coverage — would be good to add before merge, especially the error case."

Notice the blocking ones are still direct. They have to be — ambiguity about what must change before merge is dangerous. But they specify the why and point toward a solution. The non-blocking ones are flagged so the author knows they have a choice. The questions are genuinely curious.

Now the part that almost nobody talks about: how you write your own PR description sets the tone for how reviewers engage with your work.

A PR that says "fixed the thing" invites the reviewer to do all the interpretive work — which means they arrive skeptical, because they have no context for the decisions you made. A PR that says "Changed the validation to run after submit rather than on every keystroke — reduces re-renders and matches the UX pattern used everywhere else in the form" invites collaboration. The reviewer understands your thinking before they've read a line of code. Now they're reviewing with you, not against you.

And one last thing: the approval message.

"LGTM" is the standard. Ten thousand engineers write it every day. It communicates nothing except "I looked at it and it's fine."

"This looks great — the way you handled the edge case on empty accounts is clean." That takes twelve seconds to type. It costs nothing. Over six months, it builds more goodwill than almost anything else you can do in the codebase. People remember how your reviews made them feel. Make it a small lift.

In code review, the easiest person to be is dismissive. The hardest person to be is specific and human. That person becomes someone everyone wants as a reviewer.


Upward Communication | When the Power Dynamic Changes Everything

You've been using the patterns peer-to-peer. That's the easy version.

Now apply them to your manager. Or the tech lead. Or the VP who just walked into the retro.

The power asymmetry changes the calculation. You have less room to push back before it reads as insubordination. The stakes of being misread are higher — a bad landing in a peer conversation loses you goodwill; a bad landing with your manager affects your performance review. And your credibility is always on trial, fairly or not, in a way it simply isn't with equals.

What doesn't change: they're still humans. Remove accusation, add offer, end with openness — these work regardless of hierarchy, because the psychological mechanisms underneath them are the same. Nobody, regardless of their seniority, enjoys being cornered.

Three specific scenarios.

Disagreeing with your manager's technical decision. The trap is positioning your view as a counter-argument. That turns it into a contest, and you will lose the contest more often than you win it — not because you're wrong, but because you're fighting on their home territory.

The reframe: frame it as a gap in your own understanding. "I want to make sure I'm thinking about this right — can I share a concern I have?" Then the concern. Then: "What am I missing?" That last question is not rhetorical. It's genuine. They might have context you don't. If they do, you've just learned something. If they don't, you've raised the concern cleanly without positioning it as a challenge, and now it's on the table to be resolved rather than defended.

Saying no to an unreasonable request upward. This is the situation most engineers are most afraid of. Your manager asks for something by Thursday. Thursday is impossible. And "I can't do that" feels like career risk.

The formula: acknowledge the ask, name the constraint specifically, offer an alternative or a tradeoff, and make it their decision. "I want to make this work — the challenge is that X and Y are already in flight for Friday. If I reprioritize to hit Thursday, one of those slips. Which would you want me to deprioritize?"

That last question is the key. You haven't refused. You've handed them a real decision with real tradeoffs. Now it's theirs. And if they say "Thursday doesn't matter, I just asked casually" — which happens more than you'd think — you've also found that out without having said no.

Raising a problem your manager doesn't see. There's a way to surface an issue that sounds like mature judgment, and a way that sounds like complaining. The difference is one sentence: "I want to flag something early so we can figure out how to handle it." That framing separates you from the person who shows up with problems. You're showing up with a flag that comes with advance notice and an invitation to solve it together.

Then the issue. Then: "I have some ideas, but wanted to hear your read first."

That last half sentence is load-bearing. It invites their judgment. It signals you're not just dumping a problem on them — you've thought about it and you're bringing them in as a partner. Managers respond differently to "here's a problem and here's where I'd start" than to "here's a problem, what do I do."

The rule upward is simple: never bring just a problem. Bring a flag and an option. Even if the option is wrong, it shows you came to think, not just to worry.


The Recovery | When You Already Said the Wrong Thing

Here's what nobody taught you: everyone fails this.

You sent the message before you thought about it. You said it in the meeting and watched someone's face change. The blunt thing is already out there, in Slack history or meeting memory, and you can't take it back.

The worst thing you can do is nothing.

Silence after a blunt message is not neutral. It gets read as confirmation — I meant it, I'm not backing down. Every hour you don't address it, the other person's interpretation calcifies. By the next morning, they've turned your offhand comment into a position you hold, a feeling you have about them, a signal about your relationship.

The recovery message formula has three parts: acknowledge what happened, restate your actual intent, offer the door.

"I wanted to follow up on what I said earlier — I think I framed it badly. What I was actually trying to flag was X. Can I try again?"

Three sentences. That's the whole message. No over-explanation. No lengthy apology. No paragraph of context that makes the recovery about you.

It works because it's honest, it shows self-awareness, and the phrase "can I try again" gives the other person something clear to respond to — without forcing them to decide whether they're upset or not.

In a meeting, the recovery is faster. "Let me rephrase that — I don't think that came out right." Then the rephrase, immediately, while everyone is still in the room. Don't wait for a better moment. The better moment is now, while the context is live and the repair can happen in the same breath as the mistake.

Recover fast. The longer you wait, the more the other person has to work with. A genuine acknowledgement within hours defuses 90% of the damage. The same acknowledgement three days later reopens it.

What recovery is not: a lengthy apology that centers your feelings, an explanation that makes you sound defensive, or a public performance of contrition that makes the other person feel obligated to reassure you. One sentence of acknowledgement. Then back to the content, the problem, the thing you were actually trying to work through together.

The recovery isn't a loss. Done cleanly, it's often a net gain. People who can acknowledge when they landed badly, without making a production of it, are rare. When you do it simply and move on, most people remember the acknowledgement more than the original mistake.


The Compound Effect | Why This Is Worth Doing for a Year

Here's the section that makes the whole series worth it.

Not the single clever reframe. Not the code review that went better than expected. The pattern, run consistently, over months — what it builds, and what it opens.

"Easy to work with" sounds like a compliment people give when they can't think of a real one. It isn't. It's one of the most career-defining things that can be said about you.

When you're easy to work with, people come to you with problems early — before they've escalated — because they trust you won't make them feel bad for having them. You get included in decisions before they're finalized, because involving you doesn't feel like a risk. People advocate for you when you're not in the room, because they can describe working with you as a positive experience, not just a technically competent one.

Every message you send is a micro-transaction in a relationship account. One blunt message is not a crisis. But a hundred blunt messages over six months builds a reputation you can't see from the inside until it's set. You don't get a dashboard showing you your relationship balance. You just notice one day that you're not getting pulled into interesting projects, that your feedback doesn't seem to land, that people seem to be solving problems without asking for your input even though you have relevant knowledge.

That's not bad luck.

That's the cumulative ledger.

The specific career moments where this reputation pays off are easy to identify in retrospect and almost invisible in the moment they're being decided. Performance reviews: your manager's advocacy for you is driven as much by the quality of your relationship as by your output. Promotion decisions: senior committees discuss who "elevates the team" — which is nearly always a proxy for how people experience working with you. Cross-team projects: people choose collaborators they trust, which means people they've found low-friction to work with before.

There's an asymmetry here that isn't fair and is just physics: one really damaging interaction can cost you a relationship you spent months building. The repair work takes three times as long as the original construction. A single blunt public challenge in a meeting can undo six months of careful, thoughtful communication. Not always. But it can. The ledger doesn't average — it anchors to memorable experiences, and "the time they made me feel like an idiot in front of the team" is more memorable than fifteen good code reviews.

Technical credibility gets you heard once. Professional tone gets you heard every time. You can be the most technically skilled person in the room and be consistently overridden, because people have stopped trusting your delivery. You can be a mid-level engineer who is consistently influential, because working through a problem with you is something people actively want to do.

The engineer-specific case is worth naming directly. Engineers tend to believe that quality of work is what determines career trajectory. It matters. But there's a ceiling on how far it takes you alone, and that ceiling appears right around the time you need other people to implement your ideas, advocate for your proposals, or sponsor your promotion. At that point, the question isn't whether you're technically right. It's whether people want to go to bat for you.


The Honest Version | What You're Actually Changing

Here's the honest version of what this whole series is doing.

It's not teaching you to become someone you're not. It's not asking you to adopt a persona that feels foreign, perform warmth you don't feel, or sand off the directness that's probably one of your most useful qualities.

What it's doing is solving a specific, narrow problem: your delivery is undercutting your thinking.

You might have the right call every time. The correct technical judgment, the accurate read of the situation, the idea that would actually work. If the delivery of that call makes people defensive — makes them feel blamed, cornered, or dismissed — they stop hearing the content. They start managing their response to you. And the right call doesn't get implemented, not because you were wrong, but because your delivery created a reaction that stood between the idea and the action.

The patterns in this series are not about being fake. They're about removing the elements in your communication that generate noise between your intent and the other person's reception. Remove accusation — because accusation triggers defense, and defense stops thinking. Add an offer — because solidarity keeps the conversation collaborative. End with openness — because openness gives people somewhere to go besides resistance.

That's all it is.

The goal was never to sound more corporate. It was to make your actual self — your real views, your real concerns, your real ideas — actually land.

Direct communicators are often the most valuable people in a room. They cut through. They say the thing. They don't waste time circling. The tragedy is when that clarity is consistently received as harshness and the directness — which is a gift — becomes the reason people stop listening.

You don't have to choose between being heard and being honest. You just have to learn the gap between what you intend to say and what the other person actually receives — and then close it.

The patterns are the tools for closing it. The rest is practice, repetition, and the occasional recovery when you forget.

The moment this clicked for me was realizing that I wasn't changing what I was saying — I was changing what was landing. Same content. Different wrapping. And the wrapping was the difference between the idea being acted on and the idea being defended against. Once I saw it that way, the resistance to learning the patterns evaporated completely.

Was there a moment you realised the problem wasn't what you were saying — but how it was landing? That's the switch. Once you see it, you can't unsee it.

Top comments (0)