Case study 0 – Human-machine interface (HMI) before the days of computers
As strange as this may sound, operating systems of the future really should, in some areas, steal some ideas from the past, especially when dealing with human beings. To picture this, we’re going to study some examples of devices that, without actually being computers (they were designed for a specific purpose), already had the problem of having to “talk” with someone while internally working using electric currents, and solved it quite well.
- The classical phone : Let’s picture it : you want to talk with a distant person, and you don’t want to hack through several layers of circuitry boards armed with batteries and a multimeter (an appliance used to measure various electrical phenomena) to do so. However, you’re ready to deal with a number with a dozen of digits that identifies his or her home (or office) in the phone network. Having this number written on a piece of paper, you grab the phone. A sound notifies you that your phone is working and connected to the network. You type the digits on a 12-key keypad, where they are written with big letters so that anyone can read them. You wait. At the same time, somewhere in the world, a phone is running to notify that person that someone wants to talk. The person grabs the phone. You two may speak. When you’re done, one of you just has to put the phone back where it was to end the connexion between the two phones. The other one does the same thing.
- The washing machine : Now, you have dirty clothes and want them clean. Since you work, say, 10 hours a day, you don’t want to take 2 more hours rubbing them with inefficient soap after having them stay for half an hour in boiling water, burning your hands in the operation. That’s why those machines are here. However, if using it requires digging through a five hundred pages long manual, half of which wasn’t translated in your mother tongue, in order to know how to use the bag of wires you got with the machine in various sockets present on its side whether you want to wash wool or dark jeans, and then how to manipulate various switches with Chinese labels on the other side to tell the machine to heat up, make the drum turn, stop temporarily to make sure washing powder goes anywhere, turn it on again, and after a certain elapsed time (written in the manual in that part about ponies and flowers), start spin-drying clothes, stopping some time later… It’s likely that you’ll prefer to burn your hands or call someone for help. Happily, one doesn’t uses a washing machine like that. One turns a knob to tell it what kind of clothes are in the drum, and goes on doing something else while the machine is doing its dirty task. On more advanced machines, one may tell that the drum is half full in order to optimize water consumption, or tell the machine to start up some hours later in order to benefit from electricity discount prices in off-peak hours.
- The hi-fi system : This one is a bit more tricky for people engineering it, because they’ve got two very different targeted audiences. The first one is the average guy who doesn’t know anything at all about sound techniques and just wants to hear music with friends, having some good sound quality. The second one is the audio geek who can’t prevent himself turning various knobs and pushing various buttons to tweak the sound he hears until it fits its taste as much as possible. Now one could say “let’s make two different ones : a simple one for the first one and a complicated one for the nerdy guy”. It was actually done this way later, but at the time audio hardware was just too expensive to introduce and maintain two separate ranges of products. So what good engineers did was the following : they introduced a device with two kinds of buttons and knobs : big ones, cleverly positioned so that one quickly locate them on the control panel, for functions that everyone needed like power switches or volume control, and smaller ones, sometimes hidden behind a little trap door, for functions that only advanced users needed. This way, they maximized the profit by selling advanced functions to people who didn’t need them without scaring them, and by satisfying at the same time average and advanced hi-fi systems users with a single range of product.
From these example, we can extract the following principles :
- If thy hardware is ugly, thou shalt hid it : No one wants to know how things work as long as they work. The more unlikely it is that the average user may want to know about something, the more it should be kept hidden in a dark and secret place that only advanced users know about. This is the job of an operating system. If one still has to deal unnecessarily with ugly bits of hardware like bags of wire, then you’ve got a bad operating system.
- Keep things as simple as possible… : If one has to choose between a washing machine with a “cloth type” knob and a power switch on one side and one with a bag of wires and a handful of strange switches on the other side, both leading to the same final result (washed clothes), one will choose the knob and the power switch. No exception. Add up the fact that complicated systems are more subject to failure than their simpler counterparts (because they’ve got more components and moving parts, and because even the engineer who made them couldn’t tell how they work) and you see how almighty this rule should ever be.
- …but no simpler : Let’s reinvent the phone, shall we ? Suppose that instead of using a big and ugly number, one simply typed in the name of the person. It sounds like a big ergonomic improvement : no silly numbers to learn or write down in fragile and easy-to-lose index notebooks anymore ! However, it fails badly as soon as one lives in more than one place depending of the time it is (home, office…). One may argue that cellphone numbers solve this problem. But what if two people share the same name ? I’m pretty sure that there’s more than one John Smith around in America, as an example. Maybe we should add more information, like “John Smith, born in Des Moines, Iowa, the 12.14.1968″. Pretty long, isn’t it, facing something like “1-800-837-4966″ or “01.28.69.87.14″ ? And you have to know and remember more data on the person being phoned. And you need either a complete keyboard on your phone or even more time to type the whole sentence. As you can see, one should prevent incompleteness to occur while trying to make things simpler, since sooner or later problems like this will show up, and working around them may lead to very, very complicated solutions.
- Satisfying many kinds of people makes things more difficult : The example of the hi-fi system illustrates one of the main problems that occur when dealing with computers. Since they don’t have a definite purpose besides obeying a broad range of orders, they have to face a lot of different kinds of users, from the one who didn’t ever learned what is a computer and didn’t read the manual, just wishing that it won’t be too complicated to watch some random streaming movie on the internet (a task that, hardware-wise, belongs to the complexity hell), to the other who writes software for making the machine do a new trick and expects to get the most of its hardware capabilities with minimum effort. However, problems are here to be solved or worked around, and there has been a lot of people thinking about this one, as we’ll see in upcoming articles…
- Speak *insert mother tongue here* : People just love the sound of their native language. Whereas English is good at transmitting punctually some limited information to a lot of different people, for everyday contact normal people won’t feel a software is finished and complete until it speaks or write their tongue.
That’s it for now. Thank you for reading !