In a perfect agile world we would have all the users who will ever use our software merged into one Zen like being who can concisely describe her wants and needs in poetic prose sitting next to us at all times. In 15 years of software development I have rarely spoken directly to a real end-user, and they seem to be getting increasingly distant. The stream of knowledge from user to developer is polluted with politics, ego, dogma, false constraints and ignorance.
Until we have complete understanding we must make assumptions. Bad assumptions destroy good software. Good assumptions come from empathy and in the absence of face time a good story can help us empathise with the characters.
Without empathy assumptions will come from our desires rather than the users. They may be conveniently simple, ignoring true complexity. They may be inconveniently complex covering every possible eventuality. They may conform to the latest trend or our personal beliefs.
We build software to make users lives happier/easier/more productive. Everything else just muddies the water. To create great software we must never lose focus of who it’s for.