I have mixed feelings about this article from IBM developerworks. The author describes how to build a simple guest-book application in Ruby using the Cerise application server. I love seeing dynamic languages get exposure on the bigger developer sites but the article presents dynamic languages as both “useful and powerful” and at the same time “strange and unprofessional”. I see this kind of shit all the time and it drives me crazy:

With a World Wide Web dominated by Java 2 Platform, Enterprise Edition (J2EE) application servers, choosing another Web framework can seem strange or unprofessional.

Gah! What World Wide Web is the author referring to? If anything, the web is dominated by simple CGI applications running atop Apache and is progressing toward slightly more advanced (but still extremely “light”) frameworks based on PHP and Perl. J2EE doesn’t even blip the radar! If you look at any of the really successful tools on the web, you’ll find a great deal of unprofessional web frameworks.

J2EE may have a substantial hold on internal Enterprise Applications (where people with actual technical knowledge have little decision making ability) but it’s been an utter failure on the larger web. In fact, the only J2EE based app on the web that I can think of off the top of my head is mail.com and it’s a steaming pile of dog-shit that’s more of an ad. delivery agent than an email client. And, like most, they probably use JSP/Servlets and leave EJB, JNDI, and the other over-baked J2EE technologies alone.

I feel bad ragging on the article because it goes on to give a really outstanding overview of building applications in a dynamic language environment. It’s as if the editor inserted the first paragraph right before publishing to make sure that none of this was taken seriously. Or possibly so developerworks wouldn’t be ridiculed by the Gartner/J2EE crowd.

Here’s how I read it:

… Hey kids! There’s this new and useful, powerful, simple, easy-to-maintain system for building web applications! Of course, we don’t suggest you actually try to use it for anything real because it doesn’t have many of the traits we’ve come to expect from professional enterprise class seamlessly scalable flexible solution architectures. For instance, it is completely lacking in the following areas:

  • Code complexity – this code looks way to simple for a professional. Professionals demand tedious programming languages because it’s a well known fact that combining tediousness with complexity yields power!

  • Ten layers of framework. If I don’t need to map ten frameworks together using XML descriptors than it obviously isn’t anything powerful enough to bother with.

  • There’s no curly braces! Braces are the key to all that is holy in language design.

But if you just want to, you know, write something useful and be able to maintain it than this Ruby thing might be for you! Of course, this is rarely a requirement of the true professional.

This mind-set of simple != professional is actively harmful to our craft. A real professional will seek out ways to simplify and reduce her current toolset and she won’t apologize when a new set of technologies promise to help her deliver value quicker, easier, and with a higher level of quality. Part of being “professional” is being responsible and choosing the best solution for a technical problem.

Dynamic languages like Ruby and Python greatly reduce the amount of complexity associated with building real systems that do real shit without sacrificing maintainability and potential for scale. Developerworks and publications like it that keep their readers scared, uncertain, and doubtful of these technologies are doing the developer community, their clients, and employers a great disservice by slowing the acceptance of such cost-reducing, time-saving technologies.

Disclaimer

That was a pretty nasty and maybe not completely fair rant filled with opportunity for misinterpretation so let me preempt a few emails before I go:

  • I don’t hate Java. I work in Java for at least 40 hours a week and generally enjoy it. I dislike the growing trend in the Java community to make systems overly complex. In most cases (let’s say 70%), I fall in with Hani.

  • The developerworks article has good intentions and was well written. But please stop apologizing for making sound technical decisions! Your readers will appreciate honest technical commentary. Gartner doesn’t read developerworks so the grandstanding in the first paragraph gets you nowhere.

  • I’m sure there’s plenty of J2EE sites on the public web but they aren’t dominating in any sense of the word.

  • I really do think 90% of J2EE is complete shit so please flame away on that one.

More on web python ruby coding

Comments

  1. I would like to suggest the following website – Simpler J2EE – at the following URL – http://simplerj2ee.net . J2EE does not have to be complex. You can always select a simple J2EE subset that makes it easy to use.

    For anyone who wants to be learning how to create complex J2EE applications from scratch this is an excellent resource because it shows you how to use the simplest J2EE components to create applications of your choice. The site is free.

    The idea is that Struts is the simplest front-end framework and that iBATIS is the simplest back end framework for J2EE – so that if you just learn these two technologies you are in good shape to write high quality, high performance J2EE applications. The site also guides you to learn the frameworks.

    Sandeep Jain on Sunday, November 18, 2007 at 07:00 PM #

  2. I couldn’t agree more… as computing history moves forward so quickly it seems that history is forgotten even faster. for example, most IT professionals have forgotten that java was introduced to replace C++ because C++ was considered too difficult for junior programmers! and that J2EE was introduced to solve problems associated with a minute fraction of class of applications. the creators of J2EE freely admit that implementing a silo application in this framework is pure overkill but that silo applications make up the majority of applications that exist.

    What you’ve failed to mention is that, in my experience, more complex architectures are introduced because… they are more complex! And complexity means they are costly and IT vendors and providers want things to be costly!

    charlie g on Wednesday, March 12, 2008 at 11:52 AM #

  3. Hi charlie, thanks for the comment.

    What you’ve failed to mention is that, in my experience, more complex architectures are introduced because… they are more complex! And complexity means they are costly and IT vendors and providers want things to be costly!

    Oh, but I have mentioned that :)

    Ryan Tomayko on Wednesday, March 12, 2008 at 06:18 PM #

  4. Does Java not dominate? I have no numbers on the number of websites that use Java, but the simple fact that there are way more web frameworks for Java than for all other languages put together should tell you a couple of things. Yes, one of the things it tells you is that Java developers love architecture a bit too much, but also that Java is very popular with web developers who are smart and well-funded enough to do something about architecture.

    I admit Java made a bit of a bad start with junk like Struts, Avalon components, the steaming pile of J2EE and the unholy mess that is Spring, but out of that has come a lot of very valuable innovation. I haven’t seen anything like Wicket for Ruby yet, for example. (Although Lift, which takes the lessons from Wicket, Rails and Django and brings them to Scala sounds extremely promising.)

    Anyway, Java does dominate. Maybe not in the most popular websites, but definitely in web frameworks and surrounding technologies. But if you just want a blog or a webshop like any other, then all the stuff Java brings to the table may be overkill. (In any case, I’ve switched to Ruby.)

    Martijn on Wednesday, May 27, 2009 at 09:45 AM #