Tag: kranthi

Do Mobile And Desktop Interfaces Belong Together?


  

The term “responsive design� has gathered a lot of well-deserved buzz among Web designers. As you probably know, it refers to an easy way to dynamically customize interfaces for different devices and to serve them all from the same website, with no need for a separate mobile domain.

It solves one major problem, and very elegantly: how to adapt visual interfaces for mobile, tablet and desktop browsers. But when unifying a website, you have to solve problems other than how it will appear in different browsers, which could make the task much more difficult than you first realize. A solid design has to account for differences in interaction when using mouse pointers and when using touch gestures, as well as the bandwidth constraints on mobile users.

You might also have to restructure content according to how much information it makes sense to present on each screen. And the new breed of mobile Web apps that leverage HTML5’s offline capabilities might have to be built much differently than conventional desktop websites. Hopefully, after considering these problems, you should be able to implement a responsive website that is suitable for all devices; but you’ll need a fallback plan if that’s not possible.

This article looks at how a typical responsive website is targeted to mobile handsets and tablets, contrasting it with its desktop-facing sister website. It considers how such a website might also be deployed as a cached HTML5 Web app, and why you might want to do that instead. For various reasons, discussed here, you might decide to target your responsive design more narrowly as a hybrid for smartphones and tablets, keeping it separate from the desktop interface. For those of you who opt for this route, the remainder of the article will explore ways to better integrate the different websites, or Web apps, and how to make it easier for users to learn about the appropriate interface, get to it and stay there.

A Responsive Design For Mobile And Tablet

The BBC recently started rolling out a new version of its mobile news website, which serves as a perfect example of how to adapt an interface very effectively just by detecting the screen’s width. Below is the same page viewed with different layouts targeted for the iPhone and iPad. You can see the interface transform dynamically by viewing it in a desktop browser and resizing the window:

BBC mobile UI
BBC tablet UI

The single-column mobile interface transforms into a multi-column interface more suitable for tablets, with a richer set of navigation options appearing at the top of the screen. While the multi-column interface is a bit more complex, it’s still cleaner and less cluttered than most desktop-facing websites. BBC News, along with similar websites such as the Boston Globe and Smashing Magazine, exemplifies the trend towards “mobile-first� design; i.e. starting with a clean mobile design and progressing upwards as needed, rather than trying to jam a full desktop-style interface into a single column. Most responsive websites rely on CSS media queries that reference screen widths, but they can also respond to specific browser features and exhibit fallback behavior that “progressively enhances� an interface.

These techniques are so easy to apply that you might wonder why not all websites are built like this. It could simply be due to inertia, in which case developers need to do a better job of spreading the word. But the next section explores what may be deeper reasons.

Why Desktop Is Different

The adaptive interfaces referred to above are a healthy development, one that could lead to uncluttered desktop interfaces in the future. Still, there may be times when mobile or tablet interfaces should feature a different set of content than for desktop browsers. For one thing, media queries use up precious bandwidth. The BBC’s desktop design features a much richer set of content around the margins, such as ads and sidebars, which you’d typically exclude from the mobile interface.

BBC desktop UI

Unless you perform feats of conditional loading for various regions on the page, any content that you hide using CSS’s display: none declaration is still served to the browser, perhaps at considerable cost over a mobile network.

A desktop page also features a much richer set of navigation options, especially up in the banner. On many desktop websites, users have drop-down menus to access nested categories in a single move. But in mobile interfaces, each set of navigation options is usually presented one at a time; for example, with iPhone-style sliding drill-down menu panels. You might also have to fix navigation elements to the screen, so that users don’t have to scroll to the top of the page to access them. Imagining how you would consolidate such requirements within a single hybrid website might be fun, but it can certainly get complex. Desktop websites can also rely more heavily on navigation driven by search, which is more difficult to manage with virtual keyboards.

Below is the sort of adapted mobile interface you might encounter in the wild. Those tiny navigation tabs might be fine for a desktop interface, but they are uncomfortably small for a touch interface and should serve merely as visual cues. Increasing their size would only crowd out other screen elements and limit the total number of tabs you could use. In this situation, swiping left and right to navigate the panels would be natural for mobile users. You could certainly add support for touch gestures to a mouse-driven website, but that’s another input mode to account for and to integrate in the interface.

Most of all, mobile users are usually in a different frame of mind than desktop users. We can’t really make any precise assumptions about the context of the device usage, but compared to desktop usage they quite often will be standing up and walking around or driving, and sometimes just scanning their handset or tablet. This might call for less detailed content than what you would use for more focused desktop users. Instead of presenting all of the day’s news items, for example, tracking unread items or the most popular trending items might be more important. Users might also want different content depending on their location. Even viewing a browser in full sunlight calls for a higher-contrast design, with fewer details that would make you stop and squint. Other times, such as when waiting for a connecting flight, mobile users will have more time on their hands and attention to spare. Overall, mobile contexts are far more varied than desktop and laptop contexts.

Even though mobile handsets and tablets are much more varied in size, their similar usage patterns and reliance on touch gestures could make deploying a responsive interface for those devices easier than deploying one that also targets desktop browsers.

Mobile Web Apps Vs. Mobile Websites

Using media queries to adapt an interface is a powerful technique, but we must recognize how superficial it is. It does little to address the particular needs of cached mobile Web apps, which could be built much differently than conventional websites. Consider how the BBC’s website is deployed. Users navigate links to load separate pages, and the overall set of available URLs shifts as the news changes.

A Web app might rely on the HTML5 application cache. A small set of HTML and other files would load once and install in a browser cache, and then populate data dynamically using AJAX. Assuming that you also cache the data, users would be able to open the application and retrieve the news in the absence of a network connection (a common “reading on the subway� scenario), with data updating once the browser detects that it is online again. It’s a much looser system that adapts to the more wide-ranging needs of mobile users.

A cache is implemented as a manifest file that’s specified at the top of the HTML file and evaluated before the rest of the HTML loads:

<!DOCTYPE html>
<html manifest="appcache.php">
<!-- the rest loads conditionally -->

The manifest lists all of the component files that need to be cached. The example above uses PHP to specify the correct MIME type within the markup, rather than as a server configuration option:

<?php header('Content-type: text/cache-manifest'); ?>
CACHE MANIFEST
# version 1.0; change version# or other content to update app
CACHE:
index.html
css/styles.css
js/app.js
img/home.png
img/about.png
img/back.png

The first time you land on the page, all of these files will be cached. After that, they are reloaded from the browser’s cache without ever touching your server. Only by changing the content of the manifest will the files be refreshed from your server. The JavaScript might communicate separately via AJAX, but typically with some sort of fallback for offline use.

This way of structuring a website as a fixed-footprint package of files doesn’t adapt well to more conventional server-driven websites. There would be no point in caching an application whose set of component pages changes frequently, as the BBC’s does with each batch of news.

Web apps are becoming popular because they offer developers a cross-device alternative to native application platforms. Most features of native apps can be implemented as browser-based apps, executing on the client as if the app had been formally “installed� from an app store. Web apps can be accessed on most platforms using icons on the home screen, and they might be set to hide browser controls in order to take total control of the interface. Once a Web app is saved to the home screen, there may be nothing to indicate that it is being implemented as a Web page.

The following lines, placed in the page’s head region, target different devices with different-sized home screen icons, with the precomposed fallback that is supported by some Android browsers:

<link rel="apple-touch-icon" href="img/app_iphone.png" sizes="114x114" />
<link rel="apple-touch-icon" href="img/app_ipad.png" sizes="72x72" />
<link rel="apple-touch-icon" href="img/app_nokiaN9.png" sizes="80x80" />
<link rel="apple-touch-icon-precomposed" href="img/apple-touch-icon-precomposed.png">

The following line enables full-screen Web apps on iPhones. Thus, when the user selects the app from the home screen icon, nothing on the screen would tell them that the app is running in a browser:

<meta name="apple-mobile-web-app-capable" content="yes" />

These three features — the application cache, home screen icons and full-screen mode — are what most strongly distinguish mobile Web apps from ordinary Web pages. To get into more details about the Application Cache, make sure to read Jake Archibald’s article Application Cache is a Douchebag on A List Apart.

Traffic Control

For all of the reasons discussed above, websites that were created specifically for certain device classes might be easier to control and optimize. Either forking or consolidating a website has its pros and cons. Having a single access point means that the same URL will serve the content to all devices without the risk of losing context, but with the extra cost of designing and maintaining a structure that fits all needs. Developing separate websites tailored to different device classes means you can focus on highly optimized content, but at the cost of maintaining more than one design. With the latter approach, you might also have to consider ways to maintain context when the user jumps from one interface to the other.

On many websites, if you land on a page with the “wrong” browser, nothing happens. Many websites seem to assume that users are aware of the availability of a separate mobile website and don’t account for the likelihood that they’ve landed on a random desktop-facing page via a Facebook or Twitter link. At the very least, each website should link to its various interfaces, as done at the bottom of many BBC pages:

Alternatively, consider placing such controls prominently at the top of the page, otherwise the availability of an alternative interface might not be obvious. Pages designed for the desktop usually don’t specify a viewport, so they would load with tiny content on mobile devices. The user would have to zoom in to view the page, then scroll to somewhere around the bottom of the page to find the link, if they even thought to look there. Assuming that visitors to your website have just arrived from the planet Neptune is not a bad idea.

The BBC uses another approach, simply redirecting many smartphone browsers from the desktop website to the mobile website. If you decide to navigate back to the desktop website using the link at the bottom of the page, the URL will be appended with a ?mobile, which prevents another redirect from firing. That works during each browsing session but is not saved as a preference.

You could instead prompt users to go to the other website, but be sure not to do so every time they visit, or else it will get annoying. The simple example below is relevant if you host different websites on the same domain. It sends a prompt and uses jQuery to cache the answer as a domain-wide cookie. The matchMedia API offers the ability to test the same set of CSS media queries that you use to assign the layout, but instead calling them from within JavaScript:

function checkRedirect() {
    // media query
    var query = 'only screen and (max-device-width: 800px)';
    // from a page on www.foo.com
    var mobileUrl = 'http://m.foo.com/';
    // does the user already prefer desktop UI?
    if ($.cookie('preferMobile') == 'n') return(false);
    // is app running on a mobile/tablet browser?
    if (!!window.matchMedia && window.matchMedia(query).matches) {
        // has user already stated preference for mobile UI?
        if ($.cookie('preferMobile') == 'y') window.location.href = mobileUrl;
        // get user's preference
        if (confirm('Would you like to try the web app instead?')) {
            $.cookie('preferMobile', 'y', { path: 'foo.com' });
            window.location.href = mobileUrl;
        } else {
            $.cookie('preferMobile', 'n', { path: 'foo.com' });
        }
    }
}

The destination page would have to feature a control to reset the preference. Otherwise, users who change their mind would have no easy way to view the desktop interface without once again being redirected to the mobile interface. If you used the browser’s localStorage feature to cache the preference indefinitely, then its scope would be limited to each host name, rather than available across the entire foo.com domain. So, cookies are still good for something.

Once you’ve refined the basic redirect mechanism, devote some thought to how to retain more detailed context. Otherwise, users might become disoriented when they navigate back to the information they originally expected. If the URL structure for each website is the same, then a contextual redirect is as simple as modifying the host name:

www.foo.com/news/local/041912/police-log/
m.foo.com/news/local/041912/police-log/

If the mobile interface is implemented as a cached Web app, then the information would be passed more like this:

www.foo.com/news/local/041912/police-log/
m.foo.com?category=news&subcategory=local&date=041912&item=police-log

The Web app would then dynamically respond to the query portion of the URL.

Promoting Your Web App

Many websites present splash screens that alert users to a native iPhone or Android app, but there’s no simple way on a Web page to check whether such an app is already installed. There’s also no way to open the app so that the user can view the content they are looking for.

Because they’re basically Web pages, Web apps are easier to integrate with your other Web pages. Matteo Spinelli has a useful “Add to Home Screen� script that tells users how to install the mobile page as a Web app. So far, there is no single Web application-store portal to help users find Web apps to install, so the script might be the best way to raise awareness for now. The script points to the button on each handset that the user needs to press in order to save the Web app. These screenshots show how it looks at the bottom of the iPhone and at the top of the Nokia N9:


(Source: Let Me Spell It Out for You)

This useful feature can be set to prompt users to install the page only after they have landed on the website more than once.

There’s not yet any reliable way to track how many users follow through and save the page as a Web app. But you could enhance your website with an interesting workaround for the iPhone. If a page is enabled for full-screen viewing and the user saves it as a Web app and then loads it from the home screen, the browser controls will disappear from the interface. At this point, the standalone property will indicate that the user is accessing the full-screen app from the home screen, which you can interpret as a preference:

if (window.navigator.standalone) $.cookie('preferMobile', 'y', { path: 'foo.com' });

However, the standalone property is contextual. It returns true when the user loads the page directly from the home screen, in which case the page will have no browser controls. But if the user navigates to the page conventionally within the browser application (such as via a redirect from a desktop-facing page), then the browser controls will still appear and standalone will return false. So, it’s a good way to track interest, although not to track the lack of interest among users who later decide to remove the Web app.

The W3C is formulating a more comprehensive full-screen specification that might fix such problems in browsers. Until then, apply a flexible screen layout to account for visitors who land on the page with or without browser controls.

Conclusion

This article asks whether your desktop and mobile interfaces really belong together and whether they should work as a single client-adapted website. This question has no single answer, but asking it is important. We’ve explored some of the reasons why the answer might be no, particularly if your needs are complex.

But your goal, as a developer with a vision of a unified design and an appreciation of technical elegance, should be to be able to answer yes, having dealt with those issues. Just don’t focus too much on visual design to the neglect of variations in interaction design, information design and underlying deployment. Be prepared if the answer is no. If you find you have to split off your desktop website, find ways to make the overall experience as graceful as possible for users, regardless of whether they land on one of your pages via an external link or via a home screen icon. That’s the whole point of responsive design.

(al)


© Mike Sierra for Smashing Magazine, 2012.


Twelve Commandments Of Software Localization


  

You’ve presented the new website and everyone loves it. The design is crisp, the code is bug-free, and you’re ready to release. Then someone asks, “Does it work in Japanese?â€�

You break out in a cold sweat: you have no idea. The website works in English, and you figured other languages would come later. Now you have to rework the whole app to support other languages. Your release date slips, and you spend the next two months fixing bugs, only to find that you’ve missed half of them.

Localization makes your application ready to work in any language — and it’s much easier if you do it from the beginning. Just follow these 12 simple rules and you’ll be ready to run anywhere in the world.

1. “Resource� All Of Your Strings

The first step of localization is to get user-visible strings out of your code and into resource files. Those strings include titles, product names, error messages, strings in images and any other text the user might see.

Most resource files work by giving each string a name and allowing you to specify different translation values for that string. Many languages use properties files like this:

name = Username

Or they use .pot files like this:

msgid "Username"
msgstr "Nom d'utilisateur"

Or they use XLIFF files like this:

<trans-unit id="1">
 <source xml:lang="en">Username</source>
 <target xml:lang="fr">Nom d'utilisateur</target>
</trans-unit>

The resource files are then loaded by a library that uses a combination of the language and country, known as the locale, to identify the right string.

Once you’ve placed your strings in external resource files, you can send the files to translators and get back translated files for each locale that your application supports.

2. Never Concatenate Strings

Appending one string to another almost always results in a localization bug. It’s easy to see this with modifiers such as color.

Suppose your stationery store has items such as pencils, pens and sheets of paper. Shoppers will choose what they want and then select a color. In the shopping cart you would show them items such as a red pencil or a blue pen with a function like this:

function getDescription() {
    var color = getColor();
    var item = getItem();

    return color + " " + item;
}

This code works well in English, in which the color comes first, but it breaks in French, in which “red pencilâ€� translates as “crayon rougeâ€� and “blue penâ€� is “stylo – encre bleue.â€� French speakers (but not only them) put modifiers after the words they modify. The getDescription function would never be able to support languages like this with simple string concatenation.

The solution is to specify parametrized strings that change the order of the item and color for each language. Define a resourced string that looks like this:

itemDescription = {0} {1}

It might not look like much, but this string makes the translation possible. We can use it in a new getDescription function, like this:

function getDescription() {
    var color = getColor();
    var item = getItem();

    return getLocalizedString('itemDescription', color, item);
}

Now, your translators can easily switch the order, like this:

itemDescription = {1} {0}

The getLocalizedString function here takes the name of a resource string (itemDescription) and some additional parameters (color and item) to substitute for placeholders in the resource string. Most programming languages provide a function similar to getLocalizedString. (The one notable exception is JavaScript, but we’ll talk more about that later.)

This method also works for strings with text in them, like:

invalidUser = The username {0} is already taken. Please choose another one.

3. Put All Of Your Punctuation In The Resourced String

Tacking on punctuation later is often tempting, so that you can reuse the same string, say, in a label where it needs a colon and in a tooltip where it doesn’t. But this is another example of bad string concatenation.

Here, we’re adding a simple log-in form using PHP in a WordPress environment:

<form>
<p>Username: <input type="text" name="username"></p>
<p>Password: <input type="text" name="password"></p>
</form>

We want the form to work in other languages, so let’s add the strings for localization. WordPress makes this easy with the __ function (i.e. underscore underscore):

<form>
<p><?php echo(__('Username', 'my-plugin') ?>: <input type="text" name="username"></p>
<p><?php echo(__('Password', 'my-plugin') ?>: <input type="text" name="password"></p>
</form>

Spot the bug? This is another case of string concatenation. The colon after the labels isn’t localized. This will look wrong in languages such as French and Russian, which always put spaces around colons. Punctuation is part of the string and belongs in the resource file.

<form>
<p><?php echo(__('Username:', 'my-plugin') ?> <input type="text" name="username"></p>
<p><?php echo(__('Password:', 'my-plugin') ?> <input type="text" name="password"></p>
</form>

Now the form can use Username: in English and Nom d'utilisateur : in French.

4. “Firstâ€� Names Sometimes Aren’t

My name is Zack Grossbart. Zack is my given (or first) name, and Grossbart is my last (or family) name. Everyone in my family is named Grossbart, but I’m the only Zack.

In English-speaking countries, the first name is the given name and the last name is the family name. Most Asian countries go the other way, and some cultures have only one name.

The cellist Yo-Yo Ma is a member of the Ma family. In Chinese, he writes his family name first: Ma Yo-Yo (馬��).

This gets tricky because many people change their names when moving from Asian countries to English-speaking ones. They often switch the order to fit local customs, so you can’t make any assumptions.

You must provide a way to customize the presentation of names; you can’t assume that the first name always comes first or that the last name always comes last.

WordPress handles this pretty well by asking you how you want your name to show up:

Name formatting in WordPress

It would be even better if WordPress supported a middle name and a way to specify the format per locale so that you could make your name one way in English and another in Chinese, but nothing’s perfect.

5. Never Hard-Code Date, Time Or Currency Formats

The whole world is inconsistent about date and time formats. Some people put the month first (6/21/2012), others the day first (21/6/2012). Some use 24-hour (14:00) time, and some use 12 (2:00 PM). Taiwan uses specially translated strings instead of AM and PM, and those come first (上� 2:00).

Your best bet is to store all dates and times in a standard format such as ISO time or epoch time, and to use a library like Date.js or Moment.js to format them for the given locale. These libraries can also handle converting the time to the current zone, so you can store all dates and times in a common format on the server (such as UTC) and convert them to the right time zone in the browser.

Dates and times are also tricky when displaying calendars and date pickers. Estonia starts the week on Saturday, the US starts on Sunday, the UK on Monday and the Maldives on Friday. The jQuery UI date picker includes over 50 localized files to support different calendar formats around the world.

The same is true of currencies and other number formats. Some countries use commas to separate numbers, and others use periods. Always use a library with localized files for each of the locales that you need to support.

StackOverflow covers this topic well when discussing daylight savings time and time zone best practices.

6. Use UTF-8 Almost All Of The Time

The history of computer character encodings is a long one, but the most important thing to remember is that UTF-8 is the right choice 99% of the time. The only time not to use UTF-8 is when you’re working primarily with Asian languages and absolutely need the efficiency of UTF-16.

This comes up a lot with Web applications. If the browser and the server don’t use the same character encoding, then the characters will get corrupted and your application will fill up with little squares and question marks.

Many programming languages store files using the system’s default encoding, but it won’t matter that your server is English when all of your users are browsing in Chinese. UTF-8 fixes that by standardizing the encodings across the browser and the server.

Invoke UTF-8 at the top of all of your HTML pages:

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

And specify UTF-8 in the HTTP Content-Type header, like this:

Content-Type: text/html; charset=utf-8

The JSON specification requires that all JSON documents use Unicode with a default of UTF-8, so make sure to use UTF-8 whenever you’re reading or writing data.

7. Give Strings Room To Grow And Shrink

Strings change size in translation.

Repeat password example

“Repeat passwordâ€� is over 50% wider in German than in English; if there isn’t enough space, then your strings will overlap other controls. WordPress solves this problem by leaving extra space after each label for the string to grow.

Label spacing in the WordPress admin

This works well for languages whose strings are roughly of the same length, but for languages with long words, such as German and Finnish, the controls will overlap if you don’t leave enough space. You could add more space, but that would put the labels and controls pretty far apart from each other in compact languages such as Chinese, thus making them hard to use.

Label spacing in the WordPress admin in Chinese

Many designers of forms give their labels room to grow and shrink by aligning them to the right or by placing them above the controls.

Label above controls in the WordPress admin

Putting labels above the controls works well for a short form, but it makes a form with a lot of fields very tall.

There’s no perfect answer for how to make your application work in all languages; many form designers mix and match these approaches. Short labels like “User nameâ€� and “Roleâ€� won’t change much in translation and need just a little extra space. Longer paragraphs will change substantially and need room to grow wider, taller or sometimes both.

Label next to and above controls in the WordPress admin

Here, WordPress gives a little extra space for the “Biographical Info� label, but it puts the longer description below the field so that it can grow in translation.

8. Always Use A Full Locale

The full locale includes the language and country code, and it supports alternate spellings, date formats and other differences between two countries with a shared language.

Always use a full locale instead of just a language when translating, so that you know whether you’re doing someone a favor or a favour, and that they know whether to take the elevator or the lift, and that they know whether £100.00 is expensive.

9. Never Trust The Browser To Know The Right Locale

Localization is much more difficult with browsers and JavaScript because they give a different locale depending on who’s asking.

JavaScript has a property to tell you the current language, named navigator.userLanguage. All browsers support it, but it’s generally useless.

If I install Firefox in English, then my navigator.userLanguage value would say English. I can then go into my preferences and change my preferred languages. Firefox lets me select multiple languages, so I could specify my order of preference as English from the US, then any other English, then Japanese.

Language preferences in Firefox

Specifying a set of locales makes it possible for servers to find the best match between the languages that I know they support. Firefox takes these locales and sends them to the server in an HTTP header, like this:

Accept   en-us,en;q=0.7,ja;q=0.3

Firefox even uses the quality factor (that q= part) to indicate how much I prefer one locale over another.

This means that the server might return content in English or Japanese or another language if it doesn’t support either. However, even after I’ve set my preferred language in Firefox, the value of my navigator.userLanguage property will still be English and only English. The other browsers don’t do much better. This means that I might end up with the server thinking I want Japanese and with the JavaScript thinking I want English.

JavaScript has never solved this problem, and it has not one standard localization library, but dozens of different standards. The best solution is to embed a JavaScript property or some other field in your page that indicates the locale when the server processes each request. Then you can use that locale when formatting any strings, dates or numbers from JavaScript.

10. Plan For Languages That Read Left To Right And Right To Left

Most languages are written on screen from left to right, but Arabic, Hebrew and plenty of others go from right to left. HTML provides a property for the html element named dir that indicates whether the page is ltr (left to right) or rtl (right to left).

<html dir="rtl">

There’s also a direction property in CSS:

input {
    direction: rtl;
}

Setting the direction property will make the page work for the standard HTML tags, but it can’t switch a CSS element with float: left to float: right or change an absolutely positioned layout. To make more complex layouts work, you will need a new style sheet.

An easy way to determine the direction of the current language is to include a direction string in the resourced strings.

direction = rtl

Then you can use that string to load a different style sheet based on the current locale.

11. Never Sort In The Browser

JavaScript provides a sort function that arranges lists of strings alphabetically. It works by comparing each character in each string to determine whether a is greater than b or y is less than z. That’s why it makes 40 come before 5.

The browser knows that y comes before z by using a large mapping table for each character. However, the browser includes the mapping tables only in the current locale. This means that if you have a list of Japanese names, the browser wouldn’t be able to sort them properly in an English locale; it would just sort them by Unicode value, which isn’t correct.

This problem is easy to see in languages such as Polish and Vietnamese, which frequently use diacritical marks. The browser can tell that a comes before b, but it doesn’t know whether ằ comes before ã.

The only place to sort strings properly is on the server. Make sure that the server has all of the code mappings for the languages you support, and that you send lists to the browser presorted, and that you call the server whenever you want to change the sorting. Also, make sure that the server takes locale into account for sorting, including right-to-left locales.

12. Test Early And Often

Most teams don’t worry about localization until it’s too late. A big customer in Asia will complain that the website doesn’t work, and everyone will scramble to fix 100 little localization bugs that they had never thought of. Following the rules in this article will avoid many of those problems, but you will still need to test; and translations usually aren’t ready until the end of the project.

I used to translate my projects into Pig Latin, but that didn’t test Asian characters, and most browsers don’t support it. Now I create test translations with Xhosa (xh_ZA). All browsers support Xhosa, and Nelson Mandela speaks it natively, but I’ve never been asked to support it in a product.

I don’t speak Xhosa, so I create a new translation file and add xh to the beginning and end of every string. The xh makes it easy to see whether I’ve missed a string in the code. Throw in a few Japanese Kanji characters to test character encoding, and I have a messy string that tests for all of my translation issues.

Making the test translation file is easy. Just save a new properties file with xh_ZA in the file name and turn…

name = Username

… into:

name = xh�清�Username�清�xh

The resulting jumble will test that I’ve resourced every string, that I’m using the right locale, that my forms work with longer strings and that I’m using the right character set. Then I’ll just quickly scan the application for anything without the xh and fix the bugs before they become urgent issues.

Do the right thing for localization ahead of time, and you’ll save yourself a lot of trouble in the long run.

(al) (km)


© Zack Grossbart for Smashing Magazine, 2012.


The Personality Layer


  

“Oh hai Smashing Magazine!� That’s one of the dozen ways that Flickr welcomes its users upon signing in every time. It’s an easily overlooked detail, one that the service would work without flawlessly. Yet this detail is a big part of Flickr’s particular design character that would be missed if it wasn’t there.

Flickr says hi to its users.
This is how Flickr greets its users, changing the language upon every sign-in.

These easily overlooked details are the ones that I’m particularly interested in because of the reaction they are capable of causing in users. These details trigger an emotional response, and if used purposefully and fittingly, they will help to form a personality that people will respond to positively when interacting with the product. This positive attitude will often lead to people sharing and even advocating for your product with their peers. This technique of connecting with users on a personal level is also referred to as “emotional design.�

A Little Theory

The term “emotional design� was defined by (among others) Aarron Walter. In his book Designing for Emotion, he describes emotional design by building on Maslow’s famous hierarchy of human needs, which posits that humans need to achieve elementary states of being, such as health and safety, before they can start thinking about higher-level needs, such as self-actualization. People who are seriously ill or lack safety would find it difficult to think about self-actualization as expressed, for example, in morality, creativity and problem-solving.

The Maslow Equation
Maslow’s hierarchy of human needs (left) and the hierarchy of emotional design (right). (Image: Aarron Walter)

According to this theory, a product has to be functional, reliable and usable (in that order) before a layer of pleasure can be applied. Emotional design, then, is the pleasurable layer that you put on top of a functional, reliable and usable product.

An effective emotional design strategy has two aspects:

  1. You create something unique that transcends your own style and that evokes a positive response in users;
  2. You consistently use that style until it becomes a body of work, a personality layer.

In this article, we will look at some strategies you can follow, as well as some examples found in the wild, plus a few projects in which the consistent use of emotional design results in a great personality.

To learn more about the theory of emotion in design, you might be interested in the article “Not Just Pretty: Building Emotion Into Your Websites.�

The Elements Of Emotional Design

The goal is to connect with users and evoke positive emotions. Positive emotions instill positive memories and make users want to interact with your product in the future.

There’s an additional benefit, though. In pleasant, positive situations, people are much more likely to tolerate minor difficulties and irrelevance. While poor design is never excusable, when people are relaxed, the pleasant and pleasurable aspects of a design will make them more forgiving of problems within the interface.

Below is a non-exhaustive list (based on personal observation) of ways to induce these positive emotions. Of course, people will respond to things differently depending on their background, knowledge, etc., but these psychological factors should work in general:

  • Positivity
    See the article “What Are the Top 10 Positive Emotions.�
  • Surprise
    Do something unexpected and new.
  • Uniqueness
    Differ from other products in an interesting way.
  • Attention
    Offer incentives, or offer help even if you’re not obliged to.
  • Attraction
    We all like attractive people, so build an attractive product.
  • Anticipation
    Leak something ahead of the launch.
  • Exclusivity
    Offer something exclusive to a select group.
  • Be responsive
    Show a reaction to your audience, especially when they’re not expecting it.

Now, let’s see these principles applied to actual products.

Practical Examples Of Emotional Design

Below are some details of emotional design on the Web. We cannot always attribute a particular strategy to it, such as “surprise� or “anticipation.� Sometimes more factors are at play, and people will perceive some things differently.

Remember that just blindly copying these examples will not give your product the personality it needs. Rather, infusing emotional traits into the product thoughtfully will ensure that the personality sticks. Here’s a little test: browse Built With Bootstrap and see which ones you like best.

Mimicking Emotions

Smile

People who enjoy each other’s company tend to mimic each other’s behavior? When someone you like smiles, you generally smile back. This can work on websites, too. The emotional brain is affected by pictures, especially of people, and by stories. Let’s look at one design that tells a story and shows pictures of people.

Highrise Landing Page
The Highrise landing page, with real customers.

Highrise shows happy people, along with stories of them using the product. The smiles and testimonials from existing customers are a powerful combination (for proof, read about the A/B testing done on Highrise.) Oh, and don’t forget to cultivate your own personality.

General happiness

Smiles seem to work in highly abstract form as well.

Threadless Cart
Threadless’ shopping cart shows emotions.

Threadless’ shopping cart is sad when it’s empty, but when you feed it, it becomes happy. This detail will probably make you smile; even if you don’t end up buying anything, you’ll remember it for making you look twice.

User retention

Attention

User retention is another area that requires a lot of attention.

A while ago, if you had tried to unsubscribe from Audible and stated that your device wasn’t compatible with its service, you would be given a code worth $100 to buy a compatible device on Amazon. That’s a powerful surprise that you’ll remember, even if you end up leaving.

Music

Etsy just plays “Every Time You Go Away� by Paul Young if you attempt to unsubscribe from its email newsletter. The song might not stop you from unsubscribing, but you will probably remember it the next time you come across a product on Etsy’s plattform. Or you might think of Etsy whenever you hear Paul Young.

Etsy User Retention
Etsy plays “Every Time You Go Away� by Paul Young when you leave.

Edgy humor

Groupon probably wouldn’t be able to change the mind of someone who is determined to leave its service, but its video definitely fits the playful tone of Groupon’s copy.

Groupon User Retention
Groupon gets edgy.

Copy

Copy is the easiest way to introduce and play with personality. Your website probably has text everywhere, and words communicate a personality very well. Do you want your brand to be playful, stern, comical, hip? Copy can go a long way in defining who you are and who you appeal to.

Levity

In the Everyday app, if you haven’t put images in the library (which are needed in order to play a video), you will get this friendly reminder to take some pictures of your “beautifulâ€� face — one word that completely changes the tone of the message.

Everyday Copy
Everyday’s onboarding process

Contrast

The “Pssst!…â€� here says it really well — not only visually with all of the “sâ€�-es and the contrasting color, but also aurally when read.

Skitch Copy
Skitch’s privacy copy

We find the same nice detail on OK Cupid’s website when you specify your location. “Ahh� could mean both “How wonderful� and “Yes, we understand now. Welcome.�


“Ahh, Prague�

Microcopy

Hunch says something you are probably not used to reading. This difference alone could persuade you to go along with them. First, it communicates that the email will be of interest to the user; secondly, it recognizes that spam is evil.

Hunch Sign Up Copy
Hunch’s way of assuring prospective users of the safety of their data.

Microcopy 2

Milk’s detail here makes you much more open to subscribing to the newsletter. The approach is the same as the one above; assuring people that they will be contacted only when it really matters. (Note that Milk was recently acquired by Google and so has been shut down.)

Milk Subscribe Copy
Milk promises infrequent emails and teases with early access.

Microcopy 3

Here is another approach from an as-yet-unreleased project of mine. The branding is lighthearted, so I’ve crafted this microcopy to accompany the invitation form. Hopefully, people will be more at ease submitting their address.


This says that your email address is secure with us.

Also, note how the button doesn’t just say “Submit,� but rather “Request an Invite.� This adds a touch of exclusivity to the sign-up form. If you’re interested in this sort of thing, read about Pinterest’s sign-up process.

Error Pages and Downtime

Not many situations are more annoying for a Web user than downtime. It can make users rather upset, especially if they depend on your product. Emotional design helps you steer clear of such offenses. Below are some examples.

Simple change in copy

Flickr says it’s having a massage. It’s not brilliant, but it’s better than an annoying error message.

Flickr Downtime
Flickr is having a massage (Image: Luke Beard)

Say sorry and offer a treat

Here’s a better approach from Flickr. When it experiences more serious problems, it puts up this splash page saying that its tubes are clogged and that it is sorry. But instead of leaving it at that, it set users to a task and offers the winning contestant a valuable pro account.

Flickr Tubes Are Clogged
The competition when Flickr’s tubes are clogged.

Sorry but…

… there are more important things in life. When Tumblr went down recently, it told users that it was already hard at work on resolving the problem. In the next paragraph, it reminded users that there are bigger problems out there than a brief outage and that you could actually do something about them.

Tumblr Downtime
Tumblr supports people in need.

Annoyances

Other online annoyances include waiting for a screen to load. But some screens just need time to load. When your app is busy gathering information, consider doing something on the screen, such as displaying a tip.

Hipmunk Waiting Tips
Hipmunk bridges screens with helpful information.

Humor

CAPTCHAs are a reality in many places today, but that doesn’t mean users have to like them. Heck, they’re an incredible annoyance. Stack Overflow at least explains with a funny graphic why it has to annoy visitors.

Stackoverflow Bots
Stack Overflow explains why it has to annoy you with a CAPTCHA.

Personalization

Another emotional strategy is to respond to the user’s input. I love when something responds to me without my having to disclose personal details.

The landing page of the Thermo app detects your location and updates the graphics on the left, telling you the temperature of your location.

Robocat Responsiveness
Thermo detects your location and turns it into something valuable.

You don’t even need that much information about visitors. 37signals demonstrates a simple way to be attentive to visitors, without any knowledge of them whatsoever.


37signals wishes you a happy whatever-day-of-the-week-it-is.

Email Design

Newsletters can be a great tool, but most people want to cut down on noise and get only the most informative and well-produced ones. Newsletters can be worth subscribing to for various reasons: information, exclusive offers, humor, etc.

Telling a story

Zaarly highlights the most interesting “classifieds� in its newsletter. It’ll make you wonder what people come up with on the website and challenge you to use the service more often.

Zaarly Newsletter
Zaarly highlights its favorite happenings on the website.

Personalization

Not that this is especially innovative, but Quora has enough data to show me stuff that I would enjoy reading. If you have the data, then do your users a service. Speaking of personalization, check out how adding the recipient’s name to an email’s subject line increases conversions.


Quora extends your social graph and suggests reading tailored to you.

Surprise copy

Notification emails are usually all business. But when someone takes time to make something a bit more special, as the notification email below from CD Baby shows, people will go to great lengths to tell others about it. The string “private CD Baby jet� yields over 20,000 results on Google. That’s powerful word of mouth for just a tiny detail.

CD Baby Notification Email
The copy for CD Baby’s notification email. (Image: The Shifted Librarian)

Storytelling

We all know that stories get people to listen. Some compelling examples are out there of product stories, one of which is Ben the Bodyguard. It’s an iPhone app that protects the personal data on your phone. The app is designed around the character of Ben. Way before it launched, the developer put up a website on which Ben walked the streets as you scrolled down, telling you that he’ll protect your data soon.

Ben the Bodyguard
Ben the Bodyguard on the teaser page.

This character of Ben, the French bodyguard, is weaved into every bit of the application consistently. It’s almost as if you were entrusting your data to a personal bodyguard.

Ben the Bodyguard
Notifications from Ben

Easter Eggs

Easter eggs in general are meant to delight users. Even Google, a relatively serious character among online personalities, adds an Easter egg or two to its search engine every now and then.

Let it Snow Google
Google’s “Let it snow� Easter egg

Let it snow

A while back, Google made it snow on its home page. It also let users do a barrel roll.

Easter eggs are usually unrelated to the service. They exist merely to delight or surprise users, to give them a treat just to make them happy. And happy users share.

Mascots

MailChimp has a distinct personality that deserves all of the attention that it has attracted. A few details are worth pointing out.

The joking mascot

A distinctive part in MailChimp’s emotional design is its chimp, which goes by the name of Freddie. Freddie cheers you up when your profile page loads. And every time you reload, a random joke or link is shown.

Mailchimp Speaking
One of Freddie the Chimp’s random remarks. (Click on the image to see what he’s referring to.)

But note that emotional design like this can be done wrong. Remember the Microsoft Office paperclip helper that got in the way every time you tried to do something? Freddie the Chimp does not get involved; he stays out of your workflow.

Log-In Pages

Even log-in pages can be made interesting. MailChimp’s changes on special days, like Google’s doodle. Check out some of the designs in the dedicated Flickr pool.

Mailchimp Login
One of MailChimp’s custom log-in screens

You don’t even have to do much to be special. Pocket greets you on the log-in screen with a huge background image instead of a dull color.

Pocket Login
Pocket’s log-in screen

Attention to Detail and Surprise

Many of the things covered above demonstrate some attention to detail, which is essentially what it all comes down to. The level of attention to detail shows how much you love the product and how much you respect your customers. Check out this spinner in Quip’s recently released app.

Quip Wings
Quip’s loading spinner

There is no need for the wings to flap, but I keep reloading just to see it. Remember, though, such details should never be at the expense of usability.

Surprises and attention to detail are everywhere. One big reason for Dropbox’s early buzz was its video, which it posted to Digg as “Google Drive killer coming from MIT startup.� It was carefully crafted for that audience, with a lot of things left to be discovered (including jokes that Diggers would understand and appreciate). More about that period in Dropbox’s growth can be heard in a talk by cofounder Drew Houston.


Keira is hot. An “accidental� status message during the Dropbox demo.

To get inspired with details, check out the great Tumblog Little Big Details.

Three Diverse Examples Of Personality

Up to now, we have looked at various aspects and examples of emotional design. Below are instances of emotional design in different areas: two from websites and one from the app economy.

Example 1: Gidsy (A Marketplace for the Public)

Gidsy is a marketplace for activities run by users. As such, its developers have to worry about broad appeal.

Gidsy’s main color palette is blue and white, a combination known to be liked and trusted. It is no coincidence that Facebook, Twitter, LinkedIn and countless other brands use some shade of blue. While you’re at it, have a look at BaseKit’s infographic about the psychology of color.

Gidsy’s personality is defined by a thoughtful use of vintage images, lighthearted copy and surprise elements.

Convey a feeling: Vintage images can be found all over the website. They are often used to make a point or emphasize an emotion.

Gidsy Vintage Style
Its vintage-styled 404 page epitomizes Gidsy’s design personality.

Surprise: On reaching the footer, you’ll find a call to action, urging you to create a listing for free. Hovering over the wand will launch a rainbow, pointing you in the right direction and surprising you. Measuring how well that particular detail converts visitors into users would be interesting.

The Gidsy Rainbow
The rainbow playfully guides you to a “Learn more� button.

Copy: Simple copy with a bit of humor: “Well, hello gorgeous!� and “Booooom. Your photo was deleted.�

Gidsy Choose Avatar
The page on which users upload their avatar.

Gidsy Delete Image
The page on which users delete images.

These details go a long way to giving a product a friendly personality. But you can also rethink large chunks of text, such as handbooks and manuals. Gidsy has done this in its handbooks section. Handbooks usually are a dull experience — but not this one. It has already generated a lot of buzz and links in the design community, so you might have already seen it. Notice the subtle nod to iA’s Writer app?

The Gidsy Handbook
Gidsy’s handbook has made it around the Web.

Newsletter: We’ll finish off our look at Gidsy with its recent newsletter, which just hit my inbox as I was about to finish writing this article.


See the tiny “please-reply� email address?

Gidsy has used another vintage shot to emphasize its message. Also, notice the tiny detail of the sender’s email address, please-reply@gidsy.com, a friendly reminder that the company is listening and attends to the smallest of details. (I noticed that another Berlin-based startup started doing it first.)

Example 2: Automattic (General Web Hackery)

Automattic needs no introduction to this audience. It is a perfect example of how to integrate humor into a generally humorless environment: coding. It espouses Matt Mullenweg’s early mantra of “Code is poetry� anywhere it can. Let’s look at what it has done with its Web properties.

Automattic About Us
Automattic’s “About� page, packed with humor.

Humor: Automattic’s “About� page is a collection of good-natured bios. Mullenweg’s bio is this:

As the Chief BBQ Taste Tester of Automattic, Matt travels the world sampling cuisine and comparing it to the gold standard of Texas BBQ. Although he originally aspired to be a jazz saxophonist, Matt somehow wound up studying economics which took him to Washington D.C.[…]

Sounds like a fun place to work. Isn’t that exactly what most people reading the page would like?

Slogan: Automattic’s slogan is, “We’re much better at writing code than haiku.� This humorous line is what Automattic is all about, and it sets the tone for everything it does.

WP Haiku
What Automattic is all about

Microcopy: People notice tiny details. For example, in the footer of WordPress’ home page is a signature that changes every time the page reloads. It says, alternately, that WordPress is “An Automattic [Production],� “An Automattic [Medly],� etc. This little change to the description shows the company’s love for its product.

Automattic Medley
WordPress is “An Automattic Medley.�

Automattic Airline
Jetpack is “An Automattic Airline.�

Surprise: On Automattic’s Jetpack website, three jetpacks soar across the screen whenever the page loads, reinforcing the product’s name and exhibiting a love of detail.

The Jetpacks Moving
Small jetpacks shoot across the background.

Easter egg: One lovely detail is WordPress’ “self-comparison� Easter egg. Instead of removing the possibility of comparing a post’s version with itself, Automattic has built in a little mechanism that turns the page into a gray and white canvas, creating a Matrix-like effect.

Follow the White Rabbit
WordPress’s self-comparison solution.

So, when you hit that button, accidentally or not, the whole page turns gray and simulates self-destruction mode, Matrix-style. In the end, WordPress reminds you not to let that happen again.

TechFleece has a detailed description of how to find WordPress’ Matrix Easter egg.

Automattic is a great example of how to show personality in a hacker-heavy environment.

Example 3: Clear App (To-Do App for Design-Savvy Users)

Emotional design can turn users into evangelists who share their positive experience with others. People love sharing interesting stories; you just have to give them one.

Consider the recent success of Realmac Software’s to-do app for the iPhone, Clear. It sure isn’t the first to-do app out there, but it cleverly targets iPhone users and designers with a sleek, minimal interface and a few interaction and transition patterns that have not been done yet. It’s the kind of thing that we iOS geeks just drool over.

Anticipation: Realmac published a video before the launch that cleverly raises anticipation of the product. The video spread in some parts of the design community rather quickly.

People’s attention was captured not only by the design, but by some creative treats and surprises.

Playful: The app sets the tone for playing around and having fun.

Clear App Let Us Play
Setting the tone: “Let’s explore.�

Surprise: On opening the theme settings page, people who have installed the Tweetbot app are greeted with this message and are given an extra Clear theme. Chances are high that people who use Tweetbot love it and would find this to be a welcome surprise.

Clear App Tweetbot Theme
If you have installed the popular Tweetbot app, you’ll get a bonus theme.

Treat 2: If you follow the Twitter account of one of Clear’s developers, you’ll be awarded another theme for your social behavior. It was a cleverly engineered Easter egg hunt, resulting in an outburst of positive response by people on Twitter who shared their enthusiasm and compared which themes they had acquired and missed.

Clear App Scorched Theme
If you follow one of Clear’s creators, you are rewarded with a theme.

This is one of the best effects of emotional design. Not only will people enjoy using your product more, but they will share their excitement. And here is the proof on Twitter:

That's what Happened when Clear Launched
Some of the buzz that the bonus theme alone generated on Twitter.

Surprise detail: When your to-do list is empty, Clear offers a tip on how to fill it up.

Clear App - Splash Page

The second time, however, you are shown a motivational quote:

Clear App Quotes

Final Words On Benefits And Risks

Emotional design is risky. Adopting a lighthearted tone when apologizing for something going wrong might not sit well with everyone. Don’t be afraid, though, to show your personality, as long as it’s geared to the right people. You can’t and don’t want to be everything to everyone.

We haven’t covered instances of emotional design gone bad, but here’s a word of advice: if you do attempt to be funny or quirky, the most important thing is to listen and monitor your users’ reactions. If something doesn’t work, you need to be proactive, apologize and improve. Showing that you’re listening and ready to learn exposes your humanity — putting you right back in emotional territory again.

MailChimp handles the risk of turning people off with an off switch, which it calls “party-pooper mode.�

The Party Pooper
Switch on “party-pooper mode.�

So, if you really don’t like the chimp, you can disable him. Apparently, not many do.

Or you could do it the other way and make some quirky behavior the non-default state. Facebook has an Easter egg of its own, letting you change the UI’s language to pirate talk. It actually makes me enjoy Facebook a little more.

This is really what it’s all about: helping users to enjoy something more — so much that they’ll share with friends and strangers.

If you’d like to learn more about emotional design, here is a good list of further resources.

Share Your Thoughts

Have you shared something lately that you were excited about because it was different, lovely, surprising, attractive or appealing in some way? Have you built something like that? Let us know in the comments section below!


© Simon Schmid for Smashing Magazine, 2012.


Are You Giving Your Users Positive Feedback?


  

We love to tell users that they have done something wrong. We have error messages for everything from poorly formatted telephone numbers to incorrect logins. But what about our user’s successes, do we celebrate them? Do we tell them they are doing something right?

It is as important to tell users that they are doing things right, as it is to inform them when they make a mistake. This kind of positive reinforcement is key to a pleasurable user experience. In this post, I want to explain why positive feedback matters, suggest when it is appropriate and how to integrate it into your website.

We begin by asking why positive reinforcement matters.

Why Positive Reinforcement Matters

Have you ever considered why a majority of us may dislike virtual keyboards? One of the primary reasons is that a virtual keyboard cannot provide the same level of feedback as a physical one.

Virtual keyboard manufacturers have worked hard to provide positive reinforcement using sound and the pop-up keys (such as the ones found on the iPad). However, these do not match the positive feedback one gets from using a physical keyboard. The sounds are annoyingly artificial and virtual keyboards are unable to replicate the tactile feedback of using a physical key.

Keyboard on iPad
We tend to dislike virtual keyboards because they cannot provide the same level of feedback as a physical one.

The example of a virtual keyboard illustrates how important it is to provide positive reinforcement for users of our websites. As with virtual keyboards, the lack of positive feedback leaves the user with a less pleasurable experience.

Many users lack confidence (either in their own abilities, or in the reliability of your website). They worry about whether they had done something wrong or whether the website has understood what it was that they wanted to achieve. In many cases this is because they don’t really understand how websites and computers work. The result is that they blame themselves when something goes wrong, presuming that their ignorance has led them to make a mistake.

By providing positive reinforcement we reduce these worries and give the user confidence that everything is going smoothly. This is particularly important for users who lack confidence in their own abilities (for example, the elderly). These users are often perfectly competent. However, because they lack confidence they second guess their decisions, which significantly undermines their experience.

Positive reinforcement does not just give the user confidence that they are doing something right, it also eliminates doubt about whether something has gone wrong. This can prevent a user from undoing something that they have done correctly.

A good example of this is an e-commerce transaction. Have you ever submitted an order to an e-commerce website and been left wondering whether the transaction is being processed because the page was taking longer to load than you expected?

A simple piece of positive reinforcement (such as an update telling the user that the order is still being processed) would resolve this problem, and prevents people from hitting the back button.

Example order processing box for ecommerce site
By keeping the user up-to-date you reduce their anxiety that something has gone wrong.

All of this doubt and confusion significantly slows the user down. They find themselves re-entering data, re-submitting forms and constantly using the back button. A small amount of positive reinforcement will significantly increase the speed with which they complete tasks.

With the benefits of positive feedback clear, when should we use it? When does the user need encouragement that they aren’t making mistakes and that the website is doing what they expect?

When Positive Reinforcement Is Required

The most obvious place to provide positive reinforcement is when a user is entering data. Whether registering, logging in, making a purchase, posting a comment, updating a status, or interacting with a Web application, data entry accounts for a large proportion of our interactions online.

It also represents the greatest likelihood of error, and users know this. As a result they often lack confidence in their data entry skills, and need some reassurance. This is especially true when entering data such as email addresses, passwords and postal codes.

Graze.com signup with positive feedback
Graze speeds up the process of completing their signup form by showing a tick when you complete a field correctly.

Data entry is not the only (or even most common) form of user interaction—users interact with your website every time they click on a link. It surprises me how many websites fail to show the user that they have successfully clicked on a link, yet instead, rely on the browser to provide feedback.

Smashing Magazine active link state
Smashing Magazine leaves the user with no doubt that a link has been successfully clicked (screenshot of Monthly Desktop Wallpapers).

Relying on the browser to provide positive feedback can be problematic as the user may miss it. This is because the browser shows that it is loading a page using the address bar, while the user’s attention is on the link that they have just clicked. This can lead to the user clicking on the same link again.

Smashing Magazine homepage showing user attention
If the user is looking at a link, they may miss updates in the address bar.

The problem of feedback and attention being in two different places extends beyond links. There are many situations when a user’s interaction results in something changing elsewhere on the page. These kinds of changes are easily missed and some more obvious feedback is often required.

A common example of this would be adding an item to a shopping basket. Because the user’s focus is on the item they are adding, it can be easy for them to miss the basket updating. In such situations it is necessary to update the item itself to show it has been added.

Product listings on Wiltshire Farm Foods
When an item is being added into the basket on the Wiltshire Farm Foods’ website, the appearance of the product changes significantly.

Not that this is just an issue of distance between focus and the change on the page, it is also one of subtly. For example, a basket updating could be as subtle as a number incrementing from one item to two. This is easy to miss, even if the user’s attention is in the right place.

When a user’s interaction triggers a subtle page update, it is often necessary to provide some stronger feedback to reassure the user that their action has had the desired result.

How you provide that positive reinforcement will vary from website to website. There are a number of different approaches you may wish to consider…

Ways To Implement Positive Reinforcement

When a user makes a mistake, we normally inform them by displaying a textual error message. It is therefore unsurprising, that when we think of providing positive feedback, we also turn to textual messaging.

However, I believe we should be careful when providing positive feedback in a textual form. The problem with this approach is that text forces the user to shift their attention and read the message. This slows down the completion of their task rather than encouraging them to move forward.

That said, there are occasions when text can be effective for providing positive reinforcement. For example, if the user has just clicked an “add to basket” button, it may be appropriate to re-label the button to read “add another”. By changing the text you make it clear that one item has already been added, and encourages the user to move on to the next task. The other benefit to this approach is that the user is seeing a change where they are currently looking (the button that they have just clicked) rather than elsewhere on the screen (such as the basket, which they might miss).

Two buttons. First with the label add to basket and the second with the label add another to your basket
Changing the labelling on an add to basket button can bring clarity to a user’s interaction.

Visual Feedback

If we are going to limit the use of text as a method of positive feedback, a better alternative is to use design signals. These could include changes in imagery, styling, color, or size.

Examples may include altering the color of a link when clicked, adding a tick after a field that has been correctly completed, or highlighting an updated portion of the page.

An important example of this kind of positive design feedback would be the cursor state. Users have come to expect the cursor to change into a hand when they rollover an interactive element (such as a link or a button). When it fails to do so, the absence of this positive feedback causes confusion. Yet, despite this well known behavior, too many interactive elements on websites do not demonstrate this behavior.

Cursor state on rafbf.org
Without this cursor state, a user may be unsure whether they can click this box.

Feedback Using Animation

Another visual way to provide positive feedback is through animation. There are some great examples of how subtle animation can draw a user’s attention to an error (like the slight vibration you see if you enter the wrong log-in details for WordPress). These same principles can be applied to positive feedback, as well.

A common example of using animation to provide positive feedback would be when users click on an anchor link. By default this jumps the user down the page which can be a very disconcerting experience. However, a smooth scrolling animation combined with a highlighting of the destination can make it clear that what the user had expected has actually happened.

Animation can also be used on e-commerce websites to indicate an item has been added to a basket. Whether it is the basket expanding (to show the new item) or the product physically ‘flying’ towards the basket, these animations reassure the user that their intended action has been completed.


Animation can be a useful tool to show that an action has been completed.

I believe animation is an under-utilized way of providing positive feedback and is something we should be exploring further on our websites. However, it is not the only method that is under-utilized—there is also the use of audio.

Audio Feedback

Do you wait for that “whoosh” noise when you send an email? That is an audible signal that the email has sent successfully. What about those little pings, beeps and twerps that notify you that something has happened on your computer or mobile device? Whether we realize it or not, most of us are reliant on this kind of audio feedback that reassures us that an action has happened.

New email in Sparrow
When sending an email we are very reliant on the audible feedback to ensure us that it has been sent.

Why then do we shy away from using audio on our websites? Audio is an excellent tool for providing positive feedback and yet few websites use it.

Maybe our reluctance is because audio can be annoying. The history of the Web is littered with examples of annoying audio loops or background music that you cannot mute. However, you could equally argue that the Web is littered with bad design and animation (but still, that doesn’t stop us from using these tools).

Others may argue that audio is not appropriate in a work environment. Although I would generally agree, the audio we are talking about using here is no different to the audio notifications used by a plethora of desktop applications that are common in an office environment.

An audible click is a great way to tell a user they have clicked on a link. A “cha-ching” would be the perfect way of letting a customer know they have added something to a shopping cart. Audio is a powerful tool that we are currently under-utilizing.

Much To Learn And Discuss

Whether you use audio, design, animation, or text, we should be providing users with more positive feedback for their actions. It gives a user confidence that in turn increases the speed in which they move through your website (and their level of satisfaction). We have still have much to learn about how to provide positive feedback for users, and we would be especially interested to hear your thoughts in the comments below.

  • Is audio a good tool for feedback?
  • What examples of positive feedback have inspired you?
  • Do you perceive dangers in providing too much feedback to users?

Let us know your thoughts!

(jvb) (il)

Image used on front page is owned by opensourceway.


© Paul Boag for Smashing Magazine, 2012.


Keys To Better Communication With Clients


  

I recently spoke with a prospective client who started the conversation by saying that he had called us because he was unhappy with his website’s current design and development team. Questioning what about his current team he didn’t care for, I discovered that it wasn’t the company’s product or its prices — he was satisfied with the work they did for him and felt that he was charged fairly for it. He was unhappy with their communication.

Communication Breakdown

Poor communication is a surefire way to damage any project or relationship, but when I dug deeper into this particular case, I realized that lack of communication was not the issue; the company provided regular updates on projects and milestones and so on. Rather, it was the words they used when giving those updates and answering questions. The problem was that the provider spoke “Web speak� and nothing else.

Stop sign with confusing message
Communication will fail if your messages are confusing to your audience. (Image: Jon Wiley)

This isn’t the first time I’ve heard this complaint from someone when discussing their Web team. While they appreciate the provider’s knowledge of the profession and industry, they bemoan the reality that they cannot translate that knowledge into language that someone who is not a fellow Web professional would understand. While the updates may be plentiful, the communication is still poor.

Peer-To-Peer Communication

Those of us in the Web industry enjoy countless opportunities to exchange knowledge with our peers. From attending conferences and meetups to contributing to conversations on blogs to communicating on platforms such as Twitter and Dribbble — Web designers and developers can share information and learn from each other in a myriad of ways. The way we communicate in these circles, however, is very different from how we must communicate outside of them, even though we are often discussing the same topics.

The way we speak about issues such as browser inconsistencies and approaches such as progressive enhancement and responsive Web design must be tailored to the audience we are addressing. This is, of course, easier said than done. After speaking with our peers in technical terms that we all understand, how do we then alter our language and way of speaking to present a technical piece of information in a non-technical way? The truth is that, like everything else in our industry and in life, it takes practice.

Practice, Practice, Practice

Over the years, I have been told by a number of clients that they enjoy meeting with me and discussing their website because I “make it easy to understand.� I have been commended on presenting these technical concepts in a very accessible way and on the fact that it seems to come naturally to me. While I appreciate that my clients feel this way about my presentational skills, the truth is that I have worked hard to be able to talk in this way.

In this article, I will go over a few of the ways that have helped me adjust how I speak about what I do in order to better communicate with my clients. I will also address some warning signs of communication breakdown, as well as ways to get those conversations back on track if they do falter.

Business Second

I have long praised the benefits of having casual non-business conversations with clients. This practice also has a place here as you strive for more effective communication with clients. Too often, communication is strained from the start because a client fears you will speak to them in terms they do not understand. No one wants to appear confused or uninformed, especially in a business setting, and that type of anxiety can make a bad situation even worse. By starting a meeting off with light informal conversation, you help to minimize any anxiety the client may have and set the tone for the rest of the meeting. Additionally, you might learn something about the client or they about you, helping you to continue building a genuine, long-term relationship that goes beyond just the business you do together.

By starting out the conversation with something other than business talk, you enable the client to see you as someone other than just “their Web designer,� and you have a chance to break the ice and strengthen the relationship before the discussion turns to business.

Learn Their Language

While casual conversation is a good way to start a meeting, you will have to get to business sooner or later. To complement the technical explanations that you normally give, you could also learn your client’s language and speak to them in terms they understand and are comfortable with.

“Speaking their language� doesn’t mean adding horrible business jargon to your vocabulary. It just means understanding what is important to the client and speaking to those topics. By correlating technical information to their business goals, you will find that the message is much better received.

Text from a publication
Understanding what is import to your clients and tailoring your communication to those needs will help get your message heard. (Image: darkmatter)

For example, you may be well versed in topics such as HTML5, CSS3, responsive design and so on, but you should go beyond the technical application of these topics. You must also know how they can be used to help meet the business goals of your clients. This is the language that clients speak. If you explain how CSS3 media queries enable a website layout to reflow according to screen resolution, creating a UX that is optimized for the user’s current environment, then you will usually be met with a blank stare. Instead, say that you will build the website to work well on a variety of devices, from large desktop monitors to handheld mobile phones, thus enabling the visitor to complete their task as easily as possible, whether that task is to read content, sign up for an account or make a purchase. Such tasks are the purpose of the website and are directly in line with your client’s business goals. By making it easy for people to complete those tasks with whatever device they are using at that time, you give the website the best chance to convert those visitors into actual customers.

In the end, you are still talking about responsive design and CSS3 media queries, but you are focusing on the business results instead of the technical execution required to achieve the results — and your client can certainly understand and get excited about business results.

Write Non-Technical Articles

As you begin to use new technologies and experiment with new techniques, one way to reinforce your learning is to write about it. Authoring an article helps you to fully think through the process. It can also generate conversation that furthers your knowledge of the subject. However, if the only articles you author are technical ones meant for other designers and developers, then you may be compounding the challenge of being able to communicate with a non-technical audience.

If you enjoy writing articles about Web design, try producing some that are geared to your clients or other business owners. By writing about the aspects of Web design in a non-technical, client-focused way, you can continue to explore the best way to present those topics. Over time, you will find that your explanations in the articles become part of your normal vocabulary with clients, giving you talking points that find their way into your meetings and conversations.

Teach What You Know

In addition to writing articles, also take your knowledge and experience to the classroom or stage and verbally teach what you know to others. The website design and development course that I have been fortunate enough to teach at the University of Rhode Island for the past few years has been an enormous help to my presentational skills. Being able to present technical information to students, a group that actually bridges the gap between technical and non-technical, has helped me find ways to discuss these topics in a manner that is accessible to beginners but also informative enough to be applied to the work they are doing.

Even if you don’t have the opportunity to teach a class at the university level, consider volunteering to lead a class on basic HTML and CSS at your local library or high school. The benefits you get from the experience will influence how you speak with clients and help you better present technical concepts in a way that is easy to understand, never condescending and always productive.

Communication Is A Two-Way Street

While these tips may help you improve your own skills, the fact of the matter is that quality communication is not one-sided. It has to flow in both directions: from you to your clients and from your clients back to you. Part of your job is not only to improve your own skills, but to ensure that your client’s are up to snuff as well.

Direction for two-way traffic
Communication is a two-way street between you and the client. (Image: Jerad Heffner)

Here are a few things to look out for on your client’s end of the conversation.

Lost In Translation

When kicking off a project or speaking with a prospective client, one of the first things you should do is determine who you are speaking with and what their role in the project will be. Are they a decision maker with the authority to provide quality feedback on the project, or are they a messenger? If you are dealing with someone who is essentially a go-between, then you run the risk that your words will be mangled when recounted to the actual decision makers or that their words will be mangled when recounted back to you. This is a recipe for misunderstanding and tension.

This scenario is especially common when dealing with large companies in which meeting with the decision makers is very hard to arrange. Still, you should be pushing for this. Key decision makers must be present at key meetings and presentations in order to maintain quality communication. This might sound strict and a bit unrealistic, but anything less will not do, and this is what you should demand. Explain that you understand that their schedules are tight — yours is as well — but developing a successful solution will be a team effort, and key personnel from both sides must be in contact with each other directly for it to work. This doesn’t mean that C-level executives need to be at every meeting, but it does mean that you shouldn’t be meeting with only a messenger.

The success of a project is directly related to the quality of the communication during the process. Make sure you are speaking with the right people during it.

Responding Before Reading

Feedback given in a project will often contradict previous feedback or decisions. In some instances, this happens because the client gave that initial feedback hastily without fully understanding the nature of the issue or the decision being made. Whenever this happens to me, it is almost always because an email was not fully read and the reply was sent too quickly.

Email is a necessary form of communication, but it is also easy to rush through and even dismiss entirely. If you rely solely on email or another kind of digital communication, then you risk the conversation breaking down.

Pick up the phone or schedule an in-person or video meeting to review and decide on key points in the project. Dismissing a conversation is much harder in a meeting than when opening one of the hundreds of emails they likely get each day. If you require digital communication as a record of the decisions made, then you could certainly follow up on the meeting with a recap of what was discussed and decided. Meeting to make decisions and then using email to recap and reinforce those decisions lead to fewer misunderstandings caused by hurried responses from a distracted team.

Late to the Game

Another scenario to be mindful of is when someone jumps into the communication loop deep into the project. Even if you have excellent documentation on the decisions and communication that have happened so far through project management software like Basecamp, these late additions to the group will rarely be able to assimilate all of the information that has been accumulated, meaning their feedback and comments will not have the benefit of this historical knowledge. This can be dangerous. The new team member will often want to make an impact on the project, but if they do not understand the decisions that have been made thus far or why they have been made, then they could easily derail the project. Of course, you want to avoid this.

If a new member does jump into the project, bring them up to speed and direct their enthusiasm in a positive way. Schedule a meeting or a call with them and perhaps one or two others from the team, just to “get up to speed.� Explain what the team has decided so far and detail what the next decision points are and how their input into those upcoming decisions will be helpful.

By directing their enthusiasm at upcoming decisions instead of back to previous decisions, you enable their contributions to help, rather than hinder, the project.

Paying Attention To The Signs Along The Road

Despite your best efforts, there will always be times when communication breaks down and the project is put at risk because of it. While working to avoid those breakdowns is important, being able to identify them and recover quickly is just as important.

Road sign showing hazardous conditions
Paying attention to signs along the road will help you determine whether you are traveling at a comfortable speed or need to proceed with caution. (Image: Eric Bjerke)

Obvious signs of strained communication in email include expressions of frustration, clearly miscommunicated messages and decisions that contradict previous conversations. When you see these emails, do not reply to them to “set the record straight.� Pick up the phone and do it. When communication is already strained, a flurry of emails back and forth usually does little else than compound the frustration. Once again, this is where an in-person or video meeting helps.

By discussing the issue verbally, you stand a much better chance of resolving it and getting everyone back to healthy communication. Regularly scheduled meetings are great, but if you notice signs of miscommunication, don’t wait until the next one happens; ask for a quick call or meeting to address the issue immediately.

Quality Communication For All

Communication skills do not benefit Web professionals alone. They apply to anyone, from any industry or business, who has to communicate with others. No matter what business you are in, healthy communication skills will help you do it better. Fittingly for an article about conversation, I invite your contribution to the discussion:

What ways have you found to improve communication with your own clients?

(al) (il)


© Jeremy Girard for Smashing Magazine, 2012.


  •   
  • Copyright © 1996-2010 BlogmyQuery - BMQ. All rights reserved.
    iDream theme by Templates Next | Powered by WordPress