Holy cow, I wrote a book!
I often find myself saying,
"I bet somebody got a really nice bonus for that feature."
"That feature" is something aggressively user-hostile,
like forcing a shortcut into the Quick Launch bar or
the Favorites menu,
like automatically turning on a taskbar toolbar,
like adding an icon to the
that conveys no useful information but merely adds to the clutter,
or (my favorite)
like adding an extra item to the desktop context menu that
takes several seconds to initialize and gives the user the ability
to change some obscure feature of their video card.
Allow me to summarize the guidance:
The Quick Launch bar and Favorites menu belong to the user.
There is intentionally
no interface to manipulate shortcuts in the Quick Launch bar.
We saw what happened to the Favorites menu and
learned our lesson:
Providing a programmatic interface to high-valued visual real
estate results in widespread abuse.
Of course, this doesn't stop people from hard-coding the path
to the Quick Launch directory—too bad the name of the
directory isn't always "Quick Launch"; the name can change
based on what language the user is running.
But that's okay, I mean,
everybody speaks English, right?
There is no programmatic interface to turn on a taskbar toolbar.
Again, that's because the taskbar is a high-value piece of
the screen and creating a programmatic interface can lead to no good.
Either somebody is going to go in and force their toolbar on,
or they're going to go in and force a rival's toolbar off.
Since there's no programmatic interface to do this,
these programs pull stunts like generating artificial user input
to simulate the right-click on the taskbar, mousing to the
"Toolbars" menu item, and then selecting the desired toolbar.
The taskbar context menu will never change, right?
Everybody speaks English, right?
The rule for taskbar notifications is that they are there to,
well, notify the user of something.
Your print job is done.
Your new hardware device is ready to use.
A wireless network has come into range.
You do not use a notification icon to say "Everything is just like it
was a moment ago; nothing has changed."
If nothing has changed, then say nothing.
Many people use the notification area to provide quick access to
a running program,
which runs counter to the guidance above.
If you want to provide access to a program, put a shortcut on
the Start menu.
Doesn't matter whether the program is running already or not.
(If it's not running, the Start menu shortcut runs it.
If it is already running, the Start menu shortcut runs the program,
which recognizes that it's already running and merely activates the
While I'm here, I may as well remind you of the guidance for
A notification balloon should only appear if there is something
you want the user to do.
It must be actionable.
The really good balloons will tell the user what the expected action is.
"A wireless network has come into range.
Click here to connect to it." (Emphasis mine.)
Here are some bad balloons:
One of my colleagues got a phone call from his mother asking
him what she she should do about a new error message that wouldn't go away.
It was the "Updates are ready for you to install" balloon.
The balloon didn't say what she should do next.
The desktop context menu extensions are the worst,
since the ones I've seen come from video card manufacturers
that provide access to something you do maybe once when you set up
the card and then don't touch thereafter.
I mean, do normal users spend a significant portion of their day
changing their screen resolution and color warmth?
(Who on a laptop would even want to change their screen resolution?)
What's worse is that one very popular such extension adds an annoying two
second delay to the appearance of the desktop context menu,
consuming 100% CPU during that time.
If you have a laptop with a variable-speed fan, you can hear it
going nuts for a few seconds each time you right-click the desktop.
Always good to chew up battery life initializing a context menu
that nobody on a laptop would use anyway.
The thing is, all of these bad features were probably justified
by some manager somewhere because it's the only way their feature
would get noticed.
They have to justify their salary by pushing all these stupid ideas
in the user's faces.
"Hey, look at me! I'm so cool!"
After all, when the boss asks,
"So, what did you accomplish in the past six months,"
a manager can't say,
"Um, a bunch of stuff you can't see.
It just works better."
They have to say,
"Oh, check out this feature, and that icon, and this dialog box."
Even if it's a stupid feature.
As my colleague
Michael Grier put it,
"Not many people have gotten a raise and a promotion
features from shipping."