Monday, June 6, 2011

Smaller is better: designing for usability

Yesterday somebody called to learn more about Impact Dialing and raved to me about how well-designed it is. He had looked at a half dozen other dialers and said that ours was far and away the best-designed and easiest to figure out. I don't claim to be a design expert, but I think we're on to something in terms of our usability, and I want to share our design philosophy.

My experience suffering through my now-competitors' poor design was one of the reasons I started Impact Dialing. For example, on logging in, one system presents the user with a blank screen and a series of drop-down menus. The only way to figure out how to use it is to explore the menus and sub-menus, opening up new windows and navigating deeper and deeper into each window's sub-application. Another dialer tried to be more user-friendly with a step-by-step wizard, but in order to change anything, you have to go through the entire wizard again. Both systems used specialized jargon that non-experts would never understand. From my frustration, I came up with a series of design principles:

  • Users shouldn't need to read a manual
  • Make everything accessible with minimal clicks
  • Use good defaults, so even if you have no idea what you're doing, you can still get set up
  • Use plain English and avoid jargon

I started out by breaking down the task of setting up a predictive dialer: you need logins for your callers, a script for them to read and record answers to, and a list of phone numbers for them to call. I used Mockingbird to wireframe a layout in which these three concepts - Callers, Scripts, and Campaigns (which contains lists and a few other pieces of information) - were tabs along the top. This would present users with everything they needed to access intuitively and with minimal navigation, so that they could work from left to right to set things up the first time.

Even with this simple design, I knew some people still might not think about needing to set up caller logins, so we made a default caller login for every new account. Similarly, new users might not know what their scripts should look like; since many of our clients make political calls, we made an example script and corresponding call results for political campaigns. Finally, I knew that some people still might need a helping hand along the way, so we created a "Welcome" tab that opens when users log in and displays a quick run-through of how to use the system, along with a video guide.

At this point, we released Impact Dialing. We just had the bare minimum features needed for a predictive dialer, which in my mind, was actually an advantage: we had a clear, simple, easy-to-use design, something that none of our competitors can say.

As our product has developed, we've been very careful with how we add new features. We eye anything that adds very much complexity with great suspicion, and try to think of simpler approaches whenever possible. All else equal, we always build simpler features before more complicated ones. And if somebody requests a feature that's tied in with other features we're considering, we'll try to wait to build it until we really understand the whole set of features.

For example, we originally only allowed one set of results per script, so if you had two questions in your script, you'd have to list out every combination of answers in your results list. A few people had asked for multiple results, but we knew that we'd eventually support free text entry and patch-through calls, and so we waited until we were sure we understood all of the use cases we wanted to support. Patch-through calls were going to take a little more work, so we just built out the multiple results and free text, and came up with a fairly elegant interface. We've got some more ideas about how to make the system even more flexible, but even now, it's still as straightforward and simple as our original design. That's how we like to improve things.

The final piece of our design approach is to remove and streamline when we can. For example, we originally required new users to enter their first name, last name, organization, email, password, password confirmation, and agree to the Terms of Service. When we re-designed our site, we stripped down to just email, password, and Terms agreement. If somebody entered their password incorrectly, they could always recover it later. Everything we decided was nice to know but not essential, and we'd rather err on the side of simplicity.

Do you have or know of a well-designed web site or web application? Please share in the comments below!