The thing is, neither the software engineers nor the users know wtf should be done completely. Communication across domains is hard.
Let's try a physical items example: have you ever ordered a piece of furniture or other home improvement thing, got exactly what you asked for, professionally done... and then later found out there were better ways to do it (at similar cost) that you hadn't even imagined?
Was it because you didn't know what to ask for? Was it because the experts in home improvement didn't volunteer that there are other options? Was it because they sell one thing and didn't even know there are other options? Did you even ask what options you have or did you just order the thing?
Communication is damn hard, again.
> Communication is damn hard, again.
Yes, but it is necessary to achieve better results.
> Was it because you didn't know what to ask for? Was it because the experts in home improvement didn't volunteer that there are other options?
That's bad communication from both sides. Having good information on each of the sides leads to better communication. Client with better communication will have better results for himself. Seller having better communication will give better results to his clients. Worse than his average to clients with bad communication, better than his average to clients with better communication. But his average will be higher than average of seller with bad communication.
Sellers with better communication will provide better service and will attract customers. Sad corollary: he will also attract a lot of customers with bad communication.
> Was it because you didn't know what to ask for?
Yeah, when I don't know what to ask for, I search for expert who will know what I should ask and will help me with expanding my knowledge of the options.
> Let's try a physical items example: have you ever ordered a piece of furniture or other home improvement thing, got exactly what you asked for, professionally done... and then later found out there were better ways to do it (at similar cost) that you hadn't even imagined?
Yes, I speak from experience of such moments.
> The thing is, neither the software engineers nor the users know wtf should be done completely.
It's easier and more effective to educate a small group of software engineers than a lot of users, that's why engineers SHOULD try to communicate better.
> Communication across domains is hard.
It is. But the expert has typically to communicate across one domain, his own against "no_domain". User would have to learn to communicate better or become domain expert in a lot of different domains.