Fog Creek Software
Discussion Board




Preferences vs. advanced users.

Well, this is my first post here, I don't know the habits, I don't know if Joel actually reads this forum or if this was discussed in the past. Anyway, I'll address this to him.

So, I just read the on-line chapter of your book of the title "Choices". You write there:

`` "But wait!" you say. "It's important to have options for advanced users who want to tweak their environments!" In reality, it's not as important as you think. This reminds me of when I tried to switch to a Dvorak keyboard. The trouble was, I don't use one computer. I use all kinds of computers. I use other people's computers. I use three computers fairly regularly at home and three at work. I use computers in the test lab at work. The trouble with customizing your environment is that it just doesn't propagate, so it's not even worth the trouble. ''

While agreeing to some extent, I have to object. I agree, because regarding the current common situation in computing, it's true that preferences don't propagate, so after all it's not even worth tweaking. I consider myself an "advanced" user, I use mutiple computers, I have to migrate from time to time, I have to reinstall the OS (while far not as often as you write) and so on. So, I indeed ended up not bothering with my settings, right out of the very reason you mention.

But for two reasons, I don't agree. First, while I use multiple computers, I have a primary one, which I use most of the time. So, it's mostly acceptable to tweak that one to the best of my preference, and somehow I'll get used to having a different environment on the other, less frequently used boxes. Some settings can even be transferred among them, partly right because I'm a sort of advanced user, who finds ways to do so a novice might not know.

Second, you encourage a workaround, instead of a solution to the existing problem. Instead of proposing a way how the preferences could be migrated through space and time, you encourage (or at least suppose) the users to not bother tweaking their environments, and for that reason, you encourage the developers to not include "advanced" options in their programs, because the users won't use them anyway.

What I think about such oprions or preferences is that they should hide beneath what they refer to, as opposed to (or perhaps in addition to) lie on bloated preference panels. They simply shouldn't appear on the surface until the user specifically wants to tweak that aspect of the environment. They shouldn't interrupt the user, or distract attention. They shouldn't force the user to make a (irrelevant) decision. For that reason, they indeed should have very reasonable defaults, so that the given aspect "just works". But when specifically asked for, when they really become relevant, and the user *wants* to make a decision, then they should be there for service.

mortee
Sunday, March 16, 2003

Hmm, this is a really good topic!

You said:

>>  What I think about such oprions or preferences is that they should hide beneath what they refer to, as opposed to (or perhaps in addition to) lie on bloated preference panels. They simply shouldn't appear on the surface until the user specifically wants to tweak that aspect of the environment. They shouldn't interrupt the user, or distract attention. They shouldn't force the user to make a (irrelevant) decision. For that reason, they indeed should have very reasonable defaults, so that the given aspect "just works". But when specifically asked for, when they really become relevant, and the user *wants* to make a decision, then they should be there for service.

It sounds like you are basically saying that if preferences are closely associated visually and operationally with the features that they control, and if those preferences are not a distraction, then preferences should be designed into  products...

Given that Joel has made a living as a sort of user interface expert, my guess is that he had already anticipated these practices as objections when he wrote the paragraph you quoted.

Personally - I think *every* SW developer wants to pride himself on "ease of use" and "intuitiveness" and "flow" in his work. Only the real jackasses I've had the displeasure of working with have said or acted in a way to imply that the user interface isn't important or not worth the time to refine.

So in a way you're implying a negative "strawman" - that developers may seek ways of interrupting the user's flow with needless option setting requests and that developers would knowingly segregate option settings into nonintuitive and arbitrary parts of the software, and that these tendencies, once addressed, would solve the 'preferences' problem for all.

Here's my $0.02:

The prevailing practice of grouping preferences onto a (likely notebook tabbed) centralized dialog box in an application has seemed to evolve as a sort of canon among most SW companies since it's a non controversial, least common denominator.  I agree with your implication that this is a clumsy non-metaphor that separates functions from options. 

In a 'perfect' world, there would be universal and commonly known pointing  device gestures that would invoke property settings of elements of the application. IE: perhaps you'd somehow gesture on the text in a word processor and the program would 'guess' that you wanted to change the font. I am guessing that this is an example of your idea.

But at least with the current way that things are - if a user sits down to an application that is new to him, he "knows" that there is an excellent chance that an Options, Settings or Preferences window lives under one of the menus labeled Edit, View or File in most Windows applications. It may be a 'lumpy' and inelegant way of representing application properties but it's an easy to understand and portable representation - once you know that you're looking for program settings. You could find Preferences or Options in Quickbooks or Visual Studio .Net or 'My Lawyer'.


Let me propose the following thought exercise: pick a common desktop application type. Lay out your idea of how a few common "Preferences" type settings in such an application might be controlled with a more intuitive design.

The point is, if you can show a specific example of how things could be done, then the idea may hold up better.

Bored Bystander
Sunday, March 16, 2003

Let me add to that challenge: propose such user interface settings that manipulate *hidden* or non visual behaviors of the product.

IE: one example of the kind of visual and unburied option setting that you're seeking is resizing of columns and windows in an application. But in my mind, that's just too easy and most programs implement things like that anyway.

So the 'rule' here would be that the property or option doesn't have an obvious, draggable or clickable aspect to it that involves simple repositioning.

Good luck, if you choose to take on this challenge. I'm open minded. I'd like to see what you can come up with. Perhaps my brain has been 'conditioned' by too much exposure to other people's limited notions...

Bored Bystander
Sunday, March 16, 2003

"It sounds like you are basically saying that if preferences are closely associated visually and operationally with the features that they control, and if those preferences are not a distraction, then preferences should be designed into  products..."

Yes. At least from the user's PoV. The main reason against measureless options has been that they 1.) make hard to find what the user is really looking for, 2.) they interrupt the user or distract attention, 3.) they enforce the user to make explicit decisions about irrelevant things. So, as long as those circumstances don't stand, more options are good.

From the support PoV, having more options may have further impacts. That's what I'm not discussing here.

"So in a way you're implying a negative "strawman" - that developers may seek ways of interrupting the user's flow with needless option setting requests and that developers would knowingly segregate option settings into nonintuitive and arbitrary parts of the software"

You misinterpret my statements. I haven't said with a word that this is intentional. This common situation has many reasons I don't want to discuss here either, but the basic thing is that it's much more comfortable, and needs much less thought from the developer to throw every tweakable option on a preferences panel (or even into a rc-file), than to lay out intuitively.

"and that these tendencies, once addressed, would solve the 'preferences' problem for all."

Again, no. I just said that the approach proposed in the book is broken in my opinion. Especially out of the reason given there (migration problems). I haven't stated that I knew the ultimate solution to the preferences issue, just that it would deserve a different approach.

"The prevailing practice of grouping preferences onto a (likely notebook tabbed) centralized dialog box in an application has seemed to evolve as a sort of canon among most SW companies since it's a non controversial, least common denominator.  I agree with your implication that this is a clumsy non-metaphor that separates functions from options. "

Glad you agree on that.

"In a 'perfect' world, there would be universal and commonly known pointing  device gestures that would invoke property settings of elements of the application. IE: perhaps you'd somehow gesture on the text in a word processor and the program would 'guess' that you wanted to change the font. I am guessing that this is an example of your idea."

Not really. Two points here. When you are working on a text document, the font used is likely to be somewhat relevant to you, so preferences thereof may be exposed. Either on a toolbar, or a palette, or anything. If you don't like it, you can close the palette, and access it subsequently from a menu later. No big magic here.

Second, for visual things, you always can have an option in the context-menu which offers you possibility to tweak the there-relevant options. If you right-clicked something, then it is probably of some interest to you, so it's a good place to access related options from there. In a way not mixed with other options which belong to things miles away. So, again, no magic gestures needed.

"But at least with the current way that things are - if a user sits down to an application that is new to him, he "knows" that there is an excellent chance that an Options, Settings or Preferences window lives under one of the menus labeled Edit, View or File in most Windows applications. "

Has anyone said that various things should have only one way to access them? If you recall, I wrote "preferences ... should hide beneath what they refer to, as opposed to (or perhaps in addition to) lie on bloated preference panels". So, the nitty-detail preferences should be accessible starting from what they refer to. They shouldn't appear on the main preferences panel of the app, as they wouldn't either anyway if these options would just not made options.

And then, the (probably advanced) user may need sometimes to be able to look over *all* of the possible existing preferences. Since this is surely a very rare need, and used only in very special cases, it's not a big drawback if this interface is not intuitive or easy-to-use. So, there should be an "advanced" preferences panel, which isn't at all designed for everyday use, and where all imaginable preference options appear, in a list. This should just be a secondary (or umpteenth) way to access them. Just look at Mozilla's about:config. That's a good example of this. It may probably be used once every leap year, so its absolutely un-intuitive design is not a problem, but it collects everything that is accessible in some way in the application.

"The point is, if you can show a specific example of how things could be done, then the idea may hold up better."

Well, I haven't implied myself to be an UI expert. I haven't even stated I can do better (while it may be so). I just said there *may* be a better way, which may possibly be looked for, instead of taking the short way with a workaround. But anyway, see above for a five-minute approach. Anyone can do even better with a bit of real thought.

"Let me add to that challenge: propose such user interface settings that manipulate *hidden* or non visual behaviors of the product.

IE: one example of the kind of visual and unburied option setting that you're seeking is resizing of columns and windows in an application. But in my mind, that's just too easy and most programs implement things like that anyway."

Well, OK. You picked a good example, 'cause that may apply to both of the sides you mention. See below.

"So the 'rule' here would be that the property or option doesn't have an obvious, draggable or clickable aspect to it that involves simple repositioning."

So, the column header is a good test case, because it's indeed quite a straightforward to simply resize the columns - but what about selecting which columns you wanna see? That's not that evident, right? Usually, settings for that are put into some menu; I even saw apps that had that preference hidden on some settings panel. Quite far from what we want to control. A much better place is to put it on a right-click menu at the column headers. That way, you access it where it belongs to; and it doesn't pollute the settings panel or the menu either.

If we go more abstract, towards much less visible behaviours - well, I can't give a definitive, ultimate solution. But just out of quick thought, if the given aspect of the program is possible to ever become *really* relevant to the user, so that s/he explicitely wants to make a decision about it; then it may worth visualizing that aspect of the behaviour (in a non-distractive way), so that it has an interface where the related options may get an intuitive way to access.

And then, for really non-visualizable aspects, there always are the settings panels. They aren't quite appealing, they are usually mentally far from what they refer to, but still a means to express preferences. For what's really needed to allow tweaking, it's a good place. And I still haven't said that every imaginable aspect of every non-visualizable behaviour of a program should be made settable. Just to a reasonable extent.

Anyway, let me bring an example. Let's say, I, as a non-novice user, want to explicitely control how much of my bandwidth is committed to different uses. That's a fairly non-visual issue, right? A novice user is probably not really interested in this question, so a good default behaviour should be set for him or her.

But what about making it possible to visualize the currently existing data flows going through my pipe? I am probably interested in the candidates I currently have, so I want to see those, not all possible cases. So, I may get my hands on a list or graph of various current traffic - and I immediately have an intuitive place on the screen to right-click on, get a panel where I can drag a slider or enter a value.

Sure, making possible every such (perhaps considered braindead) case would be an impossible task for the developer. Or more precisely, it would be so if all those would have to be hand-made, one by one. But if I (as an advanced user, not necessarily in a trivial way) could just express to the system that I wanted a list of all the connections currently going through my uplink, grouped e.g. by protocol (a list of objects with various attributes, after all), then the programmer doesn't have to explicitely support this. Hope you get the generic idea behind what I am writing.

And to turn a bit back to my original post, just to emphasize a bit the essence thereof: I haven't intended to propose a better means to handle preferences, just stated that if served in an acceptable form, then migration problems shouldn't be a reason to not allow the user to tweak some aspects s/he may be interested in.

mortee
Sunday, March 16, 2003

Lets not forget that part of the point being made here is that every option you see in the those config tabs is often a setting that the developers could NOT decide on. Thus, they throw it into a config option, and let you decide.

Also, often, a good deal of those tabs are very superficial stuff anyway.

Basically, what is being said is yea, give the person some options, but those options are generally not that important. Changing the background color of ms-word to a deep blue, and the characters to a nice white does NOT really change how ms-word works. It is not big deal, but keeps the user happy!

However, we don’t have any options in word to set the memory and buffer size used. We don’t have those options because the developers were intelligent enough to sit down and figure out what is best for us. Further, those developers write this stuff for a living, and know much better what those settings should be anyway!

Sometimes you can expose some of these options, but in fact make the situation worse. A great example of this is the virtual memory settings in windows. I can’t tell how often I seen some bad tech person change the virtual memory setting from auto to some REAL STUPID setting.

So, much of the point being made here is that often (not always) those config/control panels are results of poor developers, or a team that could not come to a decision about how the system should work.  The real golden rule here is that as a developer you want to make the most sensible decision, but at same time make sure the user is in control.

What do I mean by “in control”, but not too many choices?

In Joel’s interface book he talks about how a nice shopping cart that rolls and turns EXACTLY THE way you want. This is how good software should be. When you turn the cart, it should turn EXACTLY the way you want. You are in control!

However, if upon entering the grocery store you are presented with a list of 20 different types of ball bearings to CHOOSE BEFORE you have to use the shopping cart, then that is stupid. I don’t know if I want stainless steel ball bearings, or carbon Teflon coated ball bearings. I have no clue here. Maybe one ball bearing type is better for carrying real heavy duty cases of Coca-Cola and frozen pizza’s . 

A one day supply of programmers pop and pizza will generally overload and cause damage to a average shopping cart. Perhaps, if the shopping store is smart, they will make a leaky abstraction, and simply ask your profession before you get the shopping cart. At this point, the store would then install the correct type of ball bearings for you!! (all software developers will get pop and pizza ready shopping carts with extra big wheels).

At the end of the day, what I really hope is that the designer of the shopping cart already made the correct decisions for me. They will make a good judgement call as to what kind of ball bearings should be in that cart. This decision may not be the best if you need 20 frozen turkeys (or a 2 hours supply of pop and pizza for some programmers I know!).

I mean, do I really care if ms-word is supposed to use a recursive spell checking routine Vs a binary tree Vs a hash code scheme? A poor software developer will not be able to decide this, and thus give a user all 3 types of options. (on the other hand, if you are selling a legal text search system, then all those options may very well be needed).

Thus, this whole point here is about making intelligent decisions FOR THE user. Thus, we make the users happy by given them some config options, but only fluffy stuff like changing the backdrop color etc. The real meat and potatoes decisions are made by the very good and intelligent developer.

Further, the other main point here is that all of us are willing to give up a slight amount of personalization to our computers in return for a given amount of standardizing (the keyboard example was given).

I for example spent the time to learn how to use the ftp client in IE5 and IE6. It is great to use this ftp client, but it is not as good as the ZILLION ftp clients available on the web. However, my time is simply too valuable these days. By spending the effort to learn the IE ftp client, then EVERY SINGLE computer I walk to now has that ftp client. I never have to install it, and all computers have this ftp client. I hate setting up a computer each time I need ftp access to my server files.

Thus, last but not least, the point here is that you need to make sensible decisions for your users, but allow the advanced users some config abilities. It goes without saying that those advanced features are out of sight and out of mind for most users. There is always the advanced tab!!

Joel’s other book on interface stuff is mostly on line, and is really fabulous. It is where I got the shopping cart reference from.

Check out:
http://www.joelonsoftware.com/uibook/chapters/fog0000000057.html


Albert D. Kallal
Edmonton, Alberta Canada
Kallal@msn.com

Albert D. Kallal
Sunday, March 16, 2003

I TOTALLY agree. I absolutely see the *crucial* importance of developers providing *reasonable* defaults to everything that even can have a default. It is very important to *save* the user the need to make decisions s/he simply doesn't want to make.

I haven't intended to protect developers' inability to make those decisions. If you read through my posts again, you can find out that I stressed the importance of provided defaults.

And I haven't said either that I would like access to things like the used mapping construct in word's spell checker. Those are things that really belong to the developer. I don't have anything to do with them, unless I have to deal with the source code to word.

Again, my intent was to stress a bit on the importance of giving control to the user where s/he may really want it (even at places where an exposed decision opportunity would confuse novice users). So, if I *really* do care, I should be able to ask for a chart that e.g. can hold less, but turns better. Nothing specifically about the ball bearings, just a decision that is relevant to me.

Regarding the IE as FTP client issue: that's also true. You better not set up every simgle computer you have work with just to be able to access your server. But that still doesn't explain why you shouldn't be able to use the best of those zillion other alternative FTP clients on your own home machine. And be honest: *most* of the PC users have to use one or at most two computers, so the way for them to customize the environment may be much more important than to you and to me, who have to deal with a mutitude of boxes sometimes.

mortee
Sunday, March 16, 2003

I bloody hate programs that are not customizable. Basically, I don't use them. Advanced options breaking the interface, that's a misunderstanding. Yes, a novice should not be bothered, I agree. But there should be somwhere there a menu item that sais "preferences" or "advanced preferences". Make it hard to find, it doesn't matter. Keep it out of the way of normal users. It's power users that need it, the ones that now exactly what they want, and are prepared to read some instructions for it. So for them, it's ok to break the metaphor (how poetic...) because they don't need no stinkin' metaphor in the first place. They need just a tool that is as efficient as possible.

Fortunately, some of the big software producers understood that. That's why you can modify the menu and the interface on Word ad nauseum, you can define your own keyboard shortcuts and so on. Some other didn't, which is why in Photoshop you get the colour balance with ctrl-b and ctrl-b only, and there is no way to have a keyboard shortcut for "flatten image".

My two euro-cents.

Dimitri.
Sunday, March 16, 2003

Another reason for preferences is people move from program to program as well as machine to machine. For example, you can set up CorelDraw to use an Illustrator interface/keyboard etc. I think the need for customization comes down to usage pattern - if someone spends 8 hours a day in one program, doing potentially repetitive tasks, you need customizability. Even for just avoiding cts you need it. Floating your prefs around is getting easier too.

Robin Debreuil
Monday, March 17, 2003

I like my advanced preferences.  I really cannot live without them.  Keep them hidden from those that don't need them but I refuse to do with out.

What I would like to see is a method for transporting these preferences about more easily.  Rather than complain that settings should not be altered because they don't transport easily, make them transport easily.  I'm fed up of having to find the settings spread out between the registry, ini files and config files.  I want to save my settings in one simple file that I can then load up on the product where-ever I am.  Then all I have to do is worry about how to transport the file.

Even if several applications do this I can live with this, typically we only have a couple of tools that we *really* use lots anyway.  I will be happy to carry around a disk with my text editor, and the other tools I use.  I already have a cd that I use for the installs for when I move to a new machine, so why not have the config ready too?

Colin Newell
Monday, March 17, 2003

Most grahpics apps allow you to save your preferred work enviroment (eg cwf files in corel), and these can be put on disk, or loaded directly from a url if you like. Usually you don't customize that many things that you would be lost without them, or couldn't just redo a few keyones, but the ones you do change really make a difference. (eg. I started getting cts in my left hand, and mapped, in all apps I use,  F3>copy and F4>paste, and it went away).

Robin Debreuil
Monday, March 17, 2003

I just have to wonder if Joel really works on a workstation that still has menu animations turned on and file extensions turned off...

Philo

Philo
Monday, March 17, 2003

At some point, you might as well give up and have different apps.  Different views into the same data.

Yes, I realize msword controls its output files to lock you in.  That's a disadvantage of using it, no?

Tj
Monday, March 17, 2003

Locking in or not is an upfront business decision, but muscle memory type 'lock in' is inevitable... I'd be more worried about the first day at a new job in a company that used wordPerfect.

Ok, hypothetical example ; ).

Robin Debreuil
Monday, March 17, 2003

Robin, it's better to hold down shift keys with your other hand. For example, to press Ctrl+C, you would hold down Ctrl with your right hand and press C with your left hand. Same for capitals, of course.

Frederik Slijkerman
Monday, March 17, 2003

Good point - thanks for the tip... When it was really flaring I was doing a lot of graphic stuff though, which is pretty much one hand on the mouse at all times. I will try that with typing though, I must admit I almost always capitalize with my left finger (now my left ring finger).

Thanks!

Robin Debreuil
Monday, March 17, 2003

A User Preferences web service might make sense for some software developers.

For example, the Preferences Dialog could have two additional functions:

“Upload my preferences” would ask for a username and password (if the software doesn’t already know them) and then post the preferences to the developer’s server.

“Get my preferences” would ask for the username and password and get the preferences from the server.

This would make life easier for users, encourage them to register and give the developer more insight into what settings the users are choosing.

Rich Fuchs
Monday, March 17, 2003

Wouldn't there be serious security issues with that?

I envision lengthy Slashdot discussions about how they would NEVER trust a company that collected that information and they'd never use the software.

Brent P. Newhall
Monday, March 17, 2003

I think its a great idea...

As far as the slashdork discussion, it would be a long thread on how it is the right of everyone to freely and anonymously have access to whatever property they like (software, mp3s, etc), as long as it isn't their property (email address, viewing habbits). Luckily no one takes those threads seriously.

Robin Debreuil
Tuesday, March 18, 2003

Default and non-customisable preferences can be a pain in the arse. Frankly, I started investigating Linux (way back when) after being confronted with one more Windows dialog box telling me that something I expected to happen was going to happen.

A case in point: Clearcase (source control software) allows you to check in multiple files by selecting them all, the hitting the check-in buttion. So far so good. But the default is not to allow a check-in if the new version is identical to the current version. This is fine with me. What I am not fine with is the fact that each time it finds such a file, it pops up a dialog box, demanding that I hit "OK", once for each file. There is no "yes to all" option. This is pretty f*cking stupid, since my check in will hang until I hit OK, and once everything is checked in, I can still se what needs dealing with (by an undo checkout maybe).

This is just so irritating. I know (from talking to them) that most clearcase developers use clearcase from the command line, so they don't see these problems.

Weep!

treefrog
Tuesday, March 18, 2003

Are you sure you find that irritating?

    Yes          No

Robin Debreuil
Tuesday, March 18, 2003

Is there any attempt being made at standardizing things like user prefs across apps? Would that be practical or technically feasible? I could see it even overlapping into os preferences (like ok/cancel order say), as well as common tasks like 'options' or 'zoom'...

Maybe Java has such a thing happening already that could be used?

Robin Debreuil
Tuesday, March 18, 2003

What preferences would you standardize?

I don't want an e-mail password field showing up in the preferences for my word processor.

Brent P. Newhall
Tuesday, March 18, 2003

I'm thinking more like hotkeys, maybe text/code formatting, hassle levels, and maybe os specific things, where you could say osx, xp etc and at least get behavioural things. Of course it wouldn't cover all of them - maybe that is the problem. Maybe it only works with apps the compete in the same space, which I guess is a non starter then.

There must be some pressure in Java to make things portable in that way though? I can't imagine unix users wanting to use ctrl C to copy all the time...? Even things like global recent files, by file type instead of app, so you could get that last used text file when you move on the network and into a different editor or even different os...

It seems a lot of the settings in any app are similar, but maybe it isn't realistic/useful either.

Robin Debreuil
Tuesday, March 18, 2003

Nothing bugs me more than when settings are hidden under "advanced" menus or dialogs, especially when there are several ways to get to those settings.  Jeez.  On my laptop, finding any particular display setting is like a freaking scavenger hunt.  I'm not an advanced user; I just want to use the TV-out connector.  Bad, bad UI design. 

Here's another one I trip over every day: case-sensitive searching in Windows Explorer is a "More advanced" capability.  Huh? 

Program settings are needed because developers can't predict every user's needs, not because developers can't decide what to implement.  For example, a program might have an option to retry failed internet connections, which is great for most users, but not so great for someone with measured dial-up service.

I agree that all programs should provide useful default settings.  If that isn't possible, then the setup wizard should prompt for the needed information.

I like bloated but carefully organized options dialogs.  Show me the options!

Rob Daugherty
Tuesday, March 18, 2003

>> There must be some pressure in Java to make things portable in that way though?

There's nothing in Java that would make key bindings generally portable.  The platform look-and-feel is responsible for installing some key bindings, like focus-traversal keys, or arrow keys for navigation in tables.  Others, like cut/copy/paste, which probably should be standardized, are left entirely to the application.

Rob Daugherty
Tuesday, March 18, 2003

Robin, the preferences you describe look like standard OS preferences.  Standard keyboard shortcuts (Ctrl S to save your work, Alt F4 to quit a window, etc.), window colors and behavior, and other things like that should be handled by the OS.

Brent P. Newhall
Tuesday, March 18, 2003

Right, but in Java, isn't there a (third party) os detection type package that abstracts that for you? Then, depending on the underlying os, the undo command will swap hotkeys, like language detection swaps strings? Or is that contrary to the goals of java? If there is a standard developing, it might be useful as a base for portable settings.

But yeah, it might sound better on paper than in reality..

Robin Debreuil
Tuesday, March 18, 2003

Maybe as a more specific example I have about 6 apps where I change things like how the braces line up (I like the first one on its own line, others don't). That kind of thing might be something in all editors preferences, that you always set.
tabs or spaces, indent size
autocomplete/syntax coloring prefs
autocorrect/spellcheck word lists
start with new document/last edited/ null...

Robin Debreuil
Tuesday, March 18, 2003

Good defaults for all and prefs for advanced users

This has been mentioned so often that it's absurd, but defaults need to be good.  And they need to be well thought out.  I use GNU/Linux (Gentoo) with Windowmaker and GNUstep...but if you're in Windows or MacOS, open up MS Word.  Look at the default toolbar.  Bad -- bad bad bad.  Firstly, all of those icons are tiny (especially at 1600x1200 resolution).  Secondly, once you get out your magnifying glass to look at those icons, many of them aren't very helpful.  As Joel mentions, why in god's name does the print-preview icon have a magnifying glass?  Shoudn't a magnifying glass be closely associated with the viewing size of the document?  Of course it should.  Also, how many of those icons do you actually use?  Hardly none of them.

I can tell you several ones that need to go off the bad:  print, print preview, save, open, and any other icon that has nothing to do with writing a document and that you will only use maybe once per session.  EVERYONE knows that print is under the file menu.  Ok, maybe newbies don't know this, but are they really going to be helpd out much by teeny tiny icons?  AND, how many times do they print, save, or print-preview a document?  Once per session.  So it doesn't matter if it takes them a few seconds to find these options under File.  However, they're going to be doing alot of copying and pasting, font-changing, text-size changing, and what-not.  So strip it down to the icons most people are going to use for the defaults.  And for god's sake, make the icons bigger.  The bigger and icon, the easier it is to acquire, the easier it is to see, and the faster things get done.

This is what I mean when i say that MS Word has terrible defaults.  It does other evil things like second-guessing the user, as well.  Want to start a sentence without a capital letter?  MS Word doesn't think that's right, so it capitalizes the first letter of every sentence:  particularly annoying if you're writing a scientific paper.  Want to insert a picture and place it somewhere?  I can guarantee you that MS Word is going to fight you...put the picture in one place, and MS Word thinks that that picture would be better off else-where.  It's a miserable mix-mash of WYSIWYG and Billy boy second guessing you.  This is why I use LyX, and not any word-processor (I much prefer having things professionally formatted to be readable off the bad, without having to worry about formatting and what-not).

So the importance of good defaults cannot be over-estimated.  It is all-important, and something that my fellow GNU/Linux lovers all-too frequently ignore when they say "You #$%##^% n00b!  Go RTFM!  And then RTFM some more!"  That's why I loved Joel's section where he says that not only don't users read the manual, but that they can't read the manual.  Good defaults are important, even for power-users.  This is part of why I use as many GNU-step apps as I can:  all of them usually have good defaults, and nice big buttons which make things clear. 

The NeXT-style "BIG BUTTONS" are also my gripe with GNUstep-apps, as they take up alot of space.  I think it would be much better if both the application menu *and* the toolbar were hidden until the user meta/alt-right clicked within the application.  This would save alot of screen-space, and leave more of the screen to the user's work, not tools.  My philosophy is that a good UI should stay out of my way, and be as transparent as possible.  However, this is not something which is a good default.  In fact, it is a terrible default.  Imagine never having used a program before, opening it up, and seeing nothing -- a blank window with a title bar.  Wtf?  Where's the damn menu and toolbar?  So, that's a terrible default.  However, it's a great option to have available to power-users as an possible configuration.  See, if the user actually specifies that the menu and toolbar are to disappear until the user meta/alt-right clicks, then the user won't be confused.  Also, this would place the toolbar and menu at the easiest spot on the screen to click -- where the pointer currently is.  It also saves lots of screen-space.  But it is not something which should be a default by any means...at the very least, the program should open up with the toolbar and menu present, and allow the user to close them and then re-open them at the cursor position by meta/alt-right clicking.

Back to good defaults, what is it with the current trend away from a functional defaults towards pretty eye-candy defaults?  I'm sitting in front of a Win2k public terminal, using Internet Explorer.  This is a nice example, because there are many things right with this interface, and many things wrong with it.  Firstly, it's a huge screen-waster.  About 30% of the screen is wasted by the title bar, file menu, toolbar, web-address bar, links bar, and status-bar.  This is the default.  Firstly, status bar, links bar are useless.  Secondly, the menu section is only ab out 40% of the screen's width...the rest of that line is wasted...naturally, it would make sense to affort me more working space and put the address-bar on the same line as the menu.  Now, the button bar features a back, forward, stop, refresh, home, search, favorites, media, mail, size, and print button.  Which of these buttons are necessary, and which are just wasting space?  Favorites, Media, Mail, and Print are just wasting space.  No one ever uses these buttons, and while a newbie may find Print convenient, (s)he will probably only print once per session, so that's hardly a recurring function.  Just added noise.  Likewise with Media and mail, both of which have little to do with browing the internet.  Then there's Favorites...do you not think it's a little bit retarded to have both a favorites button and a menu-item that says favorites?

Now, let's nit-pick a little bit.  If they're going to have favorites there as an toolbar-button by default, why is the metaphor completely broken?  The favorites icon is a folder with an asterisk on it...how, exactly, does that make you think of cool stuff that you like and want to look at again?  It doesn't.  So what should be there?  Well, the obvious one that comes to my mind is a heart.  Soppy, but effective.

Oh yes, all of the icons have text beneath them, wasting even more screen-space.  If an button needs text beneath it for the user to recognize what it's there for, it wasn't designed effectively.  By putting a label beneath your button which says what it does, you might as well be saying, "my metaphor sucks".  The back, forward, stop, refresh, home, and search icons all have the right metaphor (back/forward arrow, stop-sign, green circling arrows, house,  earth with magnifying glass over it), but the graphically functional part of each button is far too small.  As a final nit-pick, none of these butons actually look like buttons until you move the mouse over them...that's fine if you happen to move your mouse over them, but how is the newbie supposed to know to even move the mouse there in the first place -- they don't look clickable.  A slight 3-dimensional element, either  to the graphic or the square button, would be good. 

Now, I can go to the Tools > Internet Options setting area, and look under the Advanced Tab, which is just an alphabetized catch-all for all of the settings which the programmers didn't feel like sorting out more logically.  How, exactly, is auto-completion an "advanced setting"?  Quite frankly, none of these things should be "advanced settings", not even stuff like SSL and which security protocols to be used (they belong under security).  Yes, I'm well-aware that this is an attempt to hide from the newbie all of those thousand settings (s)he probably isn't going to want to change.  A better way to do that would be to place the less commonly used customization settings in their proper area, but only making them accessible after clicking a button that says something like "Supplemental Settings", or some other indicator that nit-pick setting are ahead if you click on the button.

Of course, as others have mentioned, the customization should not be so divorced from what it's actually customizing.  People should get customization options in right-click context menus whenever they click on a part of the application.  For example, right click on a web-page, and you should also get an option for "customize web-page colors" (e.g., background color, links color, visited links color).

My other gripe is for UI designers to stop making metaphors for everything.  If you can think of a good graphical metaphor which will work (e.g., heart for favorites), then fine, use it.  But not every single operating that a computer can do has a good graphical metaphor, or at least not one that you can think of.  I have yet to see a good graphical metaphor for "hyphenate document", and I can't think of one either.  That doesn't mean that one doesn't exist, but it does mean that unless you can think of one that would make me go -- oh, duh -- upon seeing it and instantly know what it means, you shouldn't have a metaphor for it.  Either have a text button if it's something which you really think should be on the toolbar, or don''t make a button for it at all.

Parting words -- less is more.  A zillion rarely-used icons on the toolbar does not an easy-to-use program make.  5-8 really often used icons on the toolbar, with good graphical metaphors, however, is a start.

dh003i
Tuesday, March 18, 2003

"EVERYONE knows that  ..."
It is always interesting to hear someone claim "it is obvious" or "everybody does this" without any hard data from usability studies to back this up. It is especially funny when their views are cleary very opposite to those of  people that >have< done the hard work of going trough this process to find out the real facts.

Just me (Sir to you)
Wednesday, March 19, 2003

Robin: But I don't want brace-indenting preferences to show up in the preferences for PhotoShop, my FTP client, Lotus Notes, games, web browsers....

Brent P. Newhall
Wednesday, March 19, 2003

---"I'm not an advanced user; I just want to use the TV-out connector"---

On computers "advanced" is code for "leave this alone you'll probably foul up big time". I once spent half an hour trouble shooting a machine that would only boot into safe mode. It was only at the end that I realized what had happened. The machine was booting up fine, what had happened was that somebody had changed the display setting to ones that the monitor couldn't handle so all you got was a blank screen.

Stephen Jones
Wednesday, March 19, 2003

Just me,

I believe that I qualified my statement by saying that newbies don't know that Print is under File.  However, anyone who's used any modern OS for a little while knows that Print is under File.  Why? Because that's the way it is on every program that has a file menu.  I don't need a study to prove the obvious:  I'm not the government, I don't spend billions of dollars to do a study that shows that eating chicken mc-nuggets religiously will make you fat.

But let's take the worst-case scenario -- the newbie.  They don't know that Print is under File.  So what?  Maybe one or two times they look through all the menus trying to find print, which takes a few seconds.  Nothing compared to all the time they waste by not knowing which toolbar-buttons do what because they're so small and have poor metaphors, or mis-clicking them because they're so small.  Oops!  Meant to click copy instead of paste.  Now they've replaced a selection they meant to copy with something they copied previously.  Easy to do because of miniscule buttons.  Guess what, if they're a newbie, it's gonna take them just as long to figure out how to undo that is it would to take them to find the Print under the File Menu.  This problem could be solved by having big clear buttons, which aren't easily mis-clicked.

Any newbie sitting down at MS Word for the first time will promptly be very confused by the vast array of toolbar-buttons.  Even advanced users will be hindered by their smallness and the ocassional mis-click.  90% of them are of no use to the advanced user, because (s)he doesn't use them often enough to instantly know their location without searching around (something not aided by their miniscule size).  As it turns out, the advanced user is usually better suited using context menus and key-combinations to do various tasks.

If you think MS Office is "easy to use", you've obviously been fooled by the great MS hype.  I've edited too many papers by fellow students where they press enter 50 times to start a new page rather than inserting a new page.  Even after I tell visually show them how to do a clean page-break, they continue doing it.  There are even some people who -- rather than using the tab key -- insist on using four spaces to start a new paragraph, because they prefer smaller indentations; rather than setting a custom indent mark.  Easy to use?

dh003i
Wednesday, March 19, 2003

People have problems understanding double clicking.
Most people believe the sun goes round the earth.
Why do you think they will "know" about the print menu always being under file?

Just me (Sir to you)
Thursday, March 20, 2003

Dear dh0003i,
                      I've refuted some of your attacks on Word in another post further up. Here you are again mixing up the occasional valid point with misinterpretations.

                        Firstly I can assure you that the two most useful icons are precisely print and save. At work we have shared offices for two or three lecturers who normally have a PC each. I've set up loads of machines to print through the network from the printer on the other machine in the office and the look of gratitude people have when they find out that to print all they have to do is to click on the print icons needs to be seen to be believed. (of course they will phone back saying it doesn't work because although you tell them they need to turn on the computer the printer is attached to they always do that by pressing the button on the monitor, but that is another story). You have stated you are a student, and doubtless students will open Word normally to write an assignmetn. However in most cases people who open Word don't want to wirte someting; they either want to pritn somehing out, or to save an attachment they have been sent by email to disk. Of all the times I open Word I would say it is only 5% of the time that I write anything.

              The icons are not at all tiny at 800x600, let alone 640x480. When Word 2000 was developed round about 1998 they were the standard resolutions. They still are very common now. When we got a dozen new computers with 17" screens nobody except me, changed the default 800 x600 resolution, and when I changed it for some of the users, half of them changed it right back again.

              And if your fellow students are happy about using enter to make a page break or using the space bar inetead of the tab key, why bother? Many people don't want to be bothered with learing something distracting, just to save a second or two of time. They are more concerned with the content of what they are writing.

Stephen Jones
Thursday, March 20, 2003

dh003i,

Icons can be made larger in Office; right-click and pick Customize.  Outside of specialists (programmers, graphic designers, etc.) I daresay most people these days use 800x600 or less anyway (office workers, secretaries, etc.).  You can also make the icons larger by enabling the text under/around them.  (Tog's usability quiz points out this advantage of selectable text with icons.)  Enabling this text also solves the problem of indeciperable icon pictures, so for these two reasons I'm puzzled at why you rail against the text.  (Perhaps you think any stick is good enough to hit Office with?)  Word and Excel have full-screen mode under the View menu.  IE has full-screen mode too; just hit F11 to toggle.  Most of the wasted space you gripe about in IE is configurable by right-clicking on the toolbars in question.

I find it curious that you think a shortcut to personal ads belongs on the IE toolbar.  Oh, wait, my bad, you said the heart means _Favorites_.  The meaning should have been obvious, so perhaps there's something wrong with me.  In reality no graphical metaphor is obvious.  The letters of the alphabet are not obvious; we have to learn them (and note that some people never do), but fortunately for us the alphabet is standardized.  (Now try figuring out the Japanese or Korean alphabet all by yourself...)  An image of a person in mid-stride and a couple horizontal lines conveys that there's a pedestrian crossing there; even if in Europe the little man is wearing a hat, we still know what it means because the image is standardized with only minor differences.  But even if you can easily disregard minor differences, the original meaning is still only obvious after you learn it.  Just like it's only obvious that Print is under File after you learn it.

MS Word is not easy to use, but no computer program is easy to use when you first learn it.  As for students typing spaces to indent paragraphs and so forth, they'll have trouble with any word processor if they treat it like a typewriter, even a far more powerful and precise word processor like, say, WordPerfect.

Kyralessa
Thursday, March 20, 2003

*  Recent Topics

*  Fog Creek Home