2004.01.06

 

Dumb software is smarter

by Karel Thönissen

[draft]

Recognise this experience? You are editing a text and your word processor changes your text, because it decided that a) you made a spelling error, b) your layout could be improved, c) you wanted to type that word. More and more applications are trying to be smart and fail miserably. Either put the user in charge and do not interfere in his interactions, or be really intelligent, read the user's mind, and be 100% correct.

I know that many applications that provide abovementioned types of intelligence allow these features to be switched off. Problem is, however, that most people do not know how to do this. Perhaps it is true that the average user is less intelligent than the text editor he uses, but the customer is always right.

The crux of the problem is that this so-called intelligent behaviour makes the application act randomly. Depending on complex contextual rules the application may interfere or not, but these rules are not explained to the user nor fully understood by him. So when working with the application, the user must constantly monitor the output by the application. This takes away mental effort from the task at hand and makes it impossible for the user to construct a simple and consistent mental model of the workings of the application.

Numerous initiatives are being taken by researchers to make the modern computer more 'user-friendly'. Speech recognition, natural language user interfaces, face recognition and recognition of facial expressions, recognition of emotional state from voice recordings, intelligent clothing that monitors the human body, paperclips and little dogs that are supposedly there to help you, balloon-shaped windows that are always off-mark, etc. etc. These researchers are correct in their observation that the average computer user experiences great difficulty with the modern computer. However, the solution is not adding yet another layer of behaviour that is hard to predict for the user. Why should I want to command my computer in a natural language, when the communication is already very cumbersome when I use a formal language (I am an experienced programmer)? Unless I have completely missed something, we still have no clue how to solve the problems of understanding natural language. Why should the computer try to guess my emotional state during a complex task at my computer and act accordingly, whilst not recognising that my frustration is caused by the software itself 9 times out of 10?

Good software is stupid and does exactly what it is told to do, nothing more, nothing less. Good software will always act the same independent of context. Good software has no modes of operations, does not put pop-ups between it and the user, does not have error messages (more on that later). The problem with the context dependencies is that it makes it harder for the user to learn the program, increases the likelihood that the user will issue commands in the wrong context, and it makes scripting impossible. To give a few examples, how many of you have experienced the following problems?:

- you are typing a letter and near the end of a paragraph, just as you want to tap the return-key, some message pops-up and your key tap is not handled by the text editor, but it confirms a possibly expensive command instead

- you have developed a little script that automates the making of a backup during the night. However, during the nightly run something goes wrong or something is not completely clear and the process is stalled. So no back-up

- you are typing and with the finger you control the least (the little finger) you accidentally hit the insert-key. As a side-effect of typing new content, you are also deleting earlier content. Nine times out of ten, this was not intended. And believe it or not, this still confuses many users. Many of these are novices, but even I get caught by this every now and then in some software development environments