Effective communication can prevent or even overcome many problems in software engineering.
Many engineers are often underestimating the value and the power of effective interpersonal communication and try to solve problems solely through their technical skills. Sometimes they succeed but most the time the real problem cannot be solved in that way. Think for example of unrealistic deadlines, understaffed projects or generally anything outside the control of engineering teams.
Personally I follow these 3 simple rules:
1. Give context before details. Most of the time the person you are communicating with doesn’t know what you are dealing with and needs an introduction into the context.
2. Be brief. Do not go into unnecessary details before needed.
3. Adjust to your target audience. Communicate using a common language (technical or non-technical). If needed use analogies or examples to make sure the message is understood.
For me personally these simple rules work for in person communication as well as for emails. Empathy helps a lot.