Friday, December 28, 2007

The Crazy World of Web Development Needs-a-Fixin'

Gentle reader,

Allow me to put on my propeller-tipped hat as a software engineer and go off on a short rant.

It is 15 years after the invention of the WWW.

Let's take a quick gander at the hip-to-be-square IT scene, as it applies to web-development.

I have to say, we are not quite at the point where robots have taken over the world.
However, we sure do have all sorts of crazy-assed technology.

Let's see...

On the client side (and by that I mean the stuff that is displayed by your very own web browser) we have goofy HTML, wet-and-wild javascript, annoying Ajax, insipid CSS, freaky flash and (thankfully almost extinct) Java applets. We also have lots of different browsers such as still-cool-yet-slowly-becoming-bloated-and-unstable Firefox, much-maligned-and-rightly-so Internet Explorer, obscure Opera, stupidly-named-Safari and even-more-stupidly-named-and-french-accented "Navigateur-Orange".

On the server side, we have a veritable cornucopia of complex languages and frameworks.
Let's see: There's curmudgeonly Java (it must be curmudgeonly, I use it) and its bewildering array of associated development frameworks such as Spring and Struts. There's insanely-hard-to-read Perl. There's whitespace-significant (gasp! horror!) Python with its accompanying strangely-named frameworks Zope and Django. There's an over-hyped-python-clone called Ruby with perhaps the most hyped framework of all, Rails.
Then there's lowly, sad and amateurish PHP. And I mustn't forget (though I try), evil empire Microsoft's ASP.Net (admit it, Mr. Gates, the idea for .Net was so stolen from Java).

To the uninitiated web-development virgin, that must seem like an absolute zoo of technologies.
But trust me, I have actually listed only a very tiny subset of what is actually available to
Joe- and Jane-aspiring-web-developer (in the spirit of honesty, it's almost always Joe, actually).
And I didn't even mention verbose XML and silly XSLT yet.

So, what have we accomplished with all of these technologies? What pinnacle of knowledge have we succeeded in ascending? Well, we have created an array of complicated and mostly-overlapping technologies, all of which, on the server side at least, pretty much do the same damn thing. Yet each of which happens to require its own (sometimes steep) learning curve.

As we all know, being readers of blogs and users of facebook and eBay and craigslist,
the web is not really about launching the space shuttle, managing a nuclear power station, doing brain surgery or finding the Higgs particle, is it? No. For heaven's sake, the web is used for a few simple things.

Let's see...

1) selling baubles


2) exchanging a little bit of basic information

Notwithstanding, for some bizarre reason, it is getting MORE COMPLICATED EVERY YEAR to figure out how to get some very basic stuff done. Why, oh why, must the world of web software development be so fragmented and complicated? Is it any wonder that I have a hard time teaching this stuff to my kids in the hope that they will get excited by it and thereby gain the skills to make a decent living (despite virulent outsourcing and other corporate-initiated evil)?

If nothing else (and believe me, there is else), it is costing us time and money.

It shouldn't have to be this way. Seriously.

So here is a heartfelt request to anyone involved in creating new technology for the world-wide-web:

PLEASE, can SOMEONE make things a little bit simpler, instead of even more complicated?

That would so make my year.

Today's quote:

The main challenge of computer science is how not to get lost in the complexities of [your] own making.
-Edsger Dijsktra

Until the next time, gentle reader, I remain,

Your friend,

-Buford Twain


MC said...

While your post started off good, describing ruby (or anything, really) as a "python clone" ended it for me.

Putting down a language like that was oh so cool in, say, high school. Maybe.

Buford Twain's Profile said...

There was something to offend just about everyone in that post, eh?