Irritating User Interface design

I design embedded systems. These are the tiny computers that run pretty much everything these days. Often times (although, not always), they will need to interact with humans through some type of display and input devices, like buttons or touch screens. I try to make my devices easy to use and logical in their operation, and as non-irritating as possible. So, when I see devices that are widely deployed (hence, big budget) that have stupid UI bugs, it makes me a bit crazy. Here are two examples:

  1. I go up to the gas pump, and the first item on the screen is a payment-type choice: 1 for Credit, 2 for Debit.
    I choose 1.
  2. The next screen asks me insert my credit card, and I do so.
    This takes me to…
  3. A screen that says “1: Credit, 2: Debit”
    :smack:
    I mean… Really - didn’t anyone even test the UI before it shipped?

#2
I often see credit card acceptors that have both a keypad and a touchscreen. It seems that the UI was designed by different teams, because there are often cases where a sequence of touch-driven events will then ask for a yes/no answer that only works from the hard buttons. It confuses me every time, and it’s obvious from the cashier’s reaction that every single person has the same problem.

Anyone else have stories of flawed UI design?

Before reading your examples, my first thought was “gas pumps”. The only thing more annoying than the ludicrous UIs are the annoying commercials blasting away at me from tiny TVs on the pump.

Websites that give you three fields for your phone number, but don’t automatically tab to the next one. :mad:

Haven’t tried this, but probably worth a shot.

Or websites on mobile that don’t switch to the numeric keypad for these fields (and zip codes, etc.).

Or websites that let you begin typing in the name of your state and then take you to the first one that matches the first letter, requiring you to move over to the scroll bar and scroll down to the state you want. Occasionally I will find a well-designed site that lets me type TEX and takes me to Texas, but that’s rare. TE usually gives me Tennessee and then I have to scroll.

I always grumble when I am asked to input my zip code and THEN asked my state. Can’t the program deduce it from my initial zip code input?

Time Warner Cable phone system annoys me to no end,

First, they detect the phone number I’m calling from and ask me if that’s the number I’m calling about, or a different one. If different, they ask me to type that in. Fine.

Then, after navigating the system, the first thing the person asks when they get my call is…what’s my phone number. WTF???

Why doesn’t their system just forward my number to the person who takes the call?

POS systems in general seem to be designed by people who have never bought something in their entire life.

Loves makes you press PROCEED before being able to do anything. Why?
Some cheerfully say to swipe your card on the POS display, but until the cashier hits some magic button, it’s wasted effort.
The robot check stand asks if you’re using debit or credit. Make a selection. Swipe your card. “Enter PIN or press Cancel for Credit” Do I really need two spots to pick that?
Enter cashback amount - various dollar amounts are in green buttons. The option for no cash back is on a green button. Cancel is on a red button. Care to guess how many people cancel?

Usually, you can just press T repeatedly and it will cycle through the entries that start with that letter. I live in Canada and, on most Web sites, I have to press C three times, to bypass Cambodia and Cameroon.

Stupid Autocorrect behaviour using Microsoft Edge on Windows 10 tablet (should be about as integrated as can be)

I start typing *d o e s n *
The autocorrect suggests doesn’t
I tap the suggestion (because it’s easier than finding the apostrophe)
My typed input changes to doesndoesn’t

That’s a fairly boring example, but if I forget it does this, and don’t notice what’s being entered in the field, I end up doing it for many, and longer words in the sentence - II’m gogoing to buy sosome chocochocolate tomotomorrow

a nearby city (Royal Oak) got rid of the individual parking meters for municipal parking lots, and put in kiosks at walk-out points instead. you’re supposed to type in your license plate # and then pay for however long you planned to be there.

it was the most goddamn infuriating thing to try to use to the point that 10 seconds in I found myself wishing for a hammer.

No. Because at least one zip code straddles a state boundary.

Part of why programming is so difficult is that damn near every system ever invented by humans has exceptions. And you have to know about every single one of them before you can safely generalize from the more common cases.

My favorite microcontroller stories are ones that give no feedback while they’re thinking or communicating.

e.g. on a gas pump it’ll ask for zipcode input and put up a textbox. Using the physical keypad you start keystroking. And nothing displays on the screen. About 4 strokes in the first one appears on screen. Why? I suspect the controller wasn’t buffering the input but was sending across some interface to some central machine and then, when it gets back an acknowledgement, it finally shows it onto the screen. WTF were they thinking??!?

These kinds of delayed feedback timing issues create lots of backspaces, doubled strokes, and cancels.

They also create cybercidal anger. I’m always reminded of a joke from the early days of PCs: “My computer beat me at chess. But it was no match for me in kickboxing.” With a cartoon of a partly crumpled tower case & a cracked CRT monitor lying on its side.

It’s even worse if you’re in Wisconsin.

I’d go one step further. People who design most systems aren’t the end users of them. Once something is designed and on its way to production, the design team has moved on to something else and never looks back.

I have a pet peeve about software that asks for code numbers, but won’t accept the format most people use. Phone numbers are a special case of this. Do you enter () or not? Do you use a dash or not? Space? Enter or tab? “1” prefix? There seems to be no uniformity.

Then the proper program sequence would be something like this:

ACCEPT ZIPCODE
LOOKUP ZIPCODE IN DATABASE
IF ZIPCODE STRADDLES A STATE BOUNDARY THEN ACCEPT STATE
ELSE CONTINUE

My philosophy is let the computer do the work, not the customer. Since Zips that straddle state boundaries are rare, most customers would never be bothered with unnecessary stuff.

another thing is that the people designing the interface know exactly how it works. But, like proof-reading your own writing, they miss things that would befuddle someone trying to use it for the first time.

As a former Computer Science prof I could write a room sized encyclopedia on bad UI design.

The aforementioned enter your phone number and then get asked for it later is a classic. But that would actually take a bit of work to implement. It’s the trivial ones that get me.

E.g., filling in date fields all too often you have to enter double digits for day and month. Why? This is something a first year student could easily code to handle one or two digits.

Similarly it shouldn’t matter one whit if you type in a SSN or phone number with/without dashes.

There’s even free code on the Internet to do basic data input like this.

The one we run into is our libraries new checkout system. It used to be simple. Now it’s a huge sequence of button pushes to do a straightforward checkout. It’s also got a finicky touchscreen so making mistakes is all too easy and results in going back all the way to the start.

Now that I use a tablet I run into a whole universe of bad design. They think I’m using a tiny phone. Nope. They think that portrait mode is the only way someone uses a tablet. Nope. Etc. And that’s not just the web sites. The browsers themselves are brain damaged in many ways.

Of course the really evil ones are the ones that aren’t easily usable to people with limits on vision/movement/etc. The web sites consider these people to be too small a group to care about so they don’t. Well, that’s certainly nice of them.

To elaborate…

One of my pet peeves about this pet peeve is software that uses an entry field that accepts – lets you type – characters that cannot exist for that data field. If the field only uses numbers, why allow anyone to type an alphabetic character?

And even if you allow any character, why not strip off the invalid ones before the subsequent lookup? Code in almost any language can do this in a single line. It’s Programming 101 level and should be part of every programmer’s basic – very basic – toolkit.

Our local property tax numbers, which define individual properties for real estate purposes, consist of 3 digits (the municipality code), a dash, and up to 15 digits and alpha characters (example: 022-8100015A). But when you enter a tax number in the county’s inquiry screen, there is a message that says, “do not use a dash, as that will cause an error.” It probably took the programmer more time to code that error message than it would have to fix the problem.

Our local MLS (Multiple Listing Service), which lists properties for sale for Realtors, uses a format that begins with a single letter (property type like Residential, Condo, etc.), then 5 digits, then a single letter (showing listing status like Active, Sold, eXpired, etc.)

But you can only enter the six digits. Again, it would be trivial for a programmer to strip off any alphabetic characters if found.

Or, better yet, instead of forcing the customer to give the property type in a dropdown box first, use the first letter – if entered – to tell the program which property type to search in. Only ask the customer for the type if the letter isn’t present.

And don’t get me started on data verification…data scrubbing…which should be the first procedure after data entry. Perhaps the most insidious one is a “leading space”, where an operator types (space)…numbers. She intended to type “1234” but actually typed " 1234". This is hard for most people to spot, especially with proportional spacing. But looking up " 1234" will produce a “not found” error in most databases that expect “1234”, confusing the hell out of the operator. It’s trivial programming code to strip leading spaces, but it’s rarely done.

My vintage 2012 Power Mac has a Power button that’s too small and shallow to see or feel. When I need to hit it, I have to fumble around in the dark for it until I accidentally hit the right spot. I miss my previous Mac that had an actual power button.

And sites that require you to make up a password, but don’t tell you all their rules for passwords until you’ve already made one up. THEN they tell you it has to have 12 characters, three of which are caps, plus two numbers and a special character, no character more than twice in a row, etc., etc., etc.

And then there’s the Adobe Creative Cloud page that lets me update my credit card expiration date, but there’s no way to give a new credit card number. You have to call customer service and spell out every damn thing… and it still doesn’t update your account.

I’ve heard people make fun of old people in the grocery store who can’t figure out the self-checkouts. But I analyzed the one in a local store and this is what I found:

I (a typical shopper/user) stood directly in front of the scanner/scale and screen. The scanner/scale was about hip-height on me with the screen about chest height. The credit/debit card reader was one foot to the right of the screen. The change output gadget was one foot to the left of the screen. The cash intake gadget was about one foot below the credit/debit card reader. The receipt printer was two feet to my right, about knee height. Can you guys visualize that; how spaced out all that stuff was? It took me, a tech-savvy person, a few minutes to find all of those components. A non-tech-savvy person has no chance but to look foolish struggling to get checked out!

Along with what you said about developers launching the code and never looking back it’s because the developers doing new projects and the ones doing maintenance are not the same people. Early in my career as a programmer, I learned about the importance of input field validation the hard way, because I had to support and maintain my own code. I had a sales order system that produced a few financial reports for the accounting department. One day they lobbed a report upside my head because it’s final totals were wrong. I spent 2.5 full workdays with the report program in debug, stepping line by line through a giant loop (because this thing had several hundred detail lines as it tallied up the orders), a manual calculator on one side of me and the paper report and a highlighter on my other side. Two and a half full days of agony debugging this thing, to finally discover that the wrong final total was because someone had entered a “?” into an order line item amount field. And of course the real idiot was… ME, for not properly validating the input fields! I never made that mistake again!

One of my biggest all-time pet peeves for computer user interfaces is when there’s only one or two specific purpose input fields on the screen, and the cursor isn’t automatically placed where it’s supposed to be, forcing the user to have to click there before typing. For example, login screens: default the cursor to the username field, you assholes! Also, some various screens that have one input field, like an email address. Default the cursor into that ONE fecking field, it’s not like you don’t know what the user is going to want to do, idjit. There’s one field, what do you think the odds are that the user will want to type in that ONE FECKING FIELD?! I want to slap every lazy-ass developer who puts this crap into production.