
Most senior people give feedback as questions. Here’s what to do instead.
I’ve been noticing the same thing in product reviews for years now, across different teams and different companies. And it’s almost always the most senior person in the room doing it.
Feedback comes out as questions.
“Why is this in production?” “Do you think this should be live?” “Reporting belongs in the other system — so why did we build it here?”
Every one of those is a statement wearing a question mark. The person asking has already decided. And I think most of us do it because it feels like the polite option — softer than just saying the thing.
It isn’t softer. It’s an interrogation with better manners.
I sat in a review recently where every single correction was correct, and an hour in, the developer offered to delete a feature that worked. Nobody asked him to. He’d just worked out that volunteering to remove it was the fastest way to make the questions stop.
That’s the cost. Not hurt feelings — you lose the thing you actually needed, which was his judgment.
Here’s the part I find most interesting, and it took me a while to see it.
When you ask a question you already know the answer to, you don’t just make somebody defensive. You skip past the real answer.
Take “why is this in production?” Asked as an accusation, you get an apology and a promise it won’t happen again. Asked properly — genuinely wanting to know — what you might hear is:
“It was a small change, and the staging environment isn’t ready yet.”
Now that’s useful. That’s a real, specific, fixable problem, and it isn’t the one you thought you were pointing at. The developer wasn’t being careless. He was working around a gap in your setup that nobody had prioritised.
You’d never find that out through cross-examination. The accusation format only has room for one answer, and it’s sorry.
This happens constantly. Most of the time the person built it that way for a reason, and the reason is information you want. When I took apart an onboarding flow that was losing users before they saw the product, every requirement that built the wall had been defensible in the room where it got made. Nobody had asked why.

So here’s what I do instead. Three parts, in this order, every time.
Name something specific that works.
Specific matters. “The way you’ve separated in-stock and back-ordered items is clean” is useful. “Good job” is noise — nobody has ever learned anything from it.
Two things happen when you do this. You’re telling them which decisions to repeat, which is real information they can use next time. And you’re establishing that this is a review of the work, not a review of them.
It takes about twenty seconds and I think it’s the most valuable twenty seconds in the whole session.
Say it as a request, and tie it to why.
“Can we rename this button? It says ‘Restock All’, but it only raises a purchase request — sooner or later someone’s going to order the same stock twice.”
Compare that to “what is this button?” Same concern. One of them can be acted on immediately. The other needs three rounds of back-and-forth before anyone knows what’s actually being asked for.
The “and here’s why” clause is doing more work than it looks. Without it, they fix the one button. With it, they catch the next four cases themselves without needing you in the room.
Then the gaps.
“Can we add a note that the supplier system still needs updating by hand?”
I keep this separate from fixing on purpose. Fixing is about what’s there and wrong. Adding is about what isn’t there at all — and it’s a genuinely different kind of thinking, so it’s worth a separate pass. Run them together and the “add” list quietly gets shorter every time.
Good, fix, add. That’s the whole thing.
Nothing in it is softer than the questioning version. The developer still walks away with every correction. He just also knows what to keep, what to change, what’s missing, and why each one matters.
| Step | What you’re doing | How to say it | Example from a real review | Why it matters |
|---|---|---|---|---|
| 1. Good | Name something specific that works | A specific observation. Not “good job” | “The way you’ve separated in-stock and back-ordered items is clean.” | Tells them which decisions to repeat, and makes it a review of the work, not of them |
| 2. Fix | Point out what’s there and wrong | A request, plus the reason | “Can we rename this button? It says ‘Restock All’, but it only raises a purchase request.” | With the “why”, they catch the next four cases themselves |
| 3. Add | Point out what isn’t there at all | A request, as a separate pass | “Can we add a note that the supplier system still needs updating by hand?” | Mixed in with fixes, the “add” list quietly gets shorter every time |
| Close | Lock in the outcome | Repeat it back with a name and a date, then ask for pushback | “You, by Thursday. Anything in there you’d push back on?” | Turns spoken feedback into tickets someone owns |

The other half of doing this well is when you say things.
Take the review in the order a user experiences it. Start where they start, move through the flow, and mark each step as you go: this is good, this needs fixing, this needs adding. By the end you’ve covered everything and the developer has a list that maps onto something he can actually navigate.
Compare that to how most reviews go — the reviewer spots something, follows it, spots something else, follows that. Twenty minutes later you’re three topics away from where you started and nobody’s sure what got decided about the first thing.
And stay on that journey. This one matters more than it sounds.
If you’re reviewing checkout and you have a concern about the analytics setup, don’t raise it in the checkout review. Write it down, raise it in the analytics review. The moment a review starts jumping between topics, three things happen: nothing gets fully resolved, the developer can’t prepare for any of it, and the whole thing starts to feel like a list of grievances rather than a piece of work.
Right question, right spot. If it’s not this journey, it’s not this meeting.
Two things at the end, and they take about a minute between them.
Say the changes back, with a name and a date.
“So — rename the button, add the note about the supplier system, move the confirm action below the item list. You, by Thursday. Anything in there you’d push back on?”
That last question is not a formality. If you never leave room for disagreement you’ll never find out when you’re wrong, and in my experience that’s about one time in five.
Then get it out of the conversation and into a system.
This is the part most teams skip, and it quietly undoes everything else. Spoken feedback has no memory — no screenshot, no URL, no browser, no steps to reproduce. The developer’s next half hour goes into working out which screen was even being discussed.
You don’t need much:
And one rule underneath all of it: nothing survives the call unless it becomes a ticket with a name and a date, before the call ends. If it isn’t worth ninety seconds of writing a ticket, it wasn’t worth the ten minutes you just spent discussing it.
Worth saying plainly, because a lot of teams have quietly stopped doing this properly — AI meeting notes are not a feedback system. Notion, Granola and Fathom will hand you a beautiful list of action items that nobody owns and nothing chases. A summary is not an assignment. Like most AI tools, they’re a time-saver, not a shortcut: they speed up the process, but they don’t replace it.
I want to come back to the first step, because it’s the one senior people skip and it’s the one that compounds.
In that review I mentioned, an hour went by and not one thing that worked got named. The feature shipped. Records were created correctly. The right emails went out. The admin view did its job. None of it mentioned.
Put yourself on the other side of that. What you learn is that only mistakes get discussed here — so the best possible outcome for your work is that nobody says anything at all.
That’s a rough deal to offer someone. And it teaches exactly the wrong behaviour: build small, stay quiet, don’t attract attention. Which is the opposite of what you want from a team you’re asking to move fast. It’s the same slow slide I described in the bottleneck-leader pattern that stalls good products: the team learns to wait, and stops making judgment calls of its own.
The point of naming what’s good isn’t kindness, though it is kind. It’s that a review should leave someone with a clearer sense of what to do more of — not just a shorter list of things to stop.
I’m not above any of this.
I went back through my own transcripts after that review, and I do a version of it constantly. Any time I can feel an argument getting away from me, out comes “it’s a simple question — yes or no?” Every single time. I’d never once noticed until I saw it written down in front of me.
Which is really the point. This isn’t a character flaw in other people. It’s what feedback collapses into when you’re short of time and you’re right — and you can’t see yourself doing it while it’s happening.
The fix is small enough to be genuinely achievable. Before your next review, decide what’s good. Then what needs fixing. Then what needs adding. Walk it in order, stay on the journey, and close with a name and a date.
Same corrections. Same standards. Nothing softened.
The difference is that at the end of it, you still have a developer who’ll tell you when staging isn’t ready.
It’s a three-part way to review product work, always in the same order. First, name something specific that works. Second, say what needs fixing, as a request tied to why. Third, list what needs adding, meaning the gaps that aren’t there at all. The developer still gets every correction. They also know what to keep, what to change, what’s missing, and why each one matters.
When you ask a question you already know the answer to, it’s a statement wearing a question mark, and it lands as an interrogation. People get defensive, and you skip past the real answer. “Why is this in production?” asked as an accusation gets you an apology. Asked properly, it might get you “the staging environment isn’t ready yet”, which is a real, specific, fixable problem.
They’re different kinds of thinking. Fixing is about what’s there and wrong. Adding is about what isn’t there at all. If you run them together, the “add” list quietly gets shorter every time.
No. Nothing in the method is softer than the questioning version, and every correction still gets made. Naming what’s good tells the team which decisions to repeat, and it makes this a review of the work, not of them. Skip it and people learn that only mistakes get discussed. That teaches them to build small, stay quiet and avoid attention.
Take the review in the order a user experiences it. Start where they start, move through the flow, and mark each step as good, needs fixing or needs adding. Stay on that journey. A concern about another area, like analytics during a checkout review, gets written down and raised in that area’s review. If it’s not this journey, it’s not this meeting.
With no budget: a Google Form feeding a Sheet feeding your task tool. Make five fields compulsory: where in the flow, what you expected, what actually happened, how bad it is, and a screenshot. With some budget: BugHerd, Jam.dev or Marker.io. They capture the URL, browser, operating system, console errors and preceding clicks automatically. In both cases, nothing survives the call unless it becomes a ticket with a name and a date. AI meeting notes from Notion, Granola or Fathom are not a substitute.
I’m a product leader who works at the intersection of product management and go-to-market technology — MarTech, CRM, marketing automation, and increasingly AI-enabled products. Most of what I do comes down to the same thing: building the system that lets a team ship, measure, and know whether any of it worked.
I’m currently open to:
If any of that is useful to you, or you just want to argue with something above, I’d like to hear from you.
📧 harish@psharish.com · 💼 LinkedIn
By PS Harish
21 August 2026No comments yet.
© 2026 PS Harish
Leave A Comment