Jonathan Edwards is one of those people I both profoundly agree with and profoundly disagree with.
In his new year essay The Great Software Stagnation he again complains about the way the computer science field seems to be running out of new ideas.
I agree wholeheartedly with his frustration. And, sure, with a few bright exceptions, innovation in computing seems very poor compared to the enormous strides made in the 60s and 70s.
Of course, some of this is that lower-hanging fruit have been picked. Some is the natural inertia of a large number of users of computers these days.
But I continue to oppose Edwards’ theory, that it’s all the fault of the internet and Silicon Valley luring people away with promises of getting rich. I think (as I’ve outlined in this following Tweetstorm response to Edwards) that it’s all the fault of “direct manipulation” as an ideal for UI designers.
The Great Software Stagnation is real, but we have to understand it to fight it. The CAUSE of the TGSS is not “teh interwebs”. The cause is the “direct manipulation” paradigm : the “worst idea in computer science” \1
Progress in CS comes from discovering ever more abstract and expressive languages to tell the computer to do something. But replacing “tell the computer to do something in language” with “do it yourself using these gestures” halts that progress. \2
Stagnation started in the 1970s after the first GUIs were invented. Every genre of software that gives users a “friendly” GUI interface, effectively freezes progress at that level of abstraction / expressivity. Because we can never abandon old direct manipulation metaphors \3
The 1990s were simply the point when most people in the world finally got access to a personal computer with a GUI. So that’s where we see most of the ideas frozen. \4
It’s no surprise that the improvements @jonathoda cites, that are still taking place are improvements in textual representation : \5
The main innovation in Rails is textual (you rethink the Ruby code that describes an ActiveRecord class as a schema definition for the whole system) \6
DevOps tools take configurations that were done through filling in web-forms or obscure config files and puts them back under control of scripts in a real programming language. \7
React is a new higher level set of linguistic constructs to describe a reactive UI … etc. \8
In other words, progress in CS is still possible, but has slowed down in all the places where people have stopped programming in languages where new ideas can be created through grammatical composition and abstraction \9
And where we try to get by with a fixed repertoire of gestures to manipulate data directly. \10
If you want to fight stagnation, you have to fight the cult of direct manipulation, and fight the expectation that computers should be so easy that users don’t need to think or learn new concepts to be able to do things with them. \end
Now, I don’t expect Edwards to agree with me on this. He’s very keen on direct manipulation in his experiments. And I understand that. Direct manipulation is a wonderful thing when your gestures are sitting at the top of a tower of linguistic abstractions. Mapping that ultimate level of power directly to your body and visual system gives you remarkable power very easily.
The problem is that we don’t know how to grammatically recombine and build further abstractions in the gestural domain, so however great that power is, a direct manipulation approach will always freeze you at that point.
Sticking with text and language feels more artificial and clunky, but if you do stick with it, then you at least have a chance that you’ll later on invent a higher level language to go beyond your current state.