Strategic insightsThe Right Kind of Efficiency

I often write about efficiency because it is the most important element in creating a great user experience. But efficiency is not just about getting things done, or doing something as fast as possible. Efficiency is really about optimizing the user experience.

Let me explain.

When people discuss how to make a new application or how to solve a problem they always focus on "the end". The goal is to finish. This is, however, not always the case. A good example is food.

There are three types of people when it comes to food:

1: The Chef

The first type is the chef, who creates food not because he wants to eat, but because he is excited about creating the food itself. As such, a chef is more concerned about the process of making food - than "not being hungry after dinner".

This is what you experience in Pixar's movie Ratatouille where Remy tries to make the perfect soup.

Loading Video(Note: You need Flash 9+ to watch these videos)

2: The Taster

The second type of person is the one who seeks a tasteful experience. This kind of person is not interested in the process of how the food was made, but focuses instead on what it tastes like. To him, the food must be an exciting experience that thrills the taste buds in his mouth.

Cooking is not really important for him (when done well) - and the best solution would be to invent a food replicator (from Star Trek). This way he can enjoy great food without having to make it first.

Loading Video(Note: You need Flash 9+ to watch these videos)

3: The Fast Food Guy

The third type does not like to cook, or actually to eat. This type of person eats food to satisfy his hunger. This is the type who goes to McDrive and buys a BigMac.Trying to make good food for this type of person is almost impossible. He do not care about the effort. Nor does he actually use his taste when he eats it - instead the food is simply swallowed after being chewed a couple of times.

This is best illustrated with the futile attempt in which Remy tries to teach his brother the sensation of food.

Loading Video(Note: You need Flash 9+ to watch these videos)

Convert that to Efficiency

The point is, of course, not to discuss how or why we eat. Instead it is to illustrate that people focus on different things. Only the third type actually focuses on "the end", he is the only one who wants food to be highly efficient from A to B.

The other two types does not care about the end, they focus on the process and the experience of the journey. But they also like it to be highly efficient.

The chef likes to spend as much time as he can on making great food. That means he would benefit from having a system that automates or completely eliminate all other aspects. Even so, the process of actually making food must also be efficient. The knife must be incredibly sharp, the mortar and pestle must have the right shape, the grater must have the right form to make just the right kind of slices.

A chef needs highly efficient tools, so that he can focus his time on the creating part.

It is the same for a person who likes to eat (the second type). For him, everything else needs to be automated or eliminated, so that he can focus exclusively on the experience of eating great food. But, even that needs to be efficient.

A great eating experience is about taste with a sensation of flavor and aroma. But you don't get this sensation by simply putting food in your mouth. It needs to be prepared not only so that it tastes good, but more so, prepare it so that the flavor and aroma is released the instant it hits your tongue.

Again, let me turn to a clip from Ratatouille where the food critic tries out Remy's wonderful dish of ratatouille.

Loading Video(Note: You need Flash 9+ to watch these videos)

How do you do it?

This is all very fancy talk and all, but how does this compare to application development? Well, it is actually quite similar. All applications need to be highly efficient. That is a key component to greatness. But the way this efficiency is "engineered" highly depends on the type of application and the needs of the people using it.

"The End" applications

Some applications are just about "the end". This is applications like Project Management tools, simple DVD burners, Flickr Uploader, and video converters. These type of applications will benefit from being highly automatic and extremely easy to use.

With "End" applications you sacrifice control to get things done fast.

"Creating" applications

Other applications are about "creating". This is applications like "Photoshop", "Microsoft Word", "Adobe AfterEffects", "GarageBand" and many others. It is much harder to make these applications. The interaction needs to be separated and you cannot use the same concepts throughout the process.

Applications designed to allow people to create something needs to give a people an extreme amount of control. The tools within them needs to be refined and optimized for the task. But most importantly, the application should be highly efficient at removing obstacles.

You sacrifice swiftness to be able to gain quality and better result.

"Consuming" applications

Applications designed for consumption is also very different from the other two types. This is applications like video players, StumbleUpon, Twitter, blog readers etc. These application is not really about control, but rather about having a good time.

You need to optimize the part of the interface that gives people that sensation - and move everything else out of the way. For a video player, this mean removing toolbars, settings and all the interface elements that is not part of the video. And, if you want to do more than just showing a video, create interactive videos, where the extra content is a part of an engaging experience of the video itself.

You sacrifice options and complete control to get people "hooked" on the content.

"Background" applications

There is also a fourth type of applications, which are background services. These applications are completely invisible and exist to eliminate boring, monotonous and complex tasks.

This is applications like synchronizers, indexing services, automatic content creating, tagging systems, and various forms of data validation.

A good friend and I recently completely a huge web application designed to handle all the images, video and other media files used by the company I work for. It is what you call a Media Asset Management Application.

This application is designed to make it much more efficient to manage and use the over 230,000 media files stored on our servers. And to do that, more than 80% of the web application is made as "background services". Services that completely automates tasks that was previously done manually - and it do it without anyone ever noticing it.

Background applications is an extremely powerful way to gain efficiency. Not only are many tasks done fully automatic, it also allows you to focus on what we "humans" do best. To be creative, make important decisions, and solve complex problems.

Always think efficiency

Efficiency is always the key - no matter what application you are making. It is what you use to determine what part of your application you need to automate or simplify. It is what you use to focus peoples attention. And, you use efficiency to determine if the tools you have provided work the way they should.

Everything needs to be efficient - but it is not always about reaching "the end".