This cannot be overstated.
Every time I review error messages, I _always_ ask 3 things:
- What: is the "what" clear.
- Why: explain the reason this happened.
- Next: what can be done next.
Almost all error messages can be expressed this way (the exception being the ones about security where giving information is a way for attackers to more about users, etc.)
The result is great: users almost never ask you any questions, and when they do, it usually means it's either because the message told them to, or because the error message is not clear, and we ensure to clarify it.