Software developers have to deal with many different groups of people: other developers, managers, customers, users, marketeers, etc. Dealing with each of these groups requires different communications techniques. Misunderstandings and other forms of failed communication are common.
Many people want to blame all communications problems on others. They believe "If other people don't want to listen to me, or don't accept my contributions in the intended spirit, that's their problem."
Wrong! If you want to affect the behavior of others, it is your problem. You are the one who needs to adjust the message or the form of its delivery. If you don't know how to communicate effectively, you need to accept that you are an IncompetentCommunicator, and should try to improve your communications techniques. Believing otherwise is simple arrogance and denial.
It doesn't matter how talented you are or how "right" you are - if you can't communicate, you must accept that you are an incompetent developer. We all can learn better ways of communicating. Accepting one's incompetence is the first step toward determining what you need to learn.
See also OnlySayThingsThatCanBeHeard, HowToTalk, DiplomacyPattern, IsYourRudenessNecessary, ChronicComplainer, CriticalSpirit, PeopleSkills.