Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10 5/3/83; site ulysses.UUCP Path: utzoo!linus!decvax!harpo!gummo!whuxlb!pyuxll!eisx!npoiv!npois! hogpc!houxm!ihnp4!cbosgd!mhuxi!mhuxa!ulysses!gsp From: g...@ulysses.UUCP Newsgroups: net.cog-eng Subject: User-Friendly Re-Defined Access-Efficient Message-ID: <579@ulysses.UUCP> Date: Sun, 28-Aug-83 13:50:04 EDT Article-I.D.: ulysses.579 Posted: Sun Aug 28 13:50:04 1983 Date-Received: Tue, 30-Aug-83 13:46:30 EDT Organization: Bell Labs, Murray Hill Lines: 84 User-Friendly Re-Considered User-Friendly. We have all used the term and many of us have come to cringe when we hear it. To many inside software development, it means menu after menu of verbose interaction, but to compu-phobics it means much wanted hand-holding. The term has become synonymous with designing for the novice and a selling point for software houses. I have discarded the term because of its negative components: exclusive menu access to resources excessive verbiage in outputs repeated requests for confirmation These are not bad concepts to incorporate into a user-interface, but when they are the ONLY interaction mechanisms, I don't like them, and I think experienced users try to avoid them. It is useful to clarify the purpose of a user-interface. I think: A USER_INTERFACE SHOULD PROVIDE EFFICIENT ACCESS TO RESOURCES. Let me explain this statement in more detail. First, a RESOURCE is any capability provided by a system. It does not have to be a software system, but suppose for now it is. Second, in providing ACCESS to RESOURCES, a user-interface must let people know two things: WHAT RESOURCES EXIST HOW TO USE THE RESOURCES Third, a user-interface should make users efficient by doing two things: LETTING USERS ACT QUICKLY LETTING USERS ACT ACURATELY Despite the simplicity of this definition, it has many implications, especially about so-called "user-friendly" systems. If users do not know what resources are avaiable, it is the obligation of the user-interface to make them aware. Menus can be useful for this purpose. On the other hand, if users are already aware of what is there, menus are a nuisance. If users do not know how to use a resource, some sort of form-filling or syntax-directed editor can be useful. Simliar to menus, if users know how to use a resource, such mechanisms can be more a bother than an aid. Such schemes insure access to resources, but not efficiency for users who know what they are doing. People who claim that because X is bad, the opposite must be good irritate me. Such dogmatism is rooted in ignorance. If you take my definition of user-interface seriously, and I hope you do, you can see user-friendly in a different light. User-interfaces are not supposed to be useful to novices and a hinderance to experts, but are supposed to take all the different types of users into account. They must be verbose when needed, but not otherwise. They must be watchful when needed, but not otherwise. Using my definition of the purpose of a user-interface, let's see how I might design a user-interface. My first concern is that users know about what resources are available. I check their OPTIONS to see if they say they know what is there. (Assume they have somehow set options telling me about themselves.) If they don't know what is there they see a menu, form, or whatever. If they do, they have to initiate the interaction. After I know what they want to do, I check their options to see if they know how to use it. If they do not, I initiate help. Otherwise, they must specify what to do. If self-proclaimed experts decide they need help with some new part of a resource, they should be allowed to get it, using a pop-up menu or some other scheme. They should not be forced into using a system that exclusively uses such verbose forms of cummunication. Conversely, users who have not proclaimed themselves knowledgable should be allowed to escape the clutches of a hand-holding interface. There are many reasons for this, but the most important is that: THERE ARE NO NOVICES AND THERE ARE NO EXPERTS With systems of even moderate complexity, no one is knowledgable with all aspects of the system. With parts of the system that I am knowledgable, I want a terse system, but with parts I am not, I may want some help. It's really that simple: A USER-INTERFACE SHOULD GIVE HELP WHEN AND ONLY WHEN IT IS NEEDED I think the term "user'friendly" has developed ill feelings because of the presumption by some implementers that talkative caretaking menu systems are what EVERYBODY wants. They are not what ANYBODY wants, not all the time. I have changed to the term "access-efficient" to describe "good" user-interfaces because it is more descriptive of what I think user-interfaces should accomplish. Gary Perlman BTL MH 5D-105 (201) 582-3624 ulysses!gsp
Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!linus!decvax!ittvax!wex From: w...@ittvax.UUCP (Alan Wexelblat) Newsgroups: net.cog-eng Subject: Re: User-Friendly Re-Defined Access-Efficient Message-ID: <976@ittvax.UUCP> Date: Tue, 30-Aug-83 09:31:13 EDT Article-I.D.: ittvax.976 Posted: Tue Aug 30 09:31:13 1983 Date-Received: Wed, 31-Aug-83 12:50:05 EDT References: ulysses.579 Lines: 35 I think Gary Perelman has an excellent set of ideas, but I see two problems with his multi-functional schema: 1) Cost in programmer time. There are an awful lot of "hooks" involved in writing code with pop-up menus and many-layered HELP systems. Mind you, I'm not saying that these are bad things in and of themselves, but I'm trying to point out that they'll end up costing the system user a lot of $$ in programmers' and debuggers' salaries. If you automatically design this much complexity into systems, you may end up pricing yourself out of most people's markets (look at the Xerox workstations for an excellent example: the Dorado (?) is amazing in terms of its abilities, but it costs $140,000!) 2) Cost in machine space/time. It's true that machines are getting faster and faster, and that memory is getting cheaper and cheaper. But you can still easily over-design for the space and speed of the machine that you're building on. Heck, our VAX experiences significant slowdown in the presence of three or four TROFF jobs! If you have a user group using this complex multi-functional system, it's entirely possible that you'll end up with a too-slow response or a too-large demand on your customer's machine. Moral: don't over-generalize. When you're building a system, get an idea of the people who will be using it, the equipment they'll be using it on, and so forth. Then design in as much 'human factors' as you think necessary. A shop of UN*X hackers won't care about the same things a brokerage house would. And (this is for you, Laura) don't let the customers tell you how to build your product! You're the programmer. You can listen to their suggestions, but if you let them dictate HOW you build your system, then you're doing a poor job. Yes, I know this really isn't a solution, but I doubt you're going to be able to concoct a good, general solution. The best you can do is set up guidelines which can be loosely followed. Sorry to pontificate so much. --Alan Wexelblat decvax!ittvax!wex (soon to be decvax!ucbvax!wex.UPenn@UDel-Relay)
Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10 5/3/83; site umcp-cs.UUCP Path: utzoo!linus!decvax!harpo!seismo!rlgvax!cvl!umcp-cs!chris From: ch...@umcp-cs.UUCP Newsgroups: net.cog-eng Subject: Re: User-Friendly Re-Defined Access-Efficient Message-ID: <2259@umcp-cs.UUCP> Date: Tue, 30-Aug-83 22:27:23 EDT Article-I.D.: umcp-cs.2259 Posted: Tue Aug 30 22:27:23 1983 Date-Received: Thu, 1-Sep-83 04:04:55 EDT References: ulysses.579, <976@ittvax.UUCP> Organization: Univ. of Maryland, Computer Science Dept. Lines: 38 From: w...@ittvax.UUCP (Alan Wexelblat) I think Gary Perelman has an excellent set of ideas, but I see two problems with his multi-functional schema: 1) Cost in programmer time. There are an awful lot of "hooks" involved in writing code with pop-up menus and many-layered HELP systems. That's what libraries are good for! (What else would the author of the Maryland window library say?) With some reasonable datastructures, pop-up menus and such are actually quite simple once someone's done the work once. Jim Lyle has written a menu package that sits on top of my windows; it does most anything a programmer might want to do with menus, including side-by-side display, "masked select", . . . Now, we haven't even started working on "novice/expert/casual_user" systems here, though. 2) Cost in machine space/time. . . . Heck, our VAX experiences significant slowdown in the presence of three or four TROFF jobs! True, although your example isn't a particularly good one. TROFF leans heavily on the time side of the time/space tradeoff. There are *so* many things in there I wanted to rewrite, when I realized what they were doing! (A quick profile showed that for an 80K document, one routine was called over 300,000 times! I quickly made a macro for the push-back character part of that.) In short (one sentence short), yes, you have a point, but I think we've already got the machine- and software-tool power to make building easy-to-use systems easy. -- In-Real-Life: Chris Torek, Univ of MD Comp Sci UUCP: {seismo,allegra,brl-bmd}!umcp-cs!chris CSNet: chris@umcp-cs ARPA: chris.umcp-cs@UDel-Relay
Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10 5/3/83; site ulysses.UUCP Path: utzoo!linus!decvax!harpo!eagle!mhuxt!mhuxi!mhuxa!ulysses!gsp From: g...@ulysses.UUCP Newsgroups: net.cog-eng Subject: Re: User-Friendly Re-Defined Access-Efficient Message-ID: <590@ulysses.UUCP> Date: Wed, 31-Aug-83 22:30:52 EDT Article-I.D.: ulysses.590 Posted: Wed Aug 31 22:30:52 1983 Date-Received: Thu, 1-Sep-83 10:11:24 EDT References: <976@ittvax.UUCP> Organization: Bell Labs, Murray Hill Lines: 107 Alan Wexelblat (decvax!ittvax!wex) has genuine concerns about programmer investments and run-time efficiency, but he has put forth the programmers' "party line" that we have heard for years. His ideas are plain wrong, and I think dangerous. I will summarize his ideas, explain why they are wrong, and provide a solution. His first idea is that my last name is spelled Perelman. It is Perlman. His two problems with the concept of "access efficient" software (my backlash at "user friendly") follow. My comments are indented. (1) Programmer time: It takes a lot to put pop-up menus (etc.) into programs, and this will cost money for end-users. This is wrong on two counts. First, if programmers were given good tools to build user interfaces, having a pop-up menu would be no more time consuming than using printf to prompt for input. Because of the lack of good tools, I have worked on the Interface Arsenal, a set of C libraries for developing user interfaces (presented at the last USENIX). Second, programmer time is a negligable investment compared to fixed costs like equipment and risks like marketing. I should point out that one of the major programming investments in the Interface Arsenal has been to make it easy for PROGRAMMERS to program user-interfaces. Of course, these tools are supposed to make the programs easy to use by USERS. The point is that good tools can do powerful things with little effort; that is why we build libraries. 2) Cost in machine space/time. Having all this fancy software will slow our machines. There is some truth to this, but it is not reason enough to throw away the idea of building good user-interfaces. Two points: First, much user-interface software is poorly written (it is often done by well meaning psychologists who don't know about program efficiency). Huge imporvments in most programs are possible. Second, user-interface software is io intensive, not compute bound (typically), and so does not necessarily slow down a system. It usually does not slow down a user as most processors are fast enough to keep up with user reading and typing speeds. Moral: don't over-generalize. When you're building a system, get an idea of the people who will be using it, the equipment they'll be using it on, and so forth. Then design in as much 'human factors' as you think necessary. A shop of UN*X hackers won't care about the same things a brokerage house would. And (this is for you, Laura) don't let the customers tell you how to build your product! You're the programmer. You can listen to their suggestions, but if you let them dictate HOW you build your system, you're doing a poor job. Knowing your end-user population is highly desirable, but designing exclusively for "what you think they are" can get you into trouble. You may find your programs used by people you never anticipated, and they will have troubles if you did not provide a general solution. Then people like Don Norman will write nasty articles about you in Datamation. Knowing the equipment they will be using is a similar problem. If you design for systems like 1200 baud dumb terminals, you may find your software is outgrown. Certainly fancy things can be done on fancy terminals, and trying to do them on dumb terminals is a mistake. While a menu might be good at 9600 baud, it might be a nuisance at 1200 or, ugh, 300. By developing user-efficient software, I really mean it has to bee efficient for the users' time, so in many cases, the software must be baudrate/terminal/etc. sensitive. To design for one hardware configuration is wrong in most cases (that means for a blit as well as for a printer). Designing adaptable software is harder, but with libraries, it can be done. Look at termcap (forget curses for now) for terminal independence! Years ago, people would have said, "It can't be done. I won't listen. Look, I'm blocking my ears." Shortsighted. We must have vision and hope. Telling a programmer to "design in as much human factors as you think necessary" is like telling soldiers to exercise as much force as is necessary, except in the opposite direction. Programmers do not know best. It is just that simple. I'm not saying psychologists do, nor end-users, but I put most programmers just above marketing types when it comes to insight in these areas. When I program, I lose track of many objectives and need outside criticism to get a clear view. I think everyone does. Don't forget that UN*X hackers and brokers are all people who have similar cognitive limitations. To say they are completely different (X doesn't care about what Y wants) is shortsighted. That last part about not listening to customers is also shortsighted and a huge overgeneralization. I don't like to shoot down what people say, but that article was rediculous. I would not have cared, except that his ideas are dangerous, of the bipolar type I have argued against. You can't get up on a pedestal and shout out ideas without weighing all sides. Developing user-interfaces is a complex balence between user AND programmer AND hardware limitations. What must be done is: IDENTIFY WHAT MUST BE DONE AND WORK TOWARD IT I do not like to find myself in the company of people who say "can't." Yes, I know this really isn't a solution, but I doubt you're going to be able to concoct a good, general solution. The best you can do is set up guidelines which can be loosely followed. Ugh! Gary Perlman BTL MH 5D-105 (201) 582-3624 ulysses!gsp
Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!linus!decvax!ittvax!wex From: w...@ittvax.UUCP (Alan Wexelblat) Newsgroups: net.cog-eng Subject: Re: User-Friendly Re-Defined Access-Efficient Message-ID: <985@ittvax.UUCP> Date: Thu, 1-Sep-83 09:20:30 EDT Article-I.D.: ittvax.985 Posted: Thu Sep 1 09:20:30 1983 Date-Received: Thu, 1-Sep-83 17:08:04 EDT References: <976@ittvax.UUCP> ulysses.590 Lines: 43 Hmmm. First, Gary, let me apologize for misspelling your last name. I hate it when people goof mine, and I'm sorry I wasn't more careful with yours. Second, let me explain where I'm coming from. I agree that I overgeneralized. That's wrong in itself. But most of my experience in interface design hasn't been on nice powerful UN*X machines, with libraries and directory trees and tools galore. Most of the businesses that I'm familiar with are at the level of a PC or two, or perhaps slightly above. I'm lucky if I have a Pascal to work with. If I'm really unlucky, I'm stuck trying to customize/improve something that someone else has written, in assembler or (YEECH -- are you listening, Mr Pournelle?) BASIC. On machines like these, space and speed definitely ARE factors to be considered. Furthermore, most of the companies I'm doing this work for are only going to use it in-house; so, the cost of my time is quite significant. Also, they're not likely to upgrade equipment all that fast (they usually don't need it, or can't afford it). I think this is a significant problem. Look at how many businesses own PC's vs how many own VAXEN. Just because they have a micro is no reason for them to have a bad user interface, but there's a limit to what I can do, given that it is a micro. And this problem is going to get bigger, not go away. Lastly, I want to defend my statements on the programmer as human-factors designer. I'm sorry if I over-generalized, but I'll bet dollars to doughnuts that I know better than the customer HOW to build a user interface. I need to hear suggestions and criticism about WHAT goes into the interface, but the methods should be left to the programmer. Of course, there are exceptions. If I build something and the customer says "I hate it; it's hard to use," then I've failed and should redo it. No doubt about that. But far more often, the customer insists on "a menu system," or something (as in Laura's example) that is really counter-productive. If the programmer does not talk the customer out of such ideas, then s/he is not doing the job properly. Maybe you're right. Maybe the average programmer does build lousy interfaces. In that case, I apolgize again, since I put a "we" where I meant to put "I". I think I design good systems, and the people I have worked for seem pleased by them. --Alan Wexelblat (until 9/2: decvax!ittvax!wex) (after 9/12: ucbvax!wex.UPenn@UDel-Relay)