Error messages should be expressed in plain language (no error codes), precisely indicate the problem, and constructively suggest a solution.