Friday, December 14, 2012

When Is a Program Too Feature-Rich?

In yesterday's post, I posed a bunch of really hard human-factors questions. What got me thinking about all that was the simple question: When (if ever) is a program too feature-rich?

Maybe it's not possible for a software system to be too feature-rich. Perhaps it's all a question of how features are organized and exposed. After all, a laptop computer (in its entirety: operating system, drivers, software, everything) can be considered a single "software system"—a single meta-app, with various child components having names like Chrome, Microsoft Word, Photoshop, etc. Imagine how many "features" are buried in a laptop, if you include the operating system plus everything on down (all software applications of all kinds). We're talking hundreds of thousands of features, total. And yet, users manage, somehow, to cope with all that complexity. Or maybe I should say, users try like hell to cope with it. Often, it's a struggle.

Given the fact that people still do buy enormously complex "software systems" (and manage to cope with them, to the point of making them worthwhile to own), maybe something like total feature count doesn't matter at all, in and of itself, where usability is concerned.

Or does it? There are still people in this world who are afraid to use a computer (and/or terrified to use a smart phone or an iPad), either because it's "too hard," too apt to make the user feel stupid, or whatnot. Those of us who do use such devices daily tend to chuckle at the fears of the computer-illiterate. We tell them "There's nothing to be afraid of" and then expect them to get over their fears instantly. When they don't, we scoff.

But really, should we be judging the user-friendliness of a software system by how easy it is for the majority of users to adapt to it (often with a certain amount of pain and difficulty)? Or should we (instead) be judging a system's usability by the number of people who are afraid of it?

Why shouldn't we be designing systems for the computer-fearful rather than for the computer-literate?

It's easy to say that something like total feature count doesn't matter as long as the software's (or device's) interface is good. The problem is, it's never really very good.

I consider myself a fairly computer-literate person at this point. I've written programs in assembly language for Intel- and Motorola-powered machines. I can read and write C++, JavaScript, Java, and (under duress) a few other programming languages. I've written plug-ins or extensions for a dozen well-known desktop programs, and I have seven software patents to my name. But there are still software systems in this world (mostly enterprise) that make me feel stupid.

If someone like myself feels stupid when confronted by a certain device or software system, isn't that an indictment of the software (or device)? Or do I deserve to feel stupid, since thousands of other people are able to get work done using the same software?

If there are people in this world who don't know how to set the time and date on a coffee maker, isn't that an indictment of the coffee maker?

If someone can't figure out how to operate a cable-TV channel changer, isn't that an indictment of the device itself?

I don't have hard and fast answers to these questions. But I think it's fair to raise the questions.

I'll go further and say: Every user (or potential buyer) of software, or software-powered devices, should definitely raise these questions.

Also: Every company that designs and sells software, or software-powered devices, needs to raise these questions.

So raise them, I say. If you're a software (or device) maker, have the necessary dialog, in your company, to get a strategy together for dealing with these sorts of issues. Get users involved in the discussion. Come up with a trackable plan for implementing possible solutions. Then follow up with customers to see if the solutions are actually accomplishing the desired purpose.

And if you're a customer? Ask yourself how smart or how stupid you feel when using a given product. And then, if you have a choice, vote with your wallet.