This discussion has started as an off topic in Formatting phone numbers when dealing with international companies?
There seems to be the two schools of thought on how to control user interaction with the system.
The first one suggests that the user interaction has to be controlled by a set of rules, probably documented, which will define what users can do on the system. If they do not follow these rules, the developer does not have any responsibility. These rules has to be enforced, e.g. for providing extra training for the users, data validation and error messaging if the data does not match the expected input.
The second one is to allow user freedom of input and flexibility of interaction with the system. Developer in this case will have to program with this flexibility in mind. This was summed up by erolst:
there is no such thing as a user error, there are only programming errors
I am kind of in the middle, as I can see arguments for both approaches, but I am interested what the other developers think. Please share you thoughts and anecdotes and if you know of any resources/useful reading.