Should You Ask The User Or Their Browser? - article summary

http://uxdesign.smashingmagazine.com/2013/02/04/remove-interface-elements/

We can take away the burden of making the user tell us things that we can use technical solutions to determine much in the same way that we can detect mobile devices to redirect the user to a mobile website.

Language, Country or Region, Timezone

Lanuage: The most common way of detecting the user’s language is with the Accept-Language HTTP header. There is also a JavaScript property, window.navigator.language, which serves a similar purpose, but may be less reliable — particularly cross-browser. These methods rely on the user set value in their OS.

Country or Region: HTML5 geolocation is a generally reliable way to get the user’s current location — provided they are using a modern browser and opt in to providing it to you.

Timeazone:
JavaScript provides us with Date.getTimezoneOffset(), which returns the difference between UTC and the user’s local time in minutes.


Should We Ask The User?
When deciding whether user-facing interface element is needed for a particular setting, we can ask three questions:
  • Can we make a confident determination using a technical solution?
  • Can we decide on an intelligent default?
  • What are the consequences of guessing wrong?


Case Study: UPS

Before you do anything on UPS’ website, you’re forced to pick your country and language from a big ugly drop-down list. This means that before finding a UPS Store location, tracking a package or scheduling a pickup, you’re faced with a question — without any explanation whatsoever of why UPS needs an answer.


HOW TO FIX IT

For the country, we can use IP-based geolocation. This technique is imprecise but generally accurate, which is fine for our purposes: we’re looking for a country, here, not a street address.

The language would often be determined by the country, particularly in the case of UPS (which offers only a single language for most countries). In case the user’s locale has multiple common languages, we could use the HTTP Accept-Language header to default the user to their preferred language. Voila!

Wrapping Up
Adding more checkboxes, drop-down menus and radio buttons to a website is the easiest thing in the world. The technical implementation is straightforward, and the UX trade-offs are well defined. Putting in the extra work to remove interface elements is sometimes thankless. But creating experiences in which users are only asked relevant information at relevant times makes for happy users, and happy users lead to happy designers.