Software useability is a big topic. I tend to like software that works easily out of the box, or right after installation. I shouldn't need to tweak something too much to make it work for me. This is a sign that the solution is not right.
Websites should abide by useability considerations as well.

Last weekend I was looking for the local Michaels store's hours. Easy enough to do. Got to Michaels.com, click on Store Locater and you will end up at the above screen.
I entered my city and province, then clicked search. This generated the error seen below.

At first I was confused, but then saw the country selector at the bottom. I re-entered Victoria, BC, and chose Canada. The results then showed what I was looking for.
Thinking about this 3 things pop to mind.
1) Why do I need to enter the country? I told the site it was the province of BC. That alone should be enough to indicate the country.
2) The error message says nothing about the country, and I had assumed (from its placement) that the country selector was for the zip code.
Side note: you can easily guess the country if the user had only entered a zip code too. Canadians use postal codes which are a combination of letters and numbers. The US uses zipcode which are strictly numbers.
3) Why did it clear out my entered data? A likely course of action would be to try submitting again. The site could easily keep my data and present that back to me.
How would I fix this? First, after an error, the user entered data would be re-populated with what was submitted. I would also include a clear button to allow the user to start from scratch. Next, I would ditch the country selector since it is not necessary. The zip code field would be renamed zip/postal and its validation would be intelligent enough to decide which country the user chose. Finally the country can also be determined by the State/Province drop down. To me that is more useable.