Much ado about nothing

Anybody remember the original idea behind JavaBeans? Many moons ago, the idea was that JavaBeans were going to be little boxes of functionality a non-developer could drag around and hook up graphically to create magic applications. To be fair, I don’t know that Sun ever expected these applications to be zero-code applications so much as a more advanced competitor to Visual Basic. What happened? Nothing—it was a silly idea. JavaBeans stuck around, of course, but simply as a Java-based version of ActiveX. The idea of connecting up JavaBeans graphically fell by the wayside pretty quickly.

And Myspace? Back before it turned into an obnoxious cesspool of design it allowed users to customize the HTML of their page by injecting HTML and style information into key structural points of their profile. Anybody who was active online during Myspace’s heyday can probably remember the assault on the senses that Myspace profiles became. Ridiculous backgrounds, horrible fonts, and embedded Flash and sound clips inspired browser plugin developers to write add-ons that effectively neutered Myspace profiles, saving the browser user from the worst abuses of web design seen since the mid-90’s.

And today, we have Google’s AppInventor announcement. AppInventor will, if you listen to its cheerleaders, open up Android development to hordes of non-developers sitting on great ideas they’ve been unable to implement simply because they lack the in-depth knowledge necessary to realize those visions, using exactly the same graphic-block approach we’ve seen fail more than once on other platforms. I don’t expect AppInventor to do any better than Wave or Buzz has, for different reasons.

In most cases, the “noob” can stare at “the f***ing manual” all day and simply fail to find something staring him in the face.
Yehuda Katz

I’m not saying that AppInventor isn’t “cool.” I’m not saying its impossible to do useful things with it. What I’m saying is that the target market—non-developers—doesn’t have the tools to do anything with terribly useful with it. Some will, and my prediction is that the vast majority of apps that come out of those will suffer from one of the following flaws:

  • Buggy beyond usefulness: One may work around the bugs with enough knowledge or for a particular intent, but for other people, the app will be next to useless.
  • Purpose specificity: The app will do one thing, well enough to work, but not well.
  • Vanity apps: Apps won’t do anything useful except stroke the writer’s ego, by which I mean either there’s an existing app (or many existing apps) that accomplish the same goal, but better. Or it flat-out doesn’t do anything useful.

At its core, this idea of making development open to non-developers suffers from one naivé assumption: that all code is boilerplate, so its possible to remove the developer from it. The result is a lot of half-baked ideas lacking sophistication or a reasonable implementation. Call me a development snob, but I don’t think you can really weigh the variety of factors at play in development without having at least the lions share of the skills of a real developer.