Errors: Bad Decisions or Bad Design?

Errors: Bad Decisions or Bad Design?

This entry is part 8 of 15 in the Web Design Theory Session
« PreviousNext »

Let’s face it: errors happen all the time. Most errors are caused by what we call human error and they seem unavoidable, but I’m going to make the argument in this article that good design practices can help prevent and even eliminate errors that happen on the web. As for the rest of the errors of the world, I’ll leave that up to someone else.

A quick intro: This is another in our series of “Design Theory” articles. I’ll begin this by talking about some design principles in the abstract; Then we’ll progressively work towards some hands-on examples of how these ideas can be applied to web design.


The Causes of Errors

Whether it’s spilling a carton of milk, making a wrong turn, or incorrectly filling out a web form, errors can all be traced back to human psychology. Several psychological studies have suggested that errors can be boiled down into two camps:

  • Slips, or errors of execution.
  • Mistakes, or errors of intention.

We’ll discuss both of these in a bit more depth in just a moment, but consider this statement: The actual source of most errors is not complexity or difficulty or the inability of a user… the actual source of most errors is bad design. As one of my favorite design authors puts it:

It’s not complexity that’s the problem, it’s bad design. Bad design complicates things unnecessarily and confuses us. Good design can tame complexity.
– Donald A. Norman

By that logic, fixing or preventing errors isn’t a matter of simplifying our designs, it’s making them better. Sounds easy, sure… but let’s take a look at just what “better” means in terms of design.


Preventing Errors is Easy, Not Simple

So much has been said about “simplicity” being the holy grail of design in the last decade. Entire books have been written about the merits of simplicity, and how “all we really need to do to fix the world’s problems is simplify them”. It’s complete rubbish-talk if you ask me, but here are just a few examples you might hear around the water cooler or coffee shop:

“The iPod revolutionized the portable music player industry by simplifying the interface.”

“Amazon.com became the dominant online megastore by making it simple to buy products online.”

“Facebook beat MySpace out because it was simpler to use.”

I cry foul! The silly thing about these statements is that no one really thinks about what they mean… I mean seriously, the iPod interface isn’t all that simple if you were to describe it to your 85 year old grandmother; Amazon.com didn’t do anything new to simplify the online store experience, and Facebook beat out MySpace because MySpace’s design sucked!

In none of these examples does “simplicity” play any large role in why the company or product was successful. Design did! Sure, simplicity is always a welcomed strategy if you are dealing with a problem or design that is overly complicated, but we need to stop talking about it as if it were the answer to all of our problems.

People throw around the word ‘simplicity’ too often today. What they really mean when they say something is “so simple!” is that it’s “so well designed!”

You catch my drift… the first step to understanding how to fix and prevent errors on the web is to toss your crutch of simplicity to the ground. Simplicity isn’t a magic wand, it’s a hacksaw, and there are more tools that we’re going to need to use to address our design problems. Alright, let’s move on to the juicy practical part of the article…


Error Type 1: Slips

First stop on the error train, Slips. Slips can be described as errors of execution. They aren’t intentional mistakes, but they happen all the time because we humans are so gosh darned clumsy. Here are just a few examples of slips in terms of web design:

  • Misspelling your email address, name, or phone number.
  • Selecting the wrong check box.
  • Forgetting to completely fill out a web form.
  • Forgetting to hit “Save” before closing a document.

How to Prevent Slips

As a web designer, dealing with slips is tricky because they happen as a result of unconscious processes and misfires in the human mind. You can’t stop someone from slipping 100% of the time… but much like a grocery store might post a “Wet Floor” sign when they are mopping up a mess, there are things that you can do to make users more aware of their actions.

Using the same examples of slips from above, here are some simple solutions:

  • Misspelling your email address. Fix: Validate vital forms in real time to check for errors.
  • Selecting the wrong check box. Fix: Limit choices to a reasonably number, and show users a clear list of their choices before making the form submission final.
  • Forgetting to completely fill out a web form. Fix: Tell users right away when they’ve skipped a required field by highlighting it or marking it with a clear indication that it’s mandatory.
  • Forgetting to hit “Save” before closing a document. Fix: Auto-save the document or field for them… or prompt them to save before they are allowed to close the page or window.

As you can see from these examples, simplicity is just one tool that can be used to help solve errors. In most of these cases, we’re not simplifying the design, we’re actually adding another layout of complexity by adding a “guidance” interactivity layer. Preventing slips doesn’t mean inventing a “simpler way to walk”, it means adding warning signs and better traction floors.


Error Type 2: Mistakes

Mistakes are a different breed of error. They happen when someone intentionally does something wrong. Here are just a few examples of mistakes as they happen in web design:

  • A user tries to break a voting system by voting numerous times.
  • Someone enters Javascript into a simple text field to insert a malicious script.
  • Users are accidentally mis-classifying their industry on a job website (ie: monster.com).
  • Site members are trying to upload lots of high resolution images to Facebook.

It’s important to consider that mistakes aren’t always malicious, even if they are intentional. My own mother, for instance, might attempt the last one on the list (trying to upload several hundred huge photos to Facebook), but she’s not making the mistake on purpose… she’s just lacking the knowledge that it’ll likely take her days to upload those photos on a slow internet connection.

How to Prevent Mistakes

Preventing mistakes, much like slips, is easy to do once you’ve identified the type of error that you’re dealing with. Let’s return to our original examples:

  • A user tries to break a voting system by voting numerous times. Fix: Implement a script that limits votes to one-per-IP address.
  • Someone enters Javascript into a simple text field to insert a malicious script. Fix: Make it so only raw text can be used in the text field.
  • Users are accidentally mis-classifying their industry on a job website (ie: monster.com). Fix: Send people through a series of decision-trees so they can find their proper classification rather than guessing.
  • Site members are trying to upload lots of high resolution images to Facebook. Fix: Have the uploading script check file sizes before actually uploading the files, and let users know the estimated upload time.

As before, the fixes are relative easy in terms of design. In most cases, a simple text-message or workflow redesign will be enough to either inform users of the potential mistakes, or prevent them altogether. Again, the solution here isn’t to reduce simplicity, it’s to add another layer of design that intelligently guides people around error prone actions.


The Third Layer: Practical Solutions to Prevent Errors

The next couple tips are some practical examples of design practices that should help you eliminate the occurrence of errors. This isn’t just for web forms though… the overriding principle is that…

To cope with situations where errors are frequent and users are frustrated, the first step is to consider adding a “third layer” to your design.

But what is this “third layer” that I’m talking about? First, let’s take a look at how most designers approach website design:

In this model, the Core Functionality layer is what you might call the wireframe of the site. It includes the general layout as well as the core content and functionality of the site.

The Visual Design layer represents the skin, or styling. This can be anything from colors, typefaces, images, etc. It’s the visual layer that you wrap over the content to make it look pretty… if it’s done correctly, this should also be helping to make your site more user-friendly by making it easy to read and navigate.

Now let’s look at the model with the third layer:

Now, the model includes a third Guidance layer. This layer represents the “helper” elements within your site.

Third Layer elements might include:

  • Tooltips and Modal Windows – Allow users to get more information without leaving a page
  • Form Validation – ideally, this should be immediate. Read more.
  • Visual Indicators & Status Cues – let users know where they are in a step by step process or when there is an error.
  • Simple Text Reminders – letting people know what they can and can’t do
  • Intelligent Simplification & Restructuring – remove redundancies and confusing elements from your design
  • Decision Trees – help people find what they are looking for
  • Checklists - help users understand what they have and don’t have
  • Historical Displays – help users see changes over a period of time to boost their perception
  • FAQs - this one is more of a content strategy than a design strategy, but it’s useful enough to include on our list (especially if combined in a search or decision-tree system).

It’s important to note that this third layer doesn’t necessarily mean that your design needs to become more complicated… adding tons of new elements isn’t always the solution unless you can do it in a clean, unobtrusive way. Remember, these helper devices are intended to help people avoid errors… if all you are doing is cluttering up a page design with extra junk, you’re actually increasing the likelihood of errors by confusing users. The key: add what’s needed to help the users in the least impactful way. If you were speaking to them in an actual voice, speak calmly – yelling won’t fix anything ;)


Forgiveness

Preventing errors from occurring has as much to do with increasing users situational awareness of what’s going on around them and reducing the visual noise on a page. So often, designer assume that a website user will have the same level of knowledge that they have… this is fine if you truly know and trust your target audience, but in the vast majority of web projects, this is a dangerous assumption to make.

Building in forgiveness into a design is an easy way to lessen the blow when users do make mistakes and slip-ups. Forgiveness, in this context, refers to the elements that will ease the severity of an error when it happens.

For example: This might mean disallowing a user from completing an order form unless they have entered a verified mailing address.

Forgiveness also comes in the form of letting users fix their own errors when they happen. How it will work in practical applications will be up to you… but as an abstract design principle, this means building in ways for users to edit information and correct mistakes.

These are things that we tend to take for granted in the world of Facebook profile editors, CMS systems like WordPress and the like, but when you are creating a design from scratch, it’s truly important to consider where forgiveness will need to fit into your projects.


Conclusion

That’s it for this article! If you guys/gals are interested in more of these theory and principal driven articles, let us know and we’ll be glad to bring you more of them. I personally think that the theory behind web design is easy as useful as practical tutorials for how to create specific design elements, but as this is a crowd driven site, we’ll be listening to what you guys have to say!

Brandon Jones is MDNW on Themeforest
Note: Want to add some source code? Type <pre><code> before it and </code></pre> after it. Find out more
  • http://joecochran.com Joe Cochran

    I for one am loving the design theory articles a LOT more than just the “create this in this” articles, thought I learn a lot from those as well. I especially love the articles that show you how to make a design, and explain a little bit of the theory behind each element as well as the piece as a whole.

    • http://themeforest.net/user/epicera/portfolio?ref=epicera Brandon Jones
      Author

      Thanks Joe! I happen to love writing these pieces (and the discussions that come afterwards!), so it’s great to hear that you guys are enjoying them. Thanks for commenting :)

      Cheers!

    • http://codemonkeydev.com/ Thomas Cannon

      Ditto! (and not just because I write them for the site :P )

      Having these articles is essential for making better designers out of us. Veterans can either learn a new set of practices to consider (or go “so THAT’S why X always worked so well!), and Beginners aren’t simply copy-pasting their way to an artificial and temporary “success”.

  • http://www.movieviews.be Dennis

    Thank you for this nice article.

    @Joe Cochran: I have the same opinion.

    These artcles are much more interesting than tutorials. It is pretty easy to follow tutorials, but if you want to be a good designer, you have to know the thinking process behind the tutorial.

    • http://themeforest.net/user/epicera/portfolio?ref=epicera Brandon Jones
      Author

      Thanks for the comment Dennis!

  • http://www.shadesofadream.com/blog Heather

    Hear hear!

    I love these articles, they let you think and expand more rather than trying to teach you how to do one specific thing that applies to a specific set of circumstances (yes, ok, you can adapt it, but you know what I mean). Knowledge beats out technique in my book.

    • http://themeforest.net/user/epicera/portfolio?ref=epicera Brandon Jones
      Author

      That’s great to hear Heather – thanks for posting :) I’ll definitely do my best to make these happen a bit more frequently. Cheers!

  • Alex W

    Awesome article Brandon!!

    Not to be ‘that guy’, but ‘Users’ is missing the ‘U’ in How to Prevent Mistakes section :)

    Great read, honestly :) I love the articles you guys put up here.

    • http://themeforest.net/user/epicera/portfolio?ref=epicera Brandon Jones
      Author

      Thanks for the correction and comment – I’ve fixed up the typo :) Cheers!

  • P.I

    I would have to say I disagree with some of the others. I like knowing how to do ” do this and this” because sometimes, the mind is left wondering. Don’t get me wrong, I love the theory articles as well but just wanted to let you know that the “do this and this” articles are much appreciated as well :)

    • http://themeforest.net/user/epicera/portfolio?ref=epicera Brandon Jones
      Author

      Thanks P.I. – I suppose its a good thing that we’ll be providing both kinds of articles in the future :)

  • Jay

    Good article. I really like the inclusion of the guidance layer.

    I’d like to add that there is a relation to ease of making something error proof and the complexity of the site. Simple sites are simple to error proof, whereas full blown web applications (I’m working on an in house ERP, and error handling becomes far from easy). It’s amazing what users will do that as developers we never ever think of. If stopping errors was really easy in these then QA departments wouldn’t be needed.

    That’s my only point of contention, the “easy thing”. The information contained is very good, and is something us frontenders ALWAYS have to keep in mind. Case in point, a site I was working on was becoming complex and the user community requested a help document. This would have severely impacted my development time as I would have to put on a Tech writer hat for some time. Instead, we added question mark icons on each page to the guidance layer. On hover a floating div appears with help for that specific page. The users loved this feature and saved us from spending time writing a full blown document. The UI provided a far superior option and enhanced the user experience.

    This article could also be called an intro to concepts of User Centric Design…which is a compliment also to the writer as UCD has become so important.

    • http://themeforest.net/user/epicera/portfolio?ref=epicera Brandon Jones
      Author

      Great comments Jay – especially your example with the floating div (tooltip)… this is exactly what I’m talking about in terms of adding a third layer of UI that guides and supports the user. In your case, a help page may or may not have fixed the situation, since it’s entirely up to the users to find and read the help doc. A tooltip is right there for people to access, without ever having to leave the page. Most people just don’t read instruction manuals or support docs anyways… good UI should always be intuitive with a layer of guidance for any error-prone elements :)

      Oh – it’s probably worth noting (I’m re-reading this article after a night’s rest, hehe), that if it wasn’t clear in the article > this “third layer” isn’t a physical layer or something in Photoshop… it’s just a nod for designers to address the users, even after they think they are done with the visual design of a project.

      Thanks for posting :)

  • http://www.mrblonde.ca Mr. Blonde

    Although ‘simplicity’ is very general term and yes people are probably using it wrong, I DO think that simplicity is a significant factor in the success of those companies which is a result of fantastic design.

    If it’s not complicated, it’s simple. If it’s simple, it’s easier to use and learn. In my opinion simplicity and ease of use greatly enhances any user experience. It’s the path of least resistance which in most cases is very difficult to design. I agree that it’s good design that makes those products wonderful – but it’s the simplicity of the learning curve and the ease of use that makes people come back for more.

    What I’m trying to say is “In the right context, simplicity is important.”

    • http://themeforest.net/user/epicera/portfolio?ref=epicera Brandon Jones
      Author

      Thanks for the rebuttal Mr. Blonde!

      I think we’re arguing over semantics at this point. Part of this was intentional word-play on my part… saying things like “simplicity is bad” is always a great way to grab a designer’s attention. But there’s a reason I did it.

      To me, “simplification” means reduction and minimalism – something can be “well designed”, but not simple… even though most people will call it “simple” because of it’s ease of use. In a way, there really isn’t a right or wrong in this case… because we’re just arguing over the definition of the word ‘simple’, which can have two definitions:

      1) The opposite of complex.
      2) Easy to Use.

      My arguments are made based on the first definition – whereas lots of people use the second definition as a proxy. My point is this: something can be both “complex” and “easy to use”, which is a bit of an oxymoron.

      Take an iPhone interface for instance… if you were to ask an everyday person to draw a workflow chart of the GUI, they’d be hard pressed to really nail it on the first try. This means that the interface is inherently complex… but the fact that so many people find it enjoyable to use is because it was well designed. Yes, the word “simplicity” could be used for an iPhone because it, indeed, is easy to use… but by no means is the design itself “simple”.

      Take a fork for example though – just about anyone can both draw a fork as well as it’s workflow chart (hold in hand, stab or scoop food, insert in mouth). It’s both simple and easy to use.

      I digress, but you get my point: the words we use can often confuse and clutter the discussions we have about design… so I took a section to explain why “simplicity/reduction” isn’t the answer in the case of errors… in fact, adding a guidance layer is adding complexity, even though it may make people rightfully exclaim things like “it’s so simple!”.

      The very fact that we’re discussing so much it means that we’ve beaten the poor word to death though, hah!

      Thanks as always for the insightful discussion Mr. Blonde! :)

  • Pingback: Errores: malas decisiones de diseño o mala?

  • nguyenhung

    i am very thank-full Mr.Brandon Jones for the best article like this one . i learn a lot of new principle for my future web-design .

  • Serge S.

    I really liked the the “guidance layer” term. People talk about things like that, but your expression is both laconic and… well, expressive. :) Thank you for that one.

    Now…

    1. There is one dangerous — well, potentially dangerous — point in your article. Here it is: “Misspelling your email address. Fix: Validate vital forms in real time to check for errors.”

    You’re absolutely right about this: people do tend to misspell things, and developers have to counter that.

    There are, however, several ways of such countering. And when it comes to emails, for some reason lots of people get a brilliant idea: email fields should be tested against some hastily concocted pattern. Because email’s format is very simple, right? Something like “con@email.com”. Easy enough to validate it using simple regular expression — hey, we can do it in real time with JavaScript!

    Actually, the link you provided — the link to the article about form validation — suggests to follow this way exactly. Oh, it doesn’t mention regular expressions. It just says “if you have an email [...] field, you may have a specific formatting required”.

    Well… no. The email format is specific indeed (RFC 822), but it is by no means simple. And the regular expression which validates RFC 822-compliant emails is one of the most impressive things I have seen: http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html
    In case the parser won’t let the link above pass, you can just google “Mail::RFC822::Address: regexp-based address validation”.

    You’d be surprised how many developers fall for that. And then suddenly customers can’t enter their perfectly valid emails. And become frustrated. And leave. Leave for a website which simply asks them to enter the email twice and be done with it.

    Dangerous thing, these emails. :) So when you talk about email validation, you’d better warn your readers about certain pitfalls — or leave emails aside completely and turn to some less dubious examples.

    This actually part of a bigger problem: strict validation rules which prevent client conversion. Something to keep in mind, always: if you create a form with complex validation, you’d better monitor how many people make it through.

    2. The «forgiveness» you speak of is a great thing. But I’d say that «disallowing a user from completing an order form» is not forgiveness. It’s a logical result of validation error, and it’s potentially frustrating — especially if the field in question was not really necessary.

    Nowadays, every second website demands and requires registration. People are sick of filling forms, and they start projects such as BugMeNot. So maybe we should first ask ourselves: do we really need that email? address? ZIP code? date of birth? name of first pet? Do we need this form at all? Wouldn’t that make a good design step towards… errr… simplicity? :)

    After all, “There is nothing so useless as doing efficiently that which should not be done at all”. :)

    • http://codemonkeydev.com/ Thomas Cannon

      1) Thankfully, we’re FINALLY getting some help on this end with HTML5, and there are an increasing number of tools to help ensure that email addresses are valid (whether JS or your preferred language’s use of a regex function). Hopefully, this will soon be one of those things that we have to dig into our brains and remember.

      2) I would say that preventing a user from entering a form if it’s invalid is forgiveness, simply because you’re giving them a second chance. As it’s mentioned in the article, most errors are simply due to missteps. I think your second point is completely valid: unless you’re processing my billing, the only things you need are my username, email, password, and recovery information. Luckily, with how “ominous” and “creepy” facebook is becoming with its data handling, and the trend that registration has to be short and painless in order to be competitive, we’re seeing a shift towards requiring less personal information from the user

  • Alex

    I’m sorry I just don’t see any point to this and this correlates with web design tutorials. This is more of errors you make on a common website and a more in-depth approach on how to approach things yourselves.

    This place really needs more articles on the aspects of web design, user interface guidance, psychological aspects of how the user navigates pages etc etc…

    I’ve wasted my time
    - Alex

    • http://themeforest.net/user/epicera/portfolio?ref=epicera Brandon Jones
      Author

      Heya Alex,

      I appreciate the feedback… but I’ll disagree with you on the point that this has no relevance to web designers. This (Errors / Feedback Mechanisms) is actually a principle that helps form the foundation of user centric design, which is actually a pretty huge deal to any web designer looking to make his designs more usable. Furthermore, we have quite a few of articles already on the other stuff that you mentioned as well: “the aspects of web design, user interface guidance, psychological aspects of how the user navigates pages etc etc”… In fact, this article is directly relevant to two of your requested topics: “user interface guidance and psychological aspects of how users navigate pages”… so I’m a bit lost as to what exactly you mean when you say that you’ve wasted your time. Perhaps you’re just looking for more tangible “tips and tricks” as opposed to the underlying principles?

      Either way, we appreciate any and all feedback and criticism that our readers have to offer… but if you could take a moment to try to clarify what it is you’re looking for, it would be very helpful and I can personally guarantee that it’ll be taken into account as we publish new articles in the future! Cheers!

    • Nina

      I’d say that all these articles in this session are a “must read” for any web designer!
      Every article is one piece of the big cake and when you’ve read them all you’re full of inspiration and knowledge about today’s web design.
      Every article is easy to read and understand and gives you heaps of important knowledge to combine with tutorials for css, javascript, html, photoshop etc.

      I’m very thankful for tuts+ and I put lots of time reading these articles and tuts :)

  • Pingback: Errors: Bad Decisions or Bad Design? | Coding Articles & Tutorials

  • npalmera

    I am reading all of these articles…. I am learning a lot with them.
    I would like that you, as an experts, bring us more of them.
    I agree with most of you when say that “the theory behind web design is usefull and necesary too” in order to improve our professional work. Thanks From Venezuela.

  • Melissa

    As much as I appreciate these articles, I’m not sure how important “web design theory” is. I think that, in general, web design is a right-brained, spontaneous, creative, and heart-driven process. Analyzing everything down to the nitty gritty details is just applying such a left-brained ideology to a right-brained thing. I think in general it is more inhibitory.

  • Pingback: Understanding the FLayout in Web Design | HowDoDesign

  • Pingback: 15 Web Design Theory You Should Learn - ReeZh Design

  • JudyK

    Actually… this article is not addressed so much to web designers rather to web programmers or whoever is in charge of ERROR MESSAGES and the like in a team of web builders. Since as a web DESIGNER (not programmer) I’ve got no clue whatsoever on how to program and deal with those “error messages”. I deal with DESIGN.