Paraphrased
- How should giving feedback work?
> Precisely how it will be received most effectively.
- How is that?
> You must learn that for every person. Here are some ideas.

This is something that I feel like many in engineering have to grow to appreciate (or at least I did, and I see some of the same markers in many of my peers that I had.) not just about feedback and interpersonal relationships, but about everything. There are likely many things that you have an intuitive feel for, but just as many you have to calmly, slowly, and carefully consider yourself, your actions, and their consequences, if you want to be more effective or be better.

In the past, I coached jr. high and highschool boys basketball. Some players got lots of leeway to make mistakes before getting subbed out during games, because they were capable of learning from those mistakes themselves, and coach feedback didn't help their learning process. Other players would make mistakes and immediately get subbed out, mistake pointed out, discussed, correct action proscribed, and shortly subbed back in. They needed the outside feedback to process "that was a mistake, I shouldn't do it again."
Some players goofed off in practice and got to sit on the sidelines. Some players goofed off in practice and got to run laps.
I had several discussions with parents about why their son got "special treatment" when really it was about me trying to give effective feedback. And I'm not saying I was awesome at this, or always adjusted my approach for every kid in every situation, but when I could, everyone's results were better.

A larger rant I have on this and any topic that circles back to effectiveness is how to respond to "What is the best thing to do in X situation?"

For example, today in a team meeting, my group was discussing way to improve performance in one of our systems. In the past, I've seen caching greatly improve performance over database optimizations, so I'm optimistic about a better caching paradigm, whereas one of my team members is looking at a longer-term code maintenance and simplicity perspective that says, do fewer things better, so optimize our database calls. Long slog to figure out which is better, but we can't just generalize from past experience. What should we do? Precisely what is needed. How do we know that? We'll have figure it out. We have some general guidelines, but we'll have to figure out how to apply them to this situation.

I have two kids. The older one would usually go to anyone when he was a baby and be happy, smile, coo, play, for 10 minutes or so before he would get worried about where mom or dad were. The younger one usually senses that mom or dad might be handing him off, and gets upset and takes 5 minutes before he calms down. But sometimes the older one would cry going from my wife to me, and sometimes the younger one will happily go with the church nursery lady. Why? I don't know. We'll figure it out.

Generalization is great, generalization is helpful, generalization is not right in every case. With people, if you really want to be effective in feedback or anything, you have to figure out how to have an approach that you are generally successful at, how to generally alter it when you need to, and then laser focus that flexibility for the people, relationships, and situations that you really care about.