This is a draft of the editorial of the Jan/Feb 1997 issue of Web Apps Magazine, ISSN #1090-2287. See also: Mar/Apr Distributed Objects Issue May/Jun 1997 Databases Issue editorials, more about WebApps.
I'm sure you've seen the ads: "Wanted: HTML programmers" HTML programmers? I can see HTML writers, practitioners, or even coders; but HTML is not a programming language. An HTML editor was supposed to be like a really primitive word processor with one killer feature: hypertext links. No propellor on the head necessary.
And I'm sure you've been here too: the all-singing, all-dancing Java, ActiveX, and Shockwave page. The tension and excitement builds as you wait for all the pieces to download; your machine moans under the stress, but you finally got that RAM upgrade and a new sound card, and you're ready. And finally... a talking head tells you to come back next week when they will have their catalogue online. Gee thanks. A simple "under construction" sign would have told me all I need to know about this site: go somewhere else.
Both these situations show the same thing: a failure to understand this new medium--the web. Quality communication on the web is a mixture of poetry, graphic design, interactive user interface design, and database application. It's an immersive, participatory medium.
I learned my first lesson about the web long before I ever heard of HTML, HTTP, or URLs: I was writing COBOL programs for insurance claims processing. I was asked to update this program, and I completely overhauled the user interface; I replaced a modal, one-record-at-a-time interface with a modeless, spreadsheet-like interface. I couldn't wait to demo it for the customer. Her reaction crushed me: "Where's the add mode?"
Then I saw the army of clerical workers at their desks working with another one of the claims programs. They were unconscious, chatting away while they turned hardcopy claim forms into bits with thier fingers on the keyboards. They never even looked at the screen; they were always two or three screens ahead. I realized that any change to that program would mean thousands of hours lost to re-training. Lesson learned: people resist change.
And yet the web is all about change. It's about changing from country to country with one click. Or changing software packages. It's about participating and making changes of your own as fast as hitting the save button. It's about connecting your enterprise information systems to all the other information systems out there so that your enterprise can keep up with the pace of change in the world. "Nirvana is when the information system changes as fast as the organization does," as XXX put it.
HTML forms and CGI were a tremendous advance: they brought the power of 1960's COBOL programming to the web. For CGI applications, traditional languages like C quickly gave way to higher level languages like perl, tcl, and applescript where solutions can be expressed naturally and prototyped quickly. Few web apps demand the performance of C, and even fewer stand still long enough to be written in C. The web blurs the notion of prototype and production software. Rapid applications development takes on a whole new meaning. Software technologies previously considered too high-level and inefficient for production use are now considered essential to keep pace.
The Internet is an incredibly fertile ground for research and development. The web development community formed quickly, and the marketplace of ideas is rich. First there was the "view source" window for finding out "How did they do that?" with HTML. Then mailing lists and newsgroups for exchange of source code sprang up all over. And now those ideas are the basis of a rich commercial market, from $49 utilities to multimillion dollar back-end systems.
But there are three challenges facing the web development community: richer human interfaces, better back-end integration, and complexity management through component software.
Richer human interfaces compete with simpler, more familiar mechanisms that require less of the client machine. The practical research work on this challenge is very promising. But in a production setting, an interface relying on anything more than basic HTML and graphics had better be motivated by a big gain for the user. Don't fall into the "HTML programmer" mindset; communication through documents has hundreds of years of tradition that shouldn't be thrown away lightly. Most sites will get more return out of investing in content and structure using the existing idioms than doing something different.
On the back end, the challenge is to find the right mix of reliability and flexibility and the right mix of tried-and-true techniques with novel but promising ideas. If the structure of your enterprise information isn't changing fast enough to keep you working long hours, I'd be willing to bet that your audience and their usage patterns are.
And in between the front end and the back end, the development community struggles to leverage its work, to make writing the next system easier than the one before. To what extent should you leverage community knowledge and experience by using what everybody else is using, and when should you strike out on your own? How long can we get by on copy-and-pasting each other's work? When will we be able to use each other's work in black-box fashion? How much are we willing to pay in time, money, and licensing restrictions in order to get there? What languages, libraries, and tools will get us there?
As we look at programming languages for the web, keep in mind that they're used not only to express programs for the machine, but also to communicate to other developers. The web brings about changes that allow us to look at non-traditional development technologies a lot more seriously. The motivation for high level languages is to express problems and solutions more naturally. This allows developers to worry less about the mechanics of computing and more about creative solutions. And I mean really creative: the web medium admits works of art just as ink on paper or sounds in the air. It invites readers to not only browse information, but to participate in it.
Welcome to the global community of web software developers.