I have this habit of always speaking my mind. Telling people what I think, even when they don't ask. And I've always justified it by saying I want what's best for them - which is still true! But what I'm learning is that it doesn't always help.
You're probably thinking I'm an idiot for being 28 years old and just learning this now. But I have been a very firm believer that you don't help anyone by not calling them out when they're wrong, by justifying their weird behaviors with acceptance and by letting people do things that will cause upset, hurt and confusion long term. If I can see a train wreck up ahead, I thought I had a duty to speak up. And while I'm writing all this out - I STILL firmly believe it.
I guess what I'm realizing is - delivering that well intended message and it being heard and received in the way it is intended (to be helpful) depends as much on the recipient as it does on the message itself, and the person sending the message.
For me - while I may not LIKE what is being said, I generally appreciate when a friend (or family member) tells me I'm being wrong. Again - in the heat of the moment I may not do a good job of being grateful. But I appreciate feedback, especially from someone I trust. These messages aren't easy to deliver!
But what I'm realizing is not everyone wants the feedback. Or maybe they just don't want it from me. But either way, the world will be a better place when I learn when to speak, and when to bite my tongue. I'm learning that I can be knowledgeable of a situation - and even opinionated, and I can stay out. I can take sides when people are feuding - but no one has to know (especially the person I'm not siding with)!
Also - some people know they are doing something they shouldn't, and have made the conscious decision to do it anyway - for whatever reason. In which case they certainly don't want someone pointing out why it's a bad idea.
It's a real challenge for me to hold back - but I'm getting markedly better at it. And if you want my opinion -- just ask! I'm so willing to share.