It's not just you who struggles with this - it's a very hard thing to do even for those who do it a lot. The number one barrier is just recognizing that it's a thing and you can work on it and do consciously (and sounds like you did that, so that's already huge!)
In fact, what distinguishes executives is their experience, ability and willingness to get others to see and rally around a problem or goal - which is why I positioned this to the person I was responding to as an opportunity. If you can figure this out, your career (and life) unlocks to the next level.
Now to answer your question, some practical advice:
1. Most often, people conflate problems and solutions and just say "we should do X" without making the person first understand and agree that there's a problem to which X is a solution. So when you get pushback on X, is it because the other person doesn't think it's a good solution, or did you not even help them understand that there's a problem to begin with?
2. People often fail to evaluate whether problems are relevant, and to communicate that relevance. EG, have a solid answer to "who gives a fuck?" Like "this system is not well designed and I want to refactor it" - "who cares?". "This system is hard to work on, and we work on it all the time, so our feature delivery velocity is only half of what it could be" - now I am listening.
3. If you lost people, troubleshoot where you lost them. "You don't agree with my proposal to refactor the system, so I just wanted to double check if I had explained the problem well. To remind, do you agree that our feature velocity is slow? (yes/no) If yes, do you agree with me that the root cause of the slowness is the complexity/messiness of the underlying system? (yes/no) Do you agree that my proposal to refactor it will address it (yes/no) Do you just think now is not the time we can afford that investment (yes/no)." etc. Walk them slowly through the conversation, and if you ever get a "no" you didn't expect - dig into that. Is it because you didn't explain something, or because the person knows something you don't? It's not THAT different that debugging code, by trying to find the place where it disconnected from what you expect. But it takes time and confidence to stick with this process.
4. Write it down and have someone read it and tell you if you actually got the point across clearly. Writing things down helps me establish the logic to my intuition which is what enables me to do #3 better.
5. Realize this will never feel easy because it's hard, as long as you're trying and learning from the experience you're doing all you can be doing.
6. Take a class or read a book on negotiations (negotiations is just a process of understanding the other side's position as well as your own and talking through it in a way that finds a solution that works for both).
For kicks, I'm going to throw out a possibly odd analogy.
The length of a string determines how quickly it vibrates (assuming tension is the same). Shorter strings vibrate faster than long strings. If you're in a noisy environment and you want to make sense of all of the chaotic sounds around you, one way to do it would be to take a bunch of strings of different lengths (say a piano) and see which ones resonate more than others. The gentle ringing of those piano strings, some louder than others, tells you which frequencies are more dominant in the surrounding acoustic environment, because they cause their matching strings to resonate more.
As I get older (I'm in my forties), I feel like a lengthening string. When I was a twenty-something programmer, I could tell you how things had changed over a year or two, but trends or cycles on longer timescales than that were hidden to me. Now I know what a decade or two feels like and can see and intuitively sense cycles of that scale. At the same time, shorter trends are harder for me to pick up on now. It feels like noise or beneath my notice.
Having people of different ages in your organization is incredibly value because they all resonate at different time scales like this and help you pick up chronological patterns at frequencies you'd otherwise miss.
Similar to a graph of nodes with a time component.
I have been scratching my head around this visualization problem it has been some time, and still haven’t found anything that would be applicable