Thursday, January 26, 2012

Iterating on the User Interface

Introduction
In the summer of 2011, I interned as a program manager within Windows at Microsoft. Program managers play an interesting and unique role at Microsoft - they are the backbone of a team that includes themselves, developers and testers. PM's define the product and at the end of the day, are the individuals responsible for ensuring that the team carries through. The most important role of the PM in the context of this post is to form a bridge between the users (customers) and the developers. As such, they play an important role in adding a human touch to the software, and ensuring that the usability is optimal.

My project over the summer was to develop a modern app for Windows 8. As revealed by the announcements at the BUILD conference in September 2011, Windows 8 will have a built in, cross platform app store. Apps are compatible with laptops, desktops, and tablets; design guidelines recommend that apps are designed for a touch first environment. After a few days of brainstorming, my team decided to build a to-do list app. As the PM, I was responsible for designing the user interface for the app.

The Initial UI
The first iteration of the user interface was inefficient, to say the least. The interface was designed with a "features first" attitude, something that I soon learned was not the correct approach when designing for people. When putting features before usability, it's easy to forget the human factor. The features took control, and I found myself designing the UI to accomodate the various functionalities. The result was a UI that required four user actions before they could begin entering a new task. This may not seem like much, but entering a new task is probably the single most important feature of the app, and one that will occur with the highest frequency. With that in mind, forcing the user to go through four loops before allowing them to start typing is a terrible idea, from a usability and efficiency standpoint.

Gathering Feedback
Upon presenting the UI to our supervisors, I quickly realized my mistake of putting features before usability. No matter how powerful and numerous the features, they are useless if not presented in an interface that enables the user to leverage them efficiently. This forms the backbone of the belief that interfaces should be designed with a "user first" attitude. Every UI element should be designed around helping the user accomplish their goal.

Another key point of feedback was to be great at one or two things rather than offering a mediocre product with every possible functionality. I decided to narrow the focus of our app - it went from a general to-do list app to a location based tasks app. Users create tasks and associate them with a location, and the app uses GPS data to trigger reminders. By narrowing the focus, we were able to simplify the UI by removing all elements that didn't help with the goal of creating location based tasks.

When it comes to consumer applications, and particularly those that are touch based, minimalism is a winner. Users do not want to deal with complexity - the faster they can get in and out of the app, the more likely they are to be satisfied. Keeping the user scenario in mind helps weed out those elements that aren't necessary and those that help the user achieve their goal.

Gathering feedback is an interesting process when it comes to UI - everyone will have their own opinion, and strong reasons for it. It's impossible to make everyone happy. I find that the best strategy is to focus on the points that were repeated by multiple individuals. If a number of people found a problem with an aspect of the UI, there is likely a way to improve it.

The Final UI
The end result looked nothing like my original UI prototype. In total, I think I went through around eight iterations. With each iteration, the usability of the UI progressively improved. Feedback with the final product was overwhelmingly positive, and users were happy with the user experience.

I'm confident that if I spent more time, I could have further improved it. As a UI designer (amateur as I am), its difficult to ever be completely satisfied with the work knowing that there are still a thousand ways to make it even better. But it's a time-quality tradeoff. The product has to be released at some point, and the ability to recognize the state in which the usability of the UI is acceptable is essential.

No comments:

Post a Comment