We have called ourselves a science, yet we can't even define our subject matter. We call ourselves an art, yet those who can appreciate what true art is in the field number fewer than the number of modern art critics, and most of what is produced is utterly prosaic. We call ourselves a craft, yet we have no real standards of excellence.
Most programming is no more scientific than astrology, no more artistic than a lawn mower, not better crafted than a child's model. 90% of all programs are produced, not as commerce, not as experiment, but a tutorial - the curse of the class project, in the most overstudied field in history. Yet most 'professional' programming is done by underskilled hire-ups, with no knowledge of the field, coding by rote no different from any factory worker. We pride ourselves as an acedemic field, yet the intellectuals of the field are no more involved in the daily business than the scholars of Laputa. The source of most innovation and talent is disconnected from those who actually write the programs.
As a field we have sought to find a way to make things accessible for users, yet most of the ideas never get used except in theses. When an effort is made - Windows 95, for example - what gains it offers come at the expense of greater complexity, by placing the user at a greater distance from the system rather than moving the system to the user. It remians impossible for most people to learn a program without overwhelming effort - and learning one program does little to help understanding others.
Programs being made now remain monolithic, singular things, disconnected from each other and the user. Instead of making programs that integrate smoothly, we have paved over the differences with semi-standardized connections, as if we built a town by constructing individual houses and connecting them with superhighways. The 'connectivity' and 'drag and drop' of our system remain cheap imitations of true integration.
We have work, all of us, to make systems that users could, in fact, use. But in doing so we have concentrated on giving them as many tools as we can, rather than finding out which they actually use and building *those* in the simplest and most direct ways. We have made vast, powerful and extensible systems that only a genius can understand, and only an expert can use. Yet at the same time we have made them so 'simple' as to frustrate those who do master them, by forcing them to take baby steps for each move they make. And still things get more complex, as the need to market the same product time and again forces us into adding tiny incremental 'improvements' that serve mostly to confuse.
We have created a vast network, a Tower of Babble, in which almost anything can be found - if you know how, and have the patience to do so. It is still only half usable, half working, half worthwhile, but it is being hailed as a revolution. In coming too soon, it will be finished too late; already, the bloom has rubbed off, and we can hear the rumbling of discontent among those who need it most, and can use it least.
As a field and an industry, we are headed for a fall. Too many people need from us more than we can give. We cannot shove this trash down the throats of the public forever; eventually, even so valuable a tools as The Computer will fade if it becomes intolerable to use it. The users view remains, in the words of Nelson-sensei, 'a field of rubble'. Frustration is overcoming those who need these services so badly, and disillusionment is eating away at the users. Soon it will end, and we will all be back writing assembly code for toaster ovens; and I can only hope that when the hype and the tripe have been washed away, that we can at least try to build something useful, something pleasant and small and easily understood. The need is so great, but so has been our hubris.