UX - Avoid Unexpected Error
For the few minutes assume you are a doctor, one patient come to you. He doesn't understand your language & neither you understand his. His gestures, hand signals were not particularly helpful. You check his heartbeats, lungs & other things like doctor do (I can't really tell, I am not a doctor), but you find nothing. Now can you go to guess sickness & do you want to prescribe him medicines?. I hope your answer is no. But when we write code,
Check following error messages :
These types of messages not helpful to user. Its programmer talking one language & user has no way to understand why he get an error. He will try once again, maybe twice or more times. But doing again & getting the same error message serve nothing. It adds bad experience. If your internal operation person getting these kind of error, then you are wasting his time. If that error causing some major incident, other people will get involved, there gonna be some pressure on your servers. All these could get avoided if we show user appropriate error message.
Sadly, this aspect gets overlooked most of the time. At-least one of manager to whom I report never thought this is important. And when, after I had lengthy chat, my frustration was such that time, I had to get transferred to a different team. Maybe I don't have persuasive power or my English wasn't that good. Even I haven't seen any UX proposal, which talks about errors. its UX disaster.
When we could, we programmed some business rules. Rules like "you cannot withdraw more that $2000 in a day from your account". So when you try to withdraw $3000, you will get an error. If the error message says about limit, you will approach your bank for that or probably do something else. But saying something like "there was an error..." or "unexpected error..." won't serve any purpose.
For better user experience, we have to have better error reporting. Now most of application code with i18n in mind. So hard-coding errors are bad. When application throws error, it should have error-code. Code can be like 456 or InsufficientFund. And somewhere we should maintain language specific dictionaries which 456 = "Insufficient balance in your account, you can not withdraw". The implementation details can vary.