There are several interrelated problems which cause a failure in communications. Developers typically don't think like users, even when they use their own software. Software developers tend to be introverted intuitives, people who can see and manipulate abstract structures in their minds, structures which become almost as real as anything in the physical world. All too often, such people are relatively poor at communications because they rely on their understanding of these objects in their minds, objects which aren't visible to others. When introverted intuitives drive to work, they follow a map in their minds, and see very little along the way.
Software developers do well with command line interfaces.
Many end users of applications are more likely to be extroverts, sensories, or both. Extroverts are better communicators, relying on a rich mixture of words and gestures, and make good use of feedback. Extroverted sensories see everything along the road as they drive to work. These people do well with visual interfaces that allow direct manipulation. To put it bluntly, people who communicate based on symbolic manipulation of mental models are designing interfaces for people who want and need a responsive interface that is rich in information, and that accommodates a wide variety of input and working styles.