Making Considerate Software

I'm currently re-reading the book About Face. I hadn't revisited this book since I bought the original version way back in 1995. The update, which was published in 2003, is a significant overhaul – and frankly much better than the original. Adding the second author, Robert Reimann, was a smart move. Alan Cooper is a usability legend, but he can be bombastic and overbearing at times. Having another viewpoint in the book helps moderate and refine the message. (Since this was written, About Face 3.0 was released, with yet another author added to the mix.)


This is a companion discussion topic for the original blog entry at: http://www.codinghorror.com/blog/2006/03/making-considerate-software.html

Those are very good, but keep in mind that even though automated systems have downfalls, there are reasons to have them over manual systems. Number 13, bending rules, is a big reason for automated systems. What happens when the invoice information is populated, but the customer information is never filled in because the clerk forgot?

We have two sides to a bunch of those items listed. Taking those points to heart when designing systems will ultimately help out though. Where you can help the user, do it.

That’s true, but most software doesn’t even try to do this stuff.

It says: “We don’t need to see information about the computer’s data transfer rates…”

That has actually helped me numerous times. For example just this weekend I was downloading something and the data rate was quite a bit lower than normal. Had I not seen the data rate, I wouldn’t have noticed (it was a big file that was going to take a while regardless of data rate). But seeing it, I immediately stopped the download, figured out that by moving the computer earlier that day it was now at the edge of the wireless network’s range, and I was able to fix the problem immediately. Had it not shown me the data rate, it probably would have lead to other network failures that I would have thought were for some other reason, and would have wasted a lot of time trying to fix.

And not to pick nits, but when I try to enter comments from within my news reader, neither “Yes” nor “No” is selected for “Remember personal info?” Shouldn’t considerate software select “No” by default (which seems to be the case if you don’t select either of them anyway)?

I remember when the original version of this list appeared years ago in an late-1990’s issue of Visual Basic Programmer’s Journal. I think it was called “Polite Software.” I remember two things from that time:

First, I remember that this polite software idea really resonated with me, and changed the way I designed user interfaces, error messages, etc. from that day forward.

The second thing I remember is in the following month’s issue of the magazine a letter writer had written in a scathing letter stating that he thought that polite software was the dumbest idea anyone had ever come up with. I remember being stunned by this reaction.

Dan

Had I not seen the data rate, I wouldn’t have noticed

You don’t want to see the data rate-- you want to see how long it will take the transfer to complete.

Eg, “3 hours remaining” is more informative to the user than “transfer rate is currently 3.21 bytes per second, 232,111 of 45,782,100 bytes transferred”.

The problem with that is that you often can’t trust the software, I can usually make better predictions about completion time than the software can.

Brian in #1 said it perfectly.

I would like to add, as a Programmer, none of these points really phased me. I usually use software which has such shortcomings and it hardly bothers me.

However, I can see the need for them in a ‘normal’ user scenario.

It’s almost like we need two sides to a program to satisfy both parties. A rigid, almost zombie-like side to satisfy the logic that Programmers see, and a flexible, adaptive side to satisfy the natural behavior of a real user.

I can usually make better predictions about completion time than the software can

So you’re a better computer than… the computer? What’s the square root of 1744, then? :wink:

http://www.google.com/search?q=square+root+of+1744

I worry that some of these result in horrid software to use - the “Considerate software anticipates needs” resulted in bandwidth hogging and other problems when Firefox impleplented link prefetching as suggested here.

You have a contradiction in the examples for conscientious and doesn’t burden. Software shouldn’t just silently overwrite, but it shouldn’t ask either. So you prefer the “make up a filename and put the file somewhere the user will never find it” approach? Or perhaps “put the new name and location in the status bar for a few seconds” to fulfil “keeps you informed”?

I dunno, I most of those I see as “useful to think about” rather than “guidelines” or “rules”. perhaps I’ve suffered too much at the hands of software that was written as suggested here.

And can you please fix the stupid “you must enter text with an @ and a . in the email address field” thing? Either demand registration or drop the extra typing.

So you’re a better computer than… the computer?

Well maybe not :slight_smile: but I’m sure we’ve all seen progress bars that guess “9 hours” when you know it’s only going to take twenty minutes

“You have a contradiction in the examples for conscientious and doesn’t burden. Software shouldn’t just silently overwrite, but it shouldn’t ask either. So you prefer the “make up a filename and put the file somewhere the user will never find it” approach? Or perhaps “put the new name and location in the status bar for a few seconds” to fulfil “keeps you informed”?”

I prefer the “no files” approach. Just information that I can search the content for. It’s possible, it’s just alot of work. But it’s not far off.

I remember reading this once upon a time, glad you posted it for a much-needed reminder.

Personally I’ve shortened those ideas into my one rule of usability: Design it for my mother. My mother calls me with dread and a “I feel stupid” tone to her voice whenever her computer is upset about something. She is not stupid but a lot of applications make her feel that way when they give her a cryptic or worthless message and then make her decide something.

Like this one, “Application svchost.dll is trying to access the internet, allow it?” Great, just how is my mom supposed to know that she can go ahead and allow that? Where even is the link to the information so she can make an informed decision?

I know there are a few times I’ve been on the edge of letting a weak error message slide but then I think of mom and I make that extra effort because if my mom can’t make sense of it no way a manager can :slight_smile:

but I’m sure we’ve all seen progress bars that guess “9 hours” when you know it’s only going to take twenty minutes

My guess is most of that comes from lazy programmers. Instead of calculating the remaining time based on the actual transfer, they use a base value. And if your network/transfer rates are different, the estimated time is wrong.

About saving, how about a dialog box allowing entry of a filename if a file with the same name already exists?

Filesystems Aren’t a Feature:

http://www.codinghorror.com/blog/archives/000461.html

“This discussion is not theoretical: on the SwyftWare and Canon Cat products, the elimination of file names, directories, and the various mechanisms usually provided for manipulating them proved one of their most successful features.”

Brian (#1) wrote: “What happens when the invoice information is populated, but the customer information is never filled in because the clerk forgot?”

That was addressed in point #2: “Considerate software is deferential.”

I think that’s the most important point in the book. It’s /my/ job and I know what I’m doing. The computer may make me more aware of what I’m doing, but it shouldn’t tell me what to do.

I’m a Jedi Master. My software is R2D2.

Patrick

But R2D2 can’t even talk ‘Basic’ (English for you non star wars types), so where is the consideration there? I understand that people are smarter than computers. I support the fact that users need to do things that were not originally thought of when the software was developed. What I don’t support is the notion that our software has to work like paper. Paper has the ultimate flexibility, and with that, comes the most opportunity for errors.