Saying no to a feature without being the 'no' person
Published May 23, 2026 · by Majd Ghithan, written with the help of AI
For about a year I was the engineer everyone learned to route around. Not because I was wrong, I was usually right, but because my answer to new ideas was a flat "no, that'll break things," and after enough of those, people stop bringing you the idea. They just build it without you. Being right and being ignored turn out to be very compatible.
The problem wasn't my judgment. It was that "no" ends the conversation, and the conversation was the only place my judgment could actually help.
"No" protects the code and loses the room
Every "no" is defensible in isolation. This feature adds a query to a hot path. This one couples two modules that should stay apart. This one is a two-week build dressed up as a "quick toggle." All true.
But a stakeholder doesn't hear your reasoning. They hear a door closing. And a person who keeps closing doors gets worked around, not consulted, and now the bad features ship anyway, just without your input on the least-bad way to build them. You protected the codebase right out of the decision.
The "yes, if…" reframe
The move that changed everything for me was refusing to end on "no." Almost nothing is a real no. It's a "yes, if we accept the cost." So I say the yes, then make the cost visible, and hand the tradeoff back to the person who owns it.
No, we can't add real-time notifications. It'll wreck performance and it's not worth it.
Yes, we can do real-time notifications. It's about a week, and it adds a websocket service we'll have to run and monitor. Or: 2 days for near-real-time with polling, good enough for most users. Which fits this quarter better?
Same engineering opinion. But the right-hand version keeps me in the decision instead of standing outside it. I'm not the obstacle anymore, I'm the person who mapped the road. And nine times out of ten, once someone sees the real cost, they pick the cheaper option themselves. I didn't have to say no. I just made the price legible and let them do the math.
Make the tradeoff theirs, not yours
Here's the reframe underneath the reframe: it's not my job to decide whether a feature is worth its cost. It's my job to make the cost accurate and visible, so the person who owns the priority can decide with real information.
When I say a flat "no," I'm quietly stealing that decision. I'm substituting my judgment about business value for theirs, on the one axis where they actually know more than me. When I say "here's the cost, here's a cheaper path, your call," I've done my actual job, engineering truth, and left the business call where it belongs.
The honest no still exists
Some things are still a real no, and softening those into a "yes, if" is its own kind of dishonesty. "Yes, we can store passwords in plaintext, if we accept a breach" is not a tradeoff I offer. Security, legal exposure, data loss, ethics, those aren't priced options on a menu. For those I say no clearly and I own it.
The trick is that those are rare. Maybe one in twenty. When you stop spending your "no" on the nineteen that were really "yes, if," the twentieth lands with full weight. People know that when this engineer says no, it's not a mood or a reflex, it's a wall. That authority is exactly what you burn through by saying no to everything.
The real shift
I used to think my value was catching bad ideas before they shipped. Now I think my value is making the true cost of every idea visible early, so the people who own priorities make better calls, and keep bringing me the next one.
"No" makes you a checkpoint people learn to avoid. "Yes, if…" makes you the person they bring the hard ones to on purpose, because you're the one who tells them what it actually costs before they're committed. One of those roles gets routed around. The other one gets a seat at the table. I spent a year in the first before I figured out they were a choice.
