How do we learn this?
Are there any good resources?
In terms of spoken communication... I'd suggest looking into Toastmasters, and/or just volunteer to speak at user-group meetings and things of that nature. There are a number of good books out there on public speaking / presenting, but most of what I've learned on the topic came from online sources (like threads here on HN) and just practice.
Also, as somebody else said: read lots of books. Try blogging / writing in some context. The more you write, the better you'll get. Somebody, I think maybe it was Stephen King, said something like (paraphrased) "the best way to learn to write well is to read a lot and write a lot".
Or for a less traumatic approach: read a few books or attend a few workshops, then practice what you glean inside your existing relationships.
The books and workshops that are most helpful for you will be personal. To learn interpersonal communication techniques, try browsing the management, relationship, and self-help shelves for something that stands out. Similarly, management training/workshops and therapy groups can be very helpful.
If you just want to articulate your thoughts more clearly in writing or speech, look in the writing or public speaking shelves and look for writer's groups or Toastmaster's meeting.
Most of it comes down to practice, but there are innumerable resources that will help need to figure out what you need to practice. Few of them will lead you astray, so don't overthink it and just dive in.
I thought Crucial Conversations was a great book for this
There are tons of examples of bad communication and how to improve it.
One of my favorite parts is about how to be truthful in communicating. When “that’s stupid!” pops into your head how do you communicate that excluding the options of saying nothing and blurting out your thought vomit. And it is about realizing there is almost always a mismatch of assumptions on one or both sides. So the best response to that thought is usually to ask clarifying questions.
I am not sure I will continue to write new content, but the archive is here: https://writingfordevelopers.substack.com/archive
I believe it might help you.
And observing results
People say being a good listener is the key to communication, but to be more precise, it's understanding the context that you're communicating in deeply that allows you to be an effective communicator.
For me, it's been helpful to build internal frameworks to understand what value sensitivities and blind spots I have and apply context switches real time during conversation.
As a simple example, you may be sensitive to the logical accuracy and truth of things, and you may not care much about causing conflict. This is fine, but there exists other people that are sensitive to conflict and tend to ignore logical accuracy. Effective communication between these two parties starts with understanding these fundamental differences, and context switching out once you realize that you're talking about different things. There are many conversations that happen where one person is trying to communicate "you're factually wrong" and the other person is trying to communicate "you're making me feel uncomfortable with how much conflict you're causing", and the same thing gets repeated for hours while getting nowhere.
There are many frameworks out there on value sensitivities, and you can use any of them or even build one yourself. The 5 love languages is a simple one where understanding, digesting, and applying it can take one afternoon. I personally heavily rely on cognitive functions (wiki it, it's a deep topic). I also classify the source of activity as either being rational, emotional, or willful/goal oriented - I do this because it is simple, fast to evaluate, and yields actionable insight.
You also need to always try to improve your communication by expanding your values. Some people belittle other values instead of acknowledging them, and as a result never improve.
Try to acknowledge and incorporate additional values in your communication. An example value is terseness - can you communicate your point with as few words as possible? Another can be rapport - at the end of the conversation, does the other party like you more? A third can be precision - can you be more precise with your meaning when you convey ideas? A fourth can be objectivity - can you take your emotional slant or political preference out of your speaking? Or can you put more emotion into your speaking? Organization - can you practice to organize your thoughts better?
You do not have to subjectively internalize values, you just have to learn how to objectively evaluate them so that you can interact with people who subjectively value them. If you adopt this paradigm, there's really an endless amount of ways to improve/broaden your communication style.
Once you understand values and set a goal, then practice a lot. Most people recommend writing regularly because writing (along with editing) is the best way to discover, muse, and improve how you communicate. It's also helpful to take professional communication classes, which will train you in standardized ways that people have solved common communication issues (ambiguity, lack of professionalism, etc).