Grow your CSS skills. Land your dream job.

Intentional Difficulty

Published by Chris Coyier

Here's some food for thought.

When designing something that you are reasonably certain the user is willing (or forced) to invest time in learning to use proficiently, is it beneficial to intentionally make some tasks just slightly more difficult than they could be?

Not incredibly hard, not convoluted, not outright counter-intuitive. But perhaps making some information a little more buried, or placing an action in a slightly strange place. If the user is really looking, they'll be able to find it.

Frustrating a user is never good, doubly so when you have competition a few clicks away. But forcing a user to do a little discovery and learn the specifics of this product/application/website might make them feel closer to it or more attached to it because they've already learned it.

I'm not advocating this, I'm just throwing it out there because I think it's interesting. It's certainly no excuse for bad design.


  1. Permalink to comment#

    This reminds me of something I read a while back concerning web design and clients. The suggestion was to intentionally misspell a couple words. The client would the error and sent off an email. The intention was to give the client a sense of involvement in the process.

    Of course you wouldn’t do this with false intentions. It is just something to break the barrier and get the client more active in the development, and more importantly, the constructive criticism of the project.

  2. Permalink to comment#

    Imho saving the users time and cognitive efforts should always be prioritized against conflicting marketing related strategies.

  3. I think perhaps something like this has it’s place during the design and development process. Place something in a slightly harder to find spot and dedicate and hour or so to working with the client to find a better spot for it. Sure you’ll already know the better spot, but it helps them feel more involved and if you explain yourself well, they are more willing to trust you – since you clearly understand what you’re talking about.

    However, an approach like this would highly depend on the client and whether they even want to have a high level of involvement in the project.

  4. Permalink to comment#

    As above in the development stages, this may be a great way to involve your clients; but you also want to ensure your client has faith that you will not make mistakes or have a clear plan for development and be professional throughout the project so maybe a catch 22? LT

  5. I’d be interested to see an example of this in the wild. I’m dubious that it would work, but psychology’s a funny field, and I won’t pretend to understand it :)

    • Yes :) Psychology is a funny field.

      Vygotsky brought that up some time ago – he used the term Zone of Proximal Development to describe the fact that when you make things a bit more difficult than the other person can apparently handle – you actually help them.

      Difficulty gives us a taste of how awesome it can be if you just push yourself (or someone else) – to do it.

    • Derrick
      Permalink to comment#

      The best example of this is AOL. AOL gave out thousands of CD’s with free trial periods. They then made their sign up so convoluted that the user had to invest so much time, making email names, setting up preferences that when it came time to actually sign up the user felt as though they would be wasting all that time they spent signing up if they didn’t go ahead and get the service.

    • I remember those! Apparently their collectible these days:

  6. Toni Kukurin
    Permalink to comment#

    As interesting as it sounds to hide stuff from clients ( :D ) to keep them involved in the process, I think Chris was mentioning this as a way to involve the user and make him feel more closer to the website (or application) he’s using.

    My mind is divided; although I am generally aboard with making products as simple as possible to use, if (and only if) the user were to feel a sense of accomplishment upon finding that (stupid example) search box, you could go for it.

    Just think about the fact that game designers have been doing this for years (not that web design is to be compared to game design); users want to feel closer to the “main character” and want to feel proud of themselves when they achieve an assignment put in front of them.

    You just mustn’t overdo it.

  7. Permalink to comment#

    I’m all for educating the visitor and slowly teaching them new things, but I think it depends on the target audience for your site and the purpose of your site.

    If the customer’s got to be quick on the site (competition, etc) then they need to get what they want to do done quickly.

    If you know your audience could be open to something different, it’s worth giving it a go.

  8. Right. Like dropping database tables, that one should be hidden.

  9. Permalink to comment#

    I definitely do that sorts of things, mainly for two reasons:

    1. Like Jason said above, people want to be involved in the process, and if it doesn’t fit them, they’ll tell you to change it and put in some other places
    2. Sometimes, putting something in unusual place helps user remember it faster (“Oh, that’s the thingy that is ‘hidden’ behind, I know, they told me to pay attention…”)

    Now, the second reason may be implied with the fact that I live in Serbia, and we have moto here that, roughly translated, says: “Why keep it simple, when it can be complicated” :)

  10. Intentional difficulty is good in games. For utilities, not so much.

    So, if a service like Twitter or 4square had a hidden bonus round, that’s fun. If your blog had a hidden improved edit mode, that’s a lot less fun.

  11. I build a small number custom guitars each year, and I use “intentional difficulty” on my website to screen potential clients. I don’t think my site is difficult to navigate (though it seriously needs an update), but there are hidden features that are probably only discovered by the curious or methodical reader. Visitors just looking for a cheap guitar probably won’t stay long, and don’t waste my time with email or phone calls.

  12. I’ve heard of people doing that to jar people out of thinking they know what they’re doing and thus to take time to read the instructions and make fewer mistakes. However, I’d want a lot of evidence that that is what happens and that it does not alienate more people than it helps before I’d actually go that route.

  13. The only time I could advocate making something intentionally difficult is if it’s something you don’t want the user to do – for example, deleting a bunch of records permanently, or dropping a database.

  14. Nicolaj
    Permalink to comment#

    “Why keep it simple, when it can be complicated”. You work for Microsoft?

  15. Dor
    Permalink to comment#

    I don’t think that’s such a good idea. Unless the user is absolutely FORCED into learning, he’ll just give up in the middle if the task is too difficult for him.

    Difficult tasks should be made on things you don’t want to be done accidentally, like deleting multiple records or something.

    Another possible action would be to provide a “Challenge Course” for users willing to do so.

  16. Permalink to comment#

    I’ve done this intentionally a few times in Silverstripe. Giving all options for the user on all pages – but with different uses. The users are’t dumb in spite of what we hear more than often – in my experience they learn by doing. In case of Silverstripe CMS, it’s very straight forward if it’s built properly and taught to them.

  17. Oliver
    Permalink to comment#

    If the user is aware of it, and gets some kind of reward, then maybe it would be a good way to get users to explore the app/site more.

    Dropbox does it.. they ask you to complete a 5 step introduction and then give you a 250mb storage bonus.

    I didn’t really like that they intentionally made me go through hoops (and didnt complete it at the time), but one of the steps is sharing dropbox with colleagues, so its a smart way to get more users.

    I think the key is to offer a reward. Or that completing the intentionally difficult task itself is rewarding in some way.

  18. Permalink to comment#

    In cases where the “quick and easy path” might lead to mistakes or problems, absolutely. You don’t need the app to slow you down if you’re just posting a comment on a photo, but you do need to make someone think twice before they reformat every page on their CMS.

    Ubuntu does this, too: you can’t log in as the root user. Any system-level changes have to be done by proxy, entering your password every time. Does a good job at pointing out that you’re doing something that has consequences.

  19. Interesting thought, Chris. It’s not quite the same idea, but it reminds me of this also thought-provoking post. Both have given me pause (a very good thing) as I contemplate potential use cases.

    I think these sorts of ideas can produce great, clever, and natural solutions, but must of course be used with the utmost caution.

  20. dave
    Permalink to comment#

    With many sites, there will always be a learning curve to browsing, interacting and intuitively navigating through it. There’s something to be said about “training” your user and guiding him/her through your site in the way you want them to.

  21. I never thought about making it harder to use, always trying to make stuff easier for the end user. I will have to think about it on my next project

    I have definitely used this when someone has requested some functionality that we would rather not have but we do it so they shut up. Usually put it someplace that most people dont see.

  22. Lol @ the misspelling comment

  23. My original thought for this was kind of based around those touch screen menu systems for the waitstaff at restaurants. They are usually hideous to look at, and seem poorly designed, but the staff seem to fly though the menus with no problems. And now that they know this system, they might be hesitant to change. Now were they poorly designed? Or is it kind of clever to make them kinda crappy so that the staff is forced to become really intimate with them in order to “get it”?

    • Danny Valle
      Permalink to comment#

      I would have to say just poor design. I can’t think of any rational behind that, it would just be more difficult to train someone over and over again every time there is a new hire.

      I just don’t see any reason why purposefully forcing a user to dig a little deeper would be good.

    • O'Ryan
      Permalink to comment#

      But… if you are a software company creating a application that people can’t switch from is beneficial to you. (not nice, but…)

      Also, I used to be a cashier, and had a menu system that was slightly more convoluted than i thought it needed to be, while i was training on it. But I believe I made fewer mistakes because of the foreknowledge one had to have in order to use the system.

      There was also a precise procedure one had to go through in order to open the cash drawer with out a purchase. Makes it that much harder for some one not authorized to use the register open in up for some free cash.

    • Rick
      Permalink to comment#

      The QWERTY keyboard layout was designed to minimize typebar clashes…

  24. John
    Permalink to comment#

    The website is a classic example of hard to use, obtuse, confusing and frustrating. They offer useful web design utilities but you must walk through a maze to get there.

  25. Permalink to comment#

    Would you say minifying the javascript and CSS code would be outright bad? It’s certainly advantageous for bandwidth and load times, but it’s disadvantageous if you don’t have the non-minified file because you can’t edit it at all…

    So, do you suggest handing a client minified JS/CSS files, or not?

  26. dayu
    Permalink to comment#


  27. NTK
    Permalink to comment#

    Reminds me of Godaddy’s domain registration process. They try to up-sell you from a simple domain registration to email and web hosting by making the ‘no thanks’ button very inconspicuous.

    Over time I have learned how to find the button and avoid the link and now register all my domains with them. Still their registration process is more difficult than it could be.

    But with a web app/website what is the point of frustrating the user?

  28. IMHO, planting little “easter eggs” of non-essential information is a good thing. I wouldn’t advocate hiding the login button or important product details, but making a little something extra available for users who are engaged enough to go digging around can have very beneficial results — first, it rewards the user for their effort with something cool, and it’s human nature to want to share that kind of information, so this can help promote your brand.

    Incredibly popular social gaming sites know this very, very well — they earn massive amounts of money by being deliberately vague about many details. But they know when to do this and when not to — believe me, their payment methods are extremely easy to use, nothing hidden there.

    If you have any kind of community around your product or service, hiding a few pleasant surprises will only strengthen the community by creating “experts” who will then share their discoveries.

  29. Richard
    Permalink to comment#

    I used to really enjoy visiting your site everyday.
    Lot’s of great articles and tutorials.
    Since you started working for Woofoo your site is lame…. :(

This comment thread is closed. If you have important information to share, you can always contact me.

*May or may not contain any actual "CSS" or "Tricks".