Anyone who reads the Theology section of my blog knows I'm a postmodern thinker. That's the reason I was happy to find an old, but not outdated, paper on Postmodern software development by H. Robinson, P. Hall, F. Hovenden and J. Rachel. This paper describes the roots of software development in the Enlightenment and Modernism and the need for Postmodern thinking in the software development field.
Modernism and Postmodernism
Thinking from a modernistic perspective gives us one truth. All the other truths are false and people thinking in that way are stupid of ignorant. I hear things like this quite often in the field. Terms like "stupid users" or talking about dumb request a user makes regarding some software. Actually, I did this most of my development career. User perceive this attitude as arrogant and developer view their users as dumb people who just need to learn how to use the software they provide. We need to stop thinking this way. Users and developers have their own view, their own (meta-)narrative, their own truth. And... yes... you are both right. This multiple truths can be equally true at the same time.
If we recognize this way of thinking we are able to appreciate the view of our user in the same way we appreciate our own. Discussing these different truths (views) in equality will lead to better and more usable software. This will lead to a happier customer/user and a happier developer. Differences in opinion will lead to creativity and therefore to better solutions.
This is hard for most developers. They are specialized people, skilled at their job. We need to drop the idea that we are able to deliver the best tools for our costumers and start working together with our customers to create these tools. We need our users to tell or show us what they need and how they work.
Communication is the key
A few development processes try to incorporate these ideas, for example RUP and Scrum. These processes try to make the user part of the development process. In this way, what the authors of the paper call "configuring the user", the developer and the user are able to see each other as equals and see their views as equally valuable. That is, if the circumstances let them. The political climate is always a factor in this.
Whatever development process you follow you must value your user as an equal and communicate. If you are a developer: do soft skills training. Learn to communicate and how you communicate. These skills are essential. At least of the same importance as you hard skills, maybe more important.