Mar 12, 2015

Too Clever to be Useful

User interfaces are often designed by people who do not understand that they are not the measure of all things. The design interfaces that are easy to use, easy to understand, and pretty... according to the designers. The designers do not remember the rest of the world does not share the assumptions the designer have. They do not share the designers taste. They do not share the designers culture, language, or even all of their physical characteristics and abilities. 

We people out here do not know, or care about, the clever principles you based your design on. We do not know, or care about, the constraints you faced when designing the interface. We do not care about any of that. We only care if we can use the interface to get our job done with a minimal amount of effort and a minimal chance of nailing ourselves to the wall. People will only learn as much as they need to get their job done. The more they have to learn to use your interface the more likely that they will just walk away and bad mouth you. The more times they have to learn a new interface for do the same old task the more likely they are just skip the new version or switch to a different vendor. A vendor whose interface is easier to use.

People see a new or different interface as a barrier to getting their jobs done. They see having to relearn the interface over and over again as stealing their lives. They see the changes a disrespect. They see it as you wasting part of their all to short lives by making them learn one more way of doing the same damn thing.

Sometimes the designers make a clever interface with the expectation that the interface will be powerful. They do not realize that the result is actually confusing and error prone. A plethora of features and clever behaviors leads to people getting unexpected results as a result of unexpected interactions between features of the overall system.

The first time I ran into this problem was in the middle '70s. I was an experienced Fortran programmer. One night Dave, another experienced Fortran programmer (and the only person I have ever found sleeping face down on a keyboard), and I were sitting around talking when a contractor we both knew came in to ask us a question. Noel was a very experienced Fortran programmer. She was teaching a night class in Fortran and had given a test, graded it, and returned it to the class. Everyone had given the wrong answer to a question about the Fortran FORMAT statement.

When she was reviewing the test with the class several people challenged her answer to the formatting question. They had different answers and they were sure they were right. After a discussion with the class she realized that she was not 100% sure she was right. So, she promised to research the question and make sure she had the correct answer. This is a very reasonable thing for an instructor to do. Not half the instructors I have had would have done that. I have encountered one "school" where you are not allowed to do what she did. The official answer is correct even when it is wrong.

Her review of the question started with asking Dave and I what the correct answer was. Dave gave his answer and Noel and I showed him that he was wrong. I gave my answer and both Dave and Noel showed me that I was wrong. We had a friendly little argument, like programmer do, that lasted a few minutes. We dug out the textbook and the manuals and traced through the definitions and realized that we could be there all night. By that time we had all changed our answers but we still did not agree.

I suggested that we code up the question and run it. Well, we did that. When theory fails do the experiment. Coded does not lie! The results did not match my answer, or Dave's, or Noel's. It also did not match any of the answers that any of the students had come up with. Noel dropped the question from the grading for the test.

In Fortran, the FORMAT statement is sort of like the format strings used by C's printf function, but much more powerful and complex. You can have repeat counts on fields. You can have repeat counts on parenthesized substrings. And, when you reach the end of the format the I/O system just goes back to the beginning and starts over. Oh yeah, you can have loops within I/O statements. The whole mess is much more clever than the one in C, much easier to mess up. It once let me print 2,000 pages with one character per line. You may have noticed that C++ has tried very hard to get away form using format strings. But, of course, Boost put them back in.

Fortran FORMATs are powerful, and clever. So clever that they are hard to use. Unless you work with them every day you are likely to have to look up the details every time you use them. After the empty pages incident I always tested them on very small test cases before I used them for production work.

I have run into this odd problem several times. I remember having to deal with a search tool (not on the Internet) that wanted you to type in a properly formatted regular expression. If you made an error it would force you to type it in again. No editing capability, no warning that it expected a regular expression, and no tutorial documentation, just a mention of grep. If you did not know what a regular expression was and know how to type one out, oh just off the top of your head, you were screwed. Not to mention that there are lots of different ways to type a regular expression. You have to do it their way, not the way you may have learned it in college. And, of course, how many people know what a regular expression is anyway? Very powerful, very clever, and totally useless.

I've seen the same thing with search tools that require you to type in a valid boolean search expression. But, did not tell you that, and did not tell you what the operators were. I even wrote the back end for a mess like that. Worked great but no one could use it.

You see this kind of thing in changes to user interfaces all the time. Sometimes the change is for the better, like the ribbon in MS Office. On the other hand sometimes the changes don't seem to make any sense at all. Change just to let the designers show off how clever they are.

Last fall I rented a car in the UK. No problem getting in, the clicker worked just like I expected it to.. But, then, we had to figure out how to start the car. No key on the keyring, no ignition switch near the steering. What!? Well, there was a big button labeled "ignition" so we pushed it and nothing happened. Then we looked carefully at the keyring and noticed that it had a little gray box on it, and there was a little hole in the dashboard over there... so we put the little box in the little whole and then pushed the big button and the car started. I never dared pull that little box out of the little hole while the care was running. I sure wanted to. I never could get the radio to work at all.

Again, very clever, I'm sure that keyless ignition is very "cool" or "khol" as they say on the coast. The change seems pointless. What is the reason for replacing the key with a little box? It seems like a change that was made just to make a change. Very clever, but WTF?

Smart people design things that are easy for them to use. They forget that not everyone sees things the same way they do. They forget that people do not share their culture, their training, their recent experience, their field of knowledge. The smartest people in the world may not be able to use your design if it is too clever. You have to be smart enough to design something that is dumb enough for everyone to use. Something that everyone can use.

I had a coworker who once told me that if a program with a GUI interface could not be learned in 10 minutes, 30 minutes tops, of poking around it was not worth learning. I think he was being a bit unreasonable! But I like the goal.

That brings me to Windows 8.1, talk about change for changes sake. I bought my wife a new laptop with Windows 8.1 preloaded. My wife is not a noob and she is not stupid. My wife was a rocket scientist. Really. One of her projects blew up a test stand at Edwards AFB. Some of her stuff has launched commercial payloads into orbit. She has been using computers since she was in high school back in the 70s. She has used DOS, and pretty much every version of Windows since 3.1. She even has time using TSO. Now days she mostly does project management. She manages IT projects and has an amazing record of getting projects done on time and on budget. At work she uses Windows 7 and Office all day long...

After one week of trying to do anything on Windows 8.1 she asked me to replace it with Ubuntu Linux. I tried to talk her out of it. We need at least one Windows machine in the house so that we can update the maps on the GPS. (In this day and age why would anyone support only Windows and iOS?) After a month she demanded that I get Windows 8.1 off of her machine. I was tired of listening to her scream at the laptop so I took it off. It only took about half an hour.

Windows 8.1 looks great. Touch screens are very nice and there are some really nice touch screen interfaces out there, like the ones on everything by Apple and on Android devices. Windows 8.1 is strange just to be strange. If Windows 7 is the best version of Windows ever (in my opinion it is) then Windows 8.1 is a sign that Microsoft has corporate dementia. Hey if corporations can have human rights they must be able to have human diseases. Windows 8.1 is very pretty, and I bet the designers think they are very clever. So clever they have built something that is completely useless.


  1. Great insight. I'm surprised that you didn't just have Windows 8.1 boot into the desktop which is mostly windows 7. (Sorry, that's a quibble.)
    I try the rule I learned in the Army when designing UIs, it must be usable by monkeys wearing boxing gloves. The problem arises when Murphy strikes, "Nothing can be made fool proof because fools are so ingenious."
    The other issue you bring forward is the baby duck syndrome, the first interface you learn is perfect, every other one is an insult to the universe. ("Only a wet baby loves change.")
    Great blog by the way.

  2. So, I'm curious - what was the FORMAT statement? I used to be pretty damn proficient with it in the late 1970s & early 1980s…

  3. I'd be interested as well - Bob is correct that some of the FORMAT rules are a bit obscure, especially regarding reversion, but I don't think it's as complicated as suggested.