Tuesday, November 1, 2011

Add features...but protect the core

When a new product gets released, it has a core set of functions that define the "experience" that the product delivers. Ideally, that core works flawlessly and intuitively, delivering the best possible experience to users. If you don't have a good core, you don't have a good product. It's as simple as that.

Over time, as you develop the product, you build new functionality on top of the core, and with each iteration, the product grows more complex (think of an inverted pyramid, with the core set of function being the narrowest segment at the bottom).

Eventually, you arrive at the point where most users only use 20% of the functionality (mostly in the core), and the remaining 80% is there for the power users and more adventurous folks. For example, I bet most people never touch a majority of the options on their iPhone. And heaven help it if my mom ever accidentally triple-clicks the home button on her iPod touch.

The challenge is how do you build on top of the core without ever compromising it, because as my friend Ben once said to me while I was working on a problem with my iPhone app, "you don't want to make the majority of users suffer on account of the minority" (paraphrased like crazy).

One common way to do so in software is to have a "Beginner" mode and an "Advanced" mode, which makes all of the advanced functionality more accessible. I think this is a dumb way to do it because you are giving your product developers a backdoor out of having to do good design while creating two divergent experiences. When a suboptimal option is considered for the "advanced" functionality, it is too easy to justify it by saying that it is in the "Advanced" mode.

Instead, developers should be forced to find a way to integrate the advanced functionality into the product without:
  • Compromising the core experience
  • Creating a separate "advanced" experience

No comments:

Post a Comment