You are here: I beg your pardon?
You’re deep in thought, diligently completing the form in front of you; name, address, password, confirmation of the password (why do I have to type it in twice you might think to yourself?) and then more detail. On completing the form you excitedly click the ‘Submit’ button and wait with baited breath for the ‘Success’ message to appear. Alas, it never arrives, instead in its place there’s an unintelligible series of words and numbers more akin to Ancient Greek than your native language. You have in fact received an Error message, but now what do you do? You’re left, hanging, in a dilemma, this isn’t what you need right now, what you need right now is for it to work!
Every day it seems, we try to achieve something only to be thwarted by technology. Technology should enable and empower us, it’s here to help us achieve our goals and do our jobs. Arthur C Clarke once said that any sufficiently advanced technology is indistinguishable from magic, he was absolutely right.
When we realise we’re not using a tool to help us achieve a goal or complete a task but instead a piece of technology we generally become frustrated and we see the technology for what it is; a barrier.
So when a system fails and the technology becomes apparent what happens to the end user? Firstly and foremost we become frustrated, that leads to the system we're using loosing credibility (after all, all you did was complete the fields like it asked you to). At that point, if you're interested enough in the resultant outcome of completing your information you might try again, but if the system doesn't make that easy for you, or the perceived return on the investment of your time is too low you'll likely abandon the process completely and a feeling of distrust and a lack of goodwill shall become associated with the system and your emotional attachment to it.

What about the other side of the fence? What of the people the system is designed to service, the web site owner? Well, should a user abandon a form, that could be a lost sale or a lost chance to engage with somebody that really does want to get in touch with you.
Really, look at it another way, should you call a company and the person at the other end picks up the phone and says to you "There has been an error with this phone system, I'm sorry but I cannot complete your request" then hangs up? How would you feel? Why is it acceptable on the web yet not in the real world?
A common answer from developers as to why they have shown the end user and error message is to make their lives easier, to enable them to debug a system more easily, whilst the lowly user is left with a dire experience, but hey, it's all for the benefit of the end user at the end of the day right? Wrong.
By delivering your end users real and meaningful error information or rather, building software in such a way that it is stable and error free you instantly increase your credibility with end users simultaneously building trust and potentially a love for the service or brand with which they're working.
Rock solid interfaces are the key, the user experience really matters, and it's not as some people will have you think a matter of design, rather it's a matter of an end to end push by both development and design to deliver the best possible experience to users.
Simple and clean designs are only a small portion of the solution, writing code in a defensive manner will help capture and resolve issues before they even occur, reducing the risk of horrible exception messages ever being seen by the users.
Clean messages with explanations and examples where required can save a user a great deal of effort, if a Phone number is required in a particular format give a user an example, even go so far as to provide a masked input field to help them achieve completing your form.
Security features often make a users life hell, before implementing a CAPTCHA think long an hard as to wether you can manage the bogus entries coming in another way - remember, you're responsible for security, not the users. Making a users life more difficult to save you as a developer some effort later on is absolutely the wrong thing to do.
Build software that rocks. Build it on a solid foundation and with user experience as your number one priority.