By “augmenting human intellect” we mean increasing the capability of a man to approach a complex problem situation, to gain comprehension to suit his particular needs, and to derive solutions to problems. Increased capability in this respect is taken to mean a mixture of the following: more-rapid comprehension, better comprehension, the possibility of gaining a useful degree of comprehension in a situation that previously was too complex, speedier solutions, better solutions, and the possibility of finding solutions to problems that before seemed insoluble.

— Douglas Engelbart, Augmenting Human Intellect: A Conceptual Framework (1962)

I think we have a very weak notion of how to improve the life of a scientist. As user interfaces go, a programming language offers nearly the full capability of the machine at fairly high abstraction, with significant up-front comprehension costs. (Similar to compression: you say less, but it’s because both you and the machine have more complexity.) The GUI offers almost the opposite; a well-designed GUI is intended for beginners, to take them up to either an intermediate or advanced level of use, but wholly interactive.

I think this represents a nice divide into two “classes” of computer user: the “user” who is a permanent underclass, and the “developer” or “programmer” who is a permanent overlord. Business and government like this; the former because it’s hard to sell something open and modifiable without giving away your secret sauce; the latter because they don’t want clerks suddenly differentiating from each other in terms of productivity or finding and changing anything. This is why Smalltalk failed, in my opinion. It’s hard to convince businesses to deliver apps that are fundamentally open to modification. Intellectual property and all that.

(Incidentally, you now see that business has discovered it’s possible to make the developers the middle class under themselves and the law.)

I don’t think this is a necessary state of affairs. Unix, Smalltalk and Lisp all anticipated the existence of a whole spectrum between low-level developers through users-that-program, through power users, to complete grunts. The whole Unix proposition was that your local wizard would prepare you C programs on-demand and the user-operators would string them together with shell scripting on-the-fly. Smalltalk and Lisp both supplied “open worlds” where the user cooperated with the system in a similar fashion using the local metaphors: creating objects or functions or what-have-yous, but able to modify the whole system interactively. The user of a Smalltalk system is basically a programmer. The Liskov substitution principle is really just a way of respecting that relationship as a good actor.

I frankly think it’s a little insulting to system analysts to assume that because they’re not programmers, they cannot fathom some kind of inbetweener system that maybe isn’t as brutal as full programming but also is substantially more powerful than using a GUI. And the real problem with the GUI, IMO, is not what it does to the user experience, it’s what it does to the development time—“the Programmer’s Full Employment Act.” A feature like subarrays is really quite simple in the model. It’s the layer upon layer of goo that has to be created and maintained which makes it so expensive. And it will finally culminate in something like an insolent child; not really knowing what it is doing or why, in severe need of more discipline.

The scientists are similar to the analysts. It seems strange to me to make them crawl through page after page of forms for submitting their scheduling block, only to give them essentially Python plus some libraries in the form of CASA for reducing the data they get. They obviously are able to grasp programming constructs—why do we force them, at great internal expense, to tolerate a UI that coddles them wrongly and then gets in their way?

A friend of mine likes to use the word operator to describe this class: people who are neither wholly victims of the GUI/programmer’s whims nor fully liberated programmers themselves. They use software that may be have required some training to understand. The software works more like their servant or peer than their boss.

I think that is what Engelbart foresaw in software as a tool to augment intellect. We got very distracted by the idea of direct manipulation, although now I think we build GUIs out of more of a cargo-cult sensibility than principle. But even that was a distraction from simpler, earlier principles: help humans comprehend faster and better and speed them to better solutions to problems. Maybe if we accept a little ugly, we can get there faster and more intelligently with less work.