Sometimes when developing a web application a feature will come along that needs to be *’smart’*. Smart features are features that in some way automate or abstract away operational details to make the user experience smoother and more intuitive. Developing smart features, however, can be quite difficult and requires a great degree of thought.
In the end what you are trying to accomplish by building smart features into your product is to do something that the user would want to do anyway without them having to do it manually. That’s the catch: you have to know what your users will want to do *all of the time*.
h3. Designing the Interaction
When planning out a smart feature, you need to ask yourself three questions:
# What will 80% of users do in this situation?
# What is the best solution for that 80%?
# Will this solution harm the experience of the other 20%?
Very few user experience tweaks will be perfect for every user in every circumstance. You can’t please everyone all of the time, and that reality can sometimes be harsh. But as long as you have a good *escape plan* you’ll do all right.
An escape plan is the usage recovery for the 20% who don’t need or want the “smartness” you are building into the application. To prevent angry mobs (small angry mobs, but angry mobs are generally a bad idea) you need to make sure that the smart feature can be circumvented in a way that feels intuitive to those who will want not to use it.
See what’s happening here? What we’re really doing is building a *second* smart feature for people who don’t want the *first* one so that they can easily *avoid* the smartness of the first feature. Complicated!