Good error messaging puts a user back in control when things go wrong. It aligns expectations and calms the user by giving them a sense of context around what happened. Good error messaging is informative and jargon-free. It is not engineer-speak. It empowers the user by either telling them how to fix the problem or what they can expect to happen next.