Letâs not pretend. Most engineering feedback is either a sugar-coated nothingburger that leaves the recipient confused, or a blunt-force trauma session that sends them straight to LinkedInâs âOpen to Workâ feature. The real technical problem in this industry isnât Kubernetes scaling or microservice latencyâitâs that weâre collectively terrible at telling each other when weâre screwing up. Iâve watched brilliant teams implode not because of bad code, but because of bad conversations. So hereâs my unfiltered take on how to give feedback that actually changes behavior, without making people hate youâor themselves.

The Feedback Paradox: Why Weâre So Bad at This
Hereâs an uncomfortable observation: most engineers would rather refactor a 10,000-line legacy monolith than give a teammate honest feedback. Weâre trained to optimize systems, not relationships. So when someoneâs behavior is the bug, we either ignore it until the whole team crashes, or we deploy a patch so aggressive it breaks everything else. Trust evaporates. Resentment festers. The person either doesnât change, or changes in all the wrong waysâgetting defensive, withdrawn, or passive-aggressive.
The root cause is embarrassingly simple: we treat feedback as a judgment instead of a tool. A judgment says âyou are bad.â A tool says âhereâs a lever that might work better.â That distinction isnât just semanticâitâs the entire game. Frame feedback as a tool, and youâre collaborating on a problem. Frame it as a judgment, and youâre just being an asshole with extra steps.
Step One: Diagnose Before You Prescribe
Picture a junior dev who pushes a commit that breaks the build. The lazy feedback is âDonât break the build, idiot.â The slightly-better-but-still-lazy version is âPlease run tests locally before pushing.â Both miss the point entirely. Why did they skip the tests? Were they rushed? Did they not know how to run them? Is the test suite so glacially slow that everyone bypasses it and they just got unlucky today? If you donât understand the system that produced the behavior, your feedback is just noise.
Before you open your mouth, do five minutes of debugging. Ask yourself: Whatâs the actual gap? Is it knowledge, motivation, environment, or clarity? If the person doesnât know the expectation, thatâs a clarity problemâand itâs probably your fault for not documenting it. If they know but lack the skill, thatâs a knowledge gapâand screaming wonât magically upload information into their brain. If they have the skill but donât do it, thatâs a motivation or environment issue. Maybe the test suite takes 45 minutes and their manager is breathing down their neck. Your feedback needs to target the root cause, not the symptom.
The âThree Whysâ Drill
Steal this from Toyota. When you spot a behavior you want to change, ask âwhyâ three times. Not to the personâto yourself, first. âWhy did they skip code review?â Because they were in a hurry. âWhy were they in a hurry?â Because the sprint deadline was a fantasy. âWhy was the deadline a fantasy?â Because the product manager promised a feature without talking to engineering. Now your feedback isnât about the individualâitâs about the process that set them up to fail. Thatâs a conversation people can actually engage with instead of just surviving.

Step Two: Make It About the Work, Not the Worker
This is where most feedback jumps the shark. The moment you say âYou are disorganized,â youâve made it personal. Their brain flips into fight-or-flight mode. Theyâre not listening to your solution; theyâre constructing a legal defense. Instead, anchor everything to observable behavior and its impact. âThe last three pull requests had missing test coverage, which caused two production rollbacks.â Thatâs a fact. Itâs not about their characterâitâs about a pattern with consequences.
Engineers respect data. Give them data. âIâve noticed that in standups, you often interrupt others. Yesterday it happened three times, and two people stopped sharing updates afterward.â Now youâre not saying âyouâre rude.â Youâre saying âhereâs a specific action, hereâs the frequency, hereâs the effect on the team.â Thatâs a bug report, not a personal attack. And weâre actually good at bug reports.
Drop the Sandwich Method
The âcompliment-criticism-complimentâ sandwich is a lie. People see through it instantly. It trains them to dread praise because they know a âbutâ is lurking around the corner. It also dilutes the message. If you need to pad criticism with fake niceties, youâre not confident in your feedbackâor youâre trying to manipulate emotions instead of solving a problem. Just be direct. âHey, I want to talk about the code review delays. This is important because itâs blocking the team. Can we figure out whatâs getting in the way?â No sugar, no venom. Just clarity.
Step Three: Co-Create the Solution
Feedback without a path forward is just complaining. The goal isnât to make someone feel badâitâs to change a behavior. And behavior change sticks when the person owns the solution. So after youâve laid out the observation and impact, shut up and ask: âWhat do you think is going on here?â or âHow would you approach fixing this?â
This does two things. First, it checks your diagnosis. Maybe you missed something. Maybe theyâre dealing with a personal crisis, or the tooling is even worse than you thought. Second, it engages their problem-solving brainâthe part that actually enjoys debugging. When they design the fix, theyâre invested in it. Theyâre not following orders; theyâre improving a system. Thatâs a completely different psychological state.
If theyâre stuck, offer options, not commands. âOne thing thatâs worked for others is setting a personal reminder to run tests before pushing. Or we could pair on setting up a pre-commit hook. What sounds useful?â Youâre a consultant, not a dictator. And frankly, youâll get better results.

Step Four: Time It Like a Deploy
Timing is everything. Giving feedback when someone is stressed, hungry, or publicly embarrassed is like deploying on a Friday afternoonâyouâre begging for an outage. The best feedback happens in private, soon after the event, when both of you are calm. âSoonâ means within 24-48 hours. Wait longer, and the details get fuzzy, the emotional charge fades, and it feels like youâve been nursing a grudge.
Also, ask for permission. Not in a weird, formal wayâjust a quick âDo you have a few minutes to talk about something I noticed in the sprint review?â This respects their autonomy and lets them brace mentally. If they say no, respect that, but schedule a time. Forcing feedback on someone whoâs not ready is a power move, not a help move.
Public Praise, Private Criticism
This rule is ancient for a reason. Criticizing someone in front of the team multiplies the shame by the number of eyeballs. Even if your words are perfect, the context poisons them. Save behavioral feedback for one-on-ones or private chats. Conversely, when someone does something right, say it loudly and in public. That builds a culture where feedback isnât fearedâbecause most of it is positive and visible.
Step Five: Follow Up or It Never Happened
One conversation rarely changes a habit. People need reinforcement, reminders, and sometimes course corrections. A week after the feedback, circle back. âHowâs the test-running habit going? Anything still getting in the way?â This shows youâre not just dumping criticism and runningâyouâre actually invested in their improvement. It also gives you a chance to catch regressions early, before they become patterns again.
If theyâve improved, acknowledge it specifically. âI noticed your last three PRs had full test coverage and were on time. Thatâs made a real difference for the teamâs velocity.â This isnât flatteryâitâs closing the feedback loop. It tells their brain âthis new behavior is noticed and valued,â which is how habits actually stick.
When Feedback Goes Wrong: The Recovery Protocol
Sometimes youâll screw up. Youâll be too harsh, too vague, or too public. The person will shut down or push back. Donât double down. Donât apologize so profusely that it becomes about your guilt. Just reset. âI think I delivered that poorly. Can we rewind and try again? What I actually care about is X, and I want to make sure weâre on the same side.â
This works because it models the very behavior youâre asking for: owning mistakes and fixing them. If you canât take feedback on your feedback, you have no business giving it.
Building a Feedback Culture That Doesnât Suck
Individual skill matters, but the environment matters more. If your teamâs culture punishes honesty, even the best feedback techniques will fail. Hereâs how to shift the culture from fragile to anti-fragileâwhere feedback actually makes the team stronger.
Normalize âFeedbackâ as a Neutral Word
In most teams, the word âfeedbackâ triggers anxiety because itâs code for âyouâre in trouble.â Change that. Start using the word for positive observations too. âFeedback on your presentation: the architecture diagram was crystal clear.â Make it routine. In one-on-ones, ask âWhat feedback do you have for me?â and take it seriously. When leaders model receiving feedback without defensiveness, it gives everyone else permission.
Kill the âNiceâ Culture
âNiceâ is the enemy of good. Teams that prioritize being nice over being honest end up with secret resentments and passive-aggressive code reviews. Iâm not saying be a jerkâIâm saying be kind. Kindness is telling someone the hard truth because you respect them enough to believe they can handle it. Niceness is lying to them to avoid an awkward moment. Choose kind.
Make Feedback a Process, Not an Event
Annual performance reviews are where feedback goes to die. By the time youâre discussing something that happened in March, itâs November, and everyone has forgotten the context. Feedback should be continuous, lightweight, and tied to specific work. Code reviews, sprint retros, and project post-mortems are natural feedback mechanismsâuse them. A retro where everyone says âwhat went wellâ and âwhat could be betterâ is feedback training wheels. It depersonalizes the conversation and makes improvement a team sport.
FAQ: Your Feedback Fears, Addressed
What if the person gets defensive no matter how I phrase it?
Defensiveness is often a sign of fearâfear of being judged, fear of consequences, or fear of looking incompetent. If it happens consistently, the problem might be the relationship, not the feedback. Have you built enough trust? Do they believe youâre on their side? If not, pause the feedback and work on the foundation. Ask them about their goals, their frustrations, what support they need. Once they see you as an ally, feedback becomes collaboration. If theyâre still defensive, it might be a them-problemâbut you can only control your half.
How do I give feedback to someone more senior or powerful?
Same principles, but with extra care on timing and framing. Senior people often get less honest feedback because everyoneâs intimidated. Thatâs a disservice. Frame it as âI want to help you be even more effectiveâ rather than âyouâre doing something wrong.â Use data and impact on the team or projectâsenior folks usually care about those. And if they react poorly, that tells you something important about whether you want to keep working there.
Is it ever okay to give feedback in writing instead of face-to-face?
Yes, if itâs thoughtful and private. Some people process written feedback better because it gives them time to absorb without the pressure of an immediate reaction. But written feedback can also feel cold or permanent. If you go this route, be extra clear about your intent, use specific examples, and always offer to discuss in person afterward. Never give critical feedback in a public channelâthatâs just a digital public shaming.
What if the behavior doesnât change after multiple feedback sessions?
Then itâs no longer a feedback problemâitâs a performance or fit problem. Document the pattern, the feedback youâve given, the support youâve offered, and the lack of change. At that point, youâre not having a coaching conversation; youâre having a consequences conversation. âWeâve talked about this three times. The impact on the team is X. If this doesnât change by Y date, weâll need to move to Z.â Itâs not personalâitâs protecting the team. And honestly, if someone canât or wonât change a behavior thatâs hurting the team, they might need a different team.
Feedback isnât a soft skill. Itâs a core engineering practiceâlike testing, like monitoring, like incident response. You donât skip tests because they might hurt someoneâs feelings. You donât ignore a production bug because itâs awkward to mention. Treat behavioral issues with the same rigor youâd treat a memory leak. Diagnose, instrument, fix, verify. Do that, and youâll build a team that doesnât just ship codeâit ships a culture where people actually grow.