What Makes a Good UI?
OSXCPA asks: "While there are plenty of OS business apps from accounting to ERP, they seem to share a common failing with "commercial" software - the user interface is terrible! Has anyone seen an application that has a UI that made you sit up and stare in amazement at the simplicity and effectiveness of it? For the techno-elite, drooly-gui may not be a priority, but I am working on a project (OS) where I have to show real savings (in task performance time and reduced data entry error) on a specialized accounting system via better UI. Am looking for some inspiration. Any ideas? Projects? Books?"
Make a program that even one dummy could use and only dummies will use it!
It is not easy to create a software that is fully functional and intuitive at the same time. If you are searching for ERP, my bet is Navision. [currently Microsoft Business Solutions - Navision]
- Ability to manipulate data by dragging the category tiles around
- Formulae written in a reasonable facsimile of English
- Automatic identification of cell data collision
- Pretty simple scripting language
From 1992-1996, it was the only "spreadsheet" I would use. Too bad it could not migrate past Windows 3.1.Right on many counts.
Anyone trying design a user interface will probably come to the conclusion that no interface will suffice and that the fundamental problem is that the users themselves are inconsistent.
If you start from low expectations on that count, then count as a success anytime you get a user that does not complain about the UI you present to them.
The ingredients are all easy to say and hard to do. Make the interface intuitive, simple at the beginning, with a smooth monotonic learning curve, with the tasks that need to be done most easy to learn to do and, once learned, easy to do on a routine basis.
It's funny, though, the "File" "Edit" "View" labels on many applications are little more than abstract place holders for things I know I want to do from previous trial and error. They might as well be labeled "Category 1", "Category 2", etc.
"Provided by the management for your protection."
A good UI is one that does not cause to you sit up and take notice at all. A good UI is one that lets you sit back and get your work done, without making/allowing mistakes, without making you do anything repetitive, allows fast work, and all this without getting in your way.
Now creating this interface is often difficult. It is worse because sometimes the best UI for novices is different from the best one for experts. A novice needs a easy to learn interface, while the expert already knows it and just wants something that gets the work done fast.
Example: An accountant needs more power from from an accounting package than the average Joe. (yet the average Joe needs to send everything to an accountant once in a while!) "Joe" doesn't know how double entry bookkeeping works, and shouldn't have to learn. The accountant needs to know and use it.
- Go to MS Word(just about any version)
- choose Format->Font menu
- On the font tab, click the checkbox for "All Caps"
- Now, click on the checkbox "Small Caps"
Did you notice what happened? The "All Caps" checkbox disappeared! Why? Because "All Caps" and "Small Caps" are mutually exclusive! That means you should have them as radio buttons, not checkboxes! Checkboxes are for when you can have multiple options at once!That is poor UI design! Very inconsistant with the rest of the world.
Vim isnt modal. It ahs one mode: command mode. You enter text by postfixing the 'i' command with your text and then ESC to finish the 'i' command. Simpel as tath.
I may be particularly dense, but I've concluded that Eclipse isn't the answer (otherwise, why was Penumbra developed ? (careful, thats pdf)
While I appreciate IBM's contribution to FOSS, and its an OK Java IDE, morphing it into a general purpose UI for general users is probably expecting too much.
I'd start with a set of simple web pages, and maybe upgrade to either VB, python/tkinter, or Perl/Tk (maybe wxPython if you must have that fancy chrome) only if you can't convey the functionality in some simple HTML + CSS + JavaScript.
007: "Who are you?"
Pussy: "My name is Pussy Galore."
007: "I must be dreaming..."
Agree very much. Specially point 2.
Another one is to get rules about data documented, and keep on asking, when they say "and then I know that this record is bogus, so I ignore it"
In short, if you are trying to improve efficiency, then your human is your weakest link and your job is to minimize your human's input into the system. Whittle down their input to the bare minimum that cannot be accomplished by the computer itself, and then do the rest for them.
Spoken like a true non-user. The human is not the weakest link, the human is the one getting the job done. The machine is there to serve the user, not vice versa. If the user's needs are to have two buttons to click repeatedly, George Jetson style, throughout the day then that's the interface you need (I do a lot of manual QA stuff that's exactly like that). If the user needs a thousand knobs and dials, then you need to figure out how to organize those knobs and dials. It's not your job to tell the user to get out of the way and not worry their pretty little head while the computer works its magic.
I can't even get the engineers here to design a George Jetson interface properly. You'd think the button that everyone pushes literally several hundred times a day would be one they could make a little bigger, right? Nope, the point of the whole app is apparently about precise aim, not productivity.
I am no longer wasting my time with slashdot
Oh, I wouldn't say that's true at all. I think that by eliminating the redundancies, wait periods and other spaces were error creeps in, you free up the more important resource - human expertise - to be applied the way that it should. QA is a great example. If because of all the manual effort that you have to do you can only properly QA 10 bugs a day, but by optimizing some of those areas I can get you up to 30 bugs a day, didn't I just make you better at your job? I didn't lessen the value of properly QAing the system, nor did I lessen your input into finding and fixing bugs. I just made the system more efficient for you to do it in.
I didnt say the human is the weakest link. I said the human is the least efficient part of the system. If you need a thousand knobs and dials then I don't want to take those away from you. But if I discover that 90% of the time you're only using 3 of those knobs and the other 997 are for very rare circumstances, you can bet that I'm gonna move them to another page. Otherwise there is a portion of your time spent scanning for the right button out of a thousand, and a portion of time spent in error, which does not need to happen.
www.HearMySoulSpeak.com
When you start the application, or create a new entry, the cursor should automatically show up in the first field. Then once you start typing, the focus should never jump to another field mid-word.
Aside from the security issues, this is why I can't use IE.
From Jef: "For example, which of the following takes less time? Heating water in a microwave for one minute and ten seconds or heating it for one minute and eleven seconds?
"From the standpoint of the microwave, one minute and ten seconds is the obviously correct answer. From the standpoint of the user of the microwave, one minute and eleven seconds is faster. Why? Because in the first case, the user must press the one key twice, then visually locate the zero key, move the finger into place over it, and press it once. In the second case, the user just presses the same key-the one key-three times. It typically takes more than one second to acquire the zero key. Hence, the water is heated faster when it is "cooked" longer."
I read this a few years ago and I've always disagreed with this for a couple reasons. First and foremost, I can punch in '1-1-0-start' just about as fast as I can punch in '1-1-1-start.' It certainly doesn't take one whole second longer. (Most people can comfortably enter a memorized 7-digit phone number in less than 2 seconds. Try it yourself.) So the argument is wrong to begin with. Furthermore, even if it were right, it would only be right in that one case--at 2:22, or 3:33, or 4:44, even the lamest 1-button-per-second microwave button poker would start to notice a net loss. So when used as a general rule, it fails again.
Secondly, most people have a natural understanding of 1 minute and ten seconds. It's what they want, so it takes almost no mental effort to plug in '1-1-0' when you're thinking "a minute ten." It would probably take most people longer to think "OK, I want to cook this for a minute and ten seconds, but is there a clever way I can save a bit of finger movement?"* Until you learn the trick and get into the habbit of using it, it won't save you much. I used microwaves for over a decade and always entered the exact time I wanted without much thought.
My wife got me into the habbit of rounding up to the next closest duplicate number--i.e., 33 seconds instead of 30. I admit I do use it, but mostly for yet another reason--because speed is not important. Rarely do I stand by the door waiting for the instant my food is ready. I press a couple buttons, start getting my milk or whatever else I'm having, hear the food beep, and take it out whenever I get around to it. So, ironically, when I use the Jef method of time-saving, it's when I am not looking to save time.
Thirdly, if you want to be really clever, a minute and ten seconds could be more simply expressed as 70 seconds. OMFG Jef that's one whole less digit!!!11 (Of course, that only works up to 99 seconds.)
* and that is, in fact, the whole point of why Jef used this example--to make the computer do the thinking, not the user. His point is good but his example is bad. But overall, there's lots of good info all over his site. His site and Joel's (joelonsoftware.com) are two of the best.
Dear Slashdot: next time you want to mess with the site, add a rich-text editor for comments.
I think we're actually in violent agreement here: When the interface gets in the way instead of helping, you lose efficiency. By being the most critical component of productivity, that productivity gets lost if the human isn't served by a proper interface. I sort of made a knee-jerk response to the perceived attitude that "dumbed down" is somehow better. Unfortunately, I do actually get to see that philosophy in action fairly often, and often it's hidden behind neologisms like YAGNI (You Ain't Gonna Need It -- a glib way of dismissing requirements used by the exponents of a methodology that pretends to be responsive to them)
I am no longer wasting my time with slashdot
UI's that expose all the capabilities of a system. This is not good UI design, in fact it is lazy UI design.
:-)
A UI that doesn't let you access all the capabilities of a system is a broken UI. Think about it. If I write a program that can sort a list of numbers in either ascending or descending order, but only provide an interface allowing an ascending sort, what the heck was I doing coding the descending code in the first place?
This doesn't mean that the main screen of the UI needs to access secondary and tertiary functionality, but you need to provide some interface for the user to all the functionality.
Beware of allowing users to customize...
Customization is necessary for most ERPs, simply because no two enterprises have the same needs. If I have been using 9 digit SKUs for the last twenty years, and your software only allows 7 digit SKUs, then your software is going to cause me problems. I've actually encountered this exact scenario at work, where we have one database whose sole purpose is to translate old part numbers into the new part numbers used by our new inventory control system.
More generally, some level of customization is necessary for ALL software simply because no two users are alike. That doesn't mean you have twenty pages in a tabbed dialog for all the little tiny tweaks a user can do. Rather it means that the software has to be flexible enough to accomodate more than the mythical average user.
Don't be afraid of busy screens...
I've seen your screens. And I want to scream every time. While I do want all related necessary information on the same screen, I don't want ALL information on that screen. Based on some screens I've seen, it's almost like some developers have never heard of the "next" button, or expect you to have 1280x3076 monitor.
Dialog design is like writing. As a famous essayist once told me, the key to good writing is to take as much away as you can. Ditto for dialogs. Take away as much as you can. This doesn't preclude "advanced" buttons or multi-paged dialogs, of course.
Keyboard shortcuts, labeled and encouraged.
I absolutely agree. There is this CAD I use that only has keyboard shortcuts for the most common actions, with no way to customize [!] additional shortcuts. The more I improve using this CAD the more frustrated I get with this lack of functionality.
I also agree with your last two points as well. That's three out of six, so I guess that makes one of us only half right
Don't blame me, I didn't vote for either of them!
Yes, I make a habit of stopping by the manufacturing floor to see how the guys are doing and if there is anything that annoys them or something that they wish worked differently.
If I don't stop by, they never approach me with requests, but when I actively seek them out, I get feedback about changing a comment, making a test longer, shorter, bigger buttons, etc.
I am fortunate to be able to do this I think, because my boss doesn't really know what I am doing, so I can take time to learn PHP/mySQL and add new features and apps to our corporate intranet to improve productivity, in a relatively short period of time, but lots of other guys figure they don't have time to do it, and so nothing ever gets any better.
Iwasn't trying to disagree with you. I was merely pointing out an example of what I considered (and thought you would also) of a positive example of hiding functionality.
Here's a more direct one: In a similiar vein the group responsible for developing the UI for a higher resolution printer was working on a windows driver and the corresponding application. They exposed every single Windows option for font control. I can't remember all of them now but there are many choices that you certainly don't even get in Word. This interface terrified and overwhelmed users (fortunately it was only an alpha). But the developer couldn't see it. 'If they can't understand it, they should take the time to learn it.' For the labels these operators were creating, they simply did not need these functions. We cut out most of the choices (and made the remaining ones much more intuitive). Industrial UI is all about speed, clarity and easing the frustration factor. Line operators have twenty things they are watching and setting up. Learning how to anamorphically resize print is a ridiculous waste of time.
It's not that they would never use it, it's that it would cause only trouble - "My print keeps changing in size - it spreads out'. Well, spreading print can be caused by mechanical problems, product handling problems, and by electrical problems. We would end up with a $125/hour service call (or one we eat under warranty) because someone on a different shift accidently created a format with some weird spread out font. I RAN service. I would bet my last Lorna Doone that this would be responsible for unnecessary service calls much more often than it would actually benefit someone.