The Surface Effect - The human-machine boundary
sur⋅face (noun)- The outer or the topmost boundary of an object.
- (Mathematics). The boundary of a three-dimensional figure.
One of the features of the world, at whatever level you choose to look, it that the interesting things appear at surfaces or boundaries between different regions.
Take for example two nations with different dominant religions. The border between these two countries may be more tense than elsewhere, and be a place where interesting political activity is taking place. Or take chemistry, reactions occur where different chemicals meet, that is at the surface between them. In physics we find interesting phenomena such as evaporation or refraction occur at surfaces, and these give us a greater understanding of the nature of the materials throughout.
Indeed, even life on earth can be seen as occurring at a surface, the surface of the earth. In fact it occurs around four surfaces. The crust/ocean surface, the crust/air surface the ocean/air surface and finally the air/space surface.
Human history is littered with events relating to boundaries and borders. But why is this of relevance to the design of software?
Software too has surfaces within it. In object oriented systems each object has an interface, which is the surface that interacts with other objects. That surface encapsulates the implementation inside. Designing good interfaces is a critical part of good object oriented programming, and when programming it is no surprise to people that the interface that an object presents has an effect on the implementation of that object. Or conversely, if the implementation is fixed that has an effect on the interface.
Precisely the same thing is true of the user interface. The user interface mediates all communications between a human and a machine. As such, its nature has a profound effect on the both parties. It presents to the human a model of how the software works, known as the manifest model. This helps shape the mental model the human creates to understand it. The way, for example, that information is presented can have an enormous effect on how it is interpreted. [Tufte]. To the software systems behind the user interface the effect is one of specifying what needs to be implemented. The actions the user interface allows must be provided for by the software behind. Another way of thinking about this is to say that the user interface encapsulates the functionality the systems offers, in much the same way that an objects interface encapsulates the functionality it offers. And in just the same way that the implementation of an object and its interface are related, so too are user interfaces and the systems that underlie them. The analogy is a good one, since there are many ways of implementing a given interface. The binding between implementation and interface is not absolutely rigid, and some changes in interface are possible without drastic changes to the implementation. But likewise there are cases where a seemingly trivial change to the interface blows the implementation away.
An example might be, the user interface to a phone number database that accepts voice input and typed input. It requires very different implementation for these two input mechanisms. A voice input system should understand that certain words, though spelt differently sound alike (homophones) whereas a typed input system has to understand that words may be spelt incorrectly, but should be interpreted phonetically. The form of the database to support these two different types of access may differ significantly, and this is a direct effect of the surface or interface applied to the system. In other words, this is the surface effect!
This leaves us a choice. Which side of the surface carries more weight? Which should we bow to more? Historically the machine has had things pretty much its way. The limitations of the software have forced the issue, and systems have been built from the bottom up. Low-level engineering has dictated each interface in the system, right up to the user interface. What this leads to is what is know as “implementation model” solutions, where the interface presented to humans reflects the engineering used to build it. This has an effect on the people using it. They are forced to understand at least to some level how the system works, and adapt to that.
Now, with computers getting ever more capable, and software becoming more able too, we have, perhaps for the first time, the ability to do things the other way around. Now, rather than letting the engineering dictate the surface between man and machine, we can let man dictate it, and adapt the machine to the man. In the words of George Bernard Shaw "The reasonable man adapts himself to the world; the unreasonable one persists in trying to adapt the world to himself. Therefore all progress depends on the unreasonable man". Now is the time to be unreasonable. In this new context the surface effect is the effect the desired interface has on the engineering behind it. In this world we start at the top, and work downwards building each layer to support the one above. So, rather than being constrained by the form of the technology we use, we use the technology appropriate to support the form we desire. Only then do machines truly serve man. At this point we can use them on our terms.
So in summary, this is what I mean by surface effect. When we change the surface of a system we profoundly affect the technology required to implement that surface presentation. The effect of this, is that we need, when designing software, to start at the surface and work down rather than, as is currently done, start at the system and work up.