May 16, 2010

Feature discoverability

One of the great approaches to developing usable software is to actually use the product you're working on. It is often called "eating your own dog food". The benefits are obvious - you have clear source of the requirements and priorities - because you're your own customer. A lot of good books for entrepreneurs like "The Art of the Start" or "Rework" promote this approach.

But there is a trap.

While adding features you mostly think of their usefulness, speed, productivity. You ponder how you'd use them in the most efficient way. And this sounds good, right?

In this situation you're thinking as an expert user of your product. As a user who knows the product perfectly well from its day one.

Features designed for experts are usually hidden. Keyboard shortcuts, advanced interface settings, non-trivial mouse gestures, cool rich functions hidden deeply in the UI. And you, as an expert of your product, might not expose these features enough (especially if you care for UI simplicity and don't want the interface to be bloated).

And even when you're adding a non-expert feature, you can still hide it somewhere in the interface and your users won't find it. You definitely will - you know where it is. But other people can be unaware of its existence at all, or (worse) miss it even after searching for the feature.

The most relevant recipe to detect such problems early is to perform regular usability testing, especially for the new functionality. Unfortunately, most software development teams don't do this, though even a simple 5 second test may help.

Here are some other steps to ensure feature discoverability:
  • Provide a logical predictable navigation system in the application, either in the menu or some other way. Many users use the menu as a reference for the application features.
  • Give users a possibility to search for a particular function, either in the reference documentation or search for an action within the UI.
  • Make a screencast and/or blog post to inform your existing users about new cool feature.
  • In the application, create a "Fresh updates" section, which will inform existing users about new versions of the application, and which new features are available in it.
  • Create a "Hint area" in the application, which shows some relevant actions for the current situation.
  • If your application perform some lengthy operations, you may show users some "Tip of the day" screen while such operations in progress.
  • Prepare a printable cheat sheet with the application's keyboard shortcuts, if you provide them.
We're facing the discoverability issues both in TeamCity and in Checkvist, and going to deal with them in the nearest future, so your feedback is appreciated.
How do you help your users to find new or advanced features in your application?


Igor Sereda said...

To continue your thought, the features that you come up with while dog-fooding are mostly expert features, and before thinking of how to make them discoverable, it may be reasonable to think whether they should be done at all.

The same resources could be spent on developing a non-expert feature, maybe more than one, that would bring your product more happy users, while a new expert feature could benefit only yourself or several other long-time users who complain but still pay :)

Enter the Product Manager!

kirillka said...

how insanely and gorgeously is Sereda right!

nice article btw