Let’s turn off all features to improve UX
Here’s a thought; what if all features on a new software upgrade were turned off by default?
What if when you bought a software upgrade, all the new features were disabled and the software worked exactly as if it did before you installed it? What if new software had all but the most structurally necessary features disabled?
Yes, I’m serious.
But why?
For a maximum user experience of course …
WTF? … how can you have a maximum user experience with everything turned off?
Because the biggest issue with user experience is surprises.
Well duh! But now we’re talking bugs, and everybody knows bugs suck.
Yeah, bugs suck, but that’s not what I’m talking about.
I’m talking about features that work to spec, but unfortunately the user doesn’t even know exist! Notice that I’m not talking about features that users don’t know how to use. I’m talking specifically about features, often intrusive features, which the user doesn’t know about.
Like what? … oh, I don’t know … like having my keyboard cycling between US, Canadian French, and Canadian Multilingual, in an apparently random pattern last week. This happened because the default hot keys on the Language Bar software were set to the same keys as is standard for highlighting text for cut & pasting. This took me days to figure out, for a variety of reasons, the biggest being that, the change is not obvious until I type a letter that has a different mapping, turning my your single quotes ‘, into “ or è! I was completely oblivious to the fact that utility even had keyboard shortcuts, as I’m sure the person who selected those keys was oblivious to the fact they are standard shortcuts. This was extremely frustrating, and notice it was not a bug.The problem is that things did not work as expected.
Unfortunately, when the user doesn’t know ‘about’, let alone ‘how to use’, all the funky bells & whistles we added to improve their lives, their experience more closely resembles a series of surprises. And surprises suck … oh yes they do suck. I’m not talking “Ed McMahon showing up on your door step” surprises, I’m talking “your meeting starts in 5 minutes, and the printer doesn’t work, and when you reboot, a large Windows Update starts installing” surprises.
Surprises are frustrating and unproductive.
So why the surprises? Because users are diving into the software to get stuff done, and don’t have the time or are just unwilling to put in the effort to learn all the bells and whistles. And who can blame them? Who wants to read hundreds of pages of documentation just to use the one new piece of functionality they bought the upgrade for.
Maybe if we just gave them what they wanted, they might invest the 5 minutes to learn what they need, and we’d have a more educated user base. Maybe if we gave them functionality and an education in bite sized chunks, they’d be more inclined to learn more because the commitment is a 2-5 minute video, not a huge, 1000 page, $75 book, or worse, a help file which provides absolutely no indication of scope.
So what’s my solution?
I think software should install with all features disabled.
Then when the user wants to use the awesome feature he was sold on, they just kick up some kind of feature start up dialog, which prompts the user to watch a minimal length tutorial for the feature and make the decision to enable the feature right in the tutorial. Yes, there would need to be the option to bypass the tutorial of course, for those who already know it, or just want to fumble around in it, but just knowing the feature exists will make their fumbling more likely to succeed. Maybe functionality could even be presented (marketed) to the user in order of popularity, helping users decide what features to look into if they don’t already know them. It might also help software companies know what functionality they should not be spending time on.
Yes, I realize there will be some things that must be enabled due to structural integrity issues, where enabling / disabling a feature is just too much work. Or business has decided to require it, regardless, to force feed some type of functionality to the user (think Apple iTunes). Or it’s just a design decision. But maybe those auto-enabled features could have their (again, bitesized) tutorials queued according to the most invasive functionality so the user could still skip them, but again, at least they’d know what changed.
I think the biggest argument against this idea would come from the business end of software product companies who feel that it’s got to be setup immediately based on the most common users, assumed workflow, and I’m sure there will be many who believe it must be enabled because users just won’t enable it themselves … yeah … just think about that statement for a second please. I know that would be an argument from somebody.
So, in summary, turn off as many features as possible, preferably all of them and push the user through a bite sized tutorial before allowing them to enable each one.
For the most part, I would say I have to agree. However, as a power user, I would like to add some caveats:
1. I want the option to install as a power user where I can preconfigure the features I want enabled so I don’t have to go through the discoverability phase to enable features I already know I want.
2. When I upgrade, it shouldn’t shut off features that I had enabled in the old version, that would get old in a real hurry. It should figure out what was already enabled, and enable them in the upgrade version.
3. Software companies should request that users allow basic communication back to a server just to provide anonymous information about which features are enabled so they can keep track of “most commonly used features”, if only to include them in a “Install most commonly used features” install option. They should get a series of bite size videos for those options which can play while the install is running, giving the user the options for “Watch now”, “Watch later” or “I don’t want to watch this crap, quit harassing me”.
4. There should be a what’s new video that I can watch while the upgrade runs that shows me what great new features have been added since the last version giving me the heads up on what I’m going to want to go and enable.
@Ben: On Point #2 –
Sometimes upgrades to Software turn off features that have been shown to expose valnerabilities that were unable to be patched with the currently upgrade. Normally this is documented in the release notes of the upgrade (but who really wants to read those). It would be nice if there would be a warning if features that were installed would throw warnings if they were to be shut off, however I could see that causing more and more companies to charge for their patches/upgrades due to the amount of code (and testing) it would require to enable such features.
As a Web Developer we get hit most with usability features as our software gets used by a greater size of audience. Maybe we should remind the Desktop world that they should be following the same standards that we are forced to uphold?
~Cory()
@Cory
That’s a great point.
Perhaps during the install, give a quick English (or whatever the primary language is) message to say “Hey, we’ve come across a security problem in feature X. So far, despite our best efforts we’ve not been able to isolate it and fix it, but we are working on it as hard as we can. In the meantime as a precaution we’d like to disable that feature by default. You can still re-enable it in the software if you need it later, but we really recommend you don’t until we release a fix.” Along with two buttons:
– I understand, but I want to leave this feature enabled.
– Thanks for the warning, go ahead and disable it.
I don’t know that we should consider that we’re “forced” to uphold these standards, I think they’re something of a necessity for the large majority of users. I think of myself first as a user, and second as a developer. So I find it fairly easy to put myself in their shoes and develop something compelling.
Detesting complication, I completely understand where end users are coming from when they complain about our software. Why do I need 3 cable boxes? why can’t I PVR my HD subscription channels and watch back on any TV/computer in the house? Why isn’t my GPS/Phone/iPod/Radio/Walkie Talkie/Video Phone/Portable data storage all rolled into one device? I shouldn’t need a complicated learning curve to get things working the way I want – like most Linux based stuff. The computer should work for me, not the other way around.
As developers I think we’ve become accustomed to wasting hours/days/weeks/months and years of our lives making computers do what we want them to. Consequently when we’ve got a relatively simple [for us] process that gets us from A to B, it’s easy just to write up the process and say we’re done. We forget that most people have enough to worry about in their lives without having to learn another new process – me included. Computers were designed to make our lives easier, less tedious, simpler, more effective. Our software should do the same. Our users shouldn’t have to replace boring monotonous automatable tasks with technical and/or complex confusing ones. People have enough complexity in their lives already without having to learn how to use new systems, they just want to get stuff done.
I think because I crave simplicity in my own life I may have a slightly different perspective on software design than many developers.