Tuesday, August 21, 2007

The "Life of Brian" definition of language choices

Here's the problem(s);

1) Most of the people trying out new shiny interesting programming languages and concepts are young and have relatively little experience writing code (at least, compared to (2)).

2) Most of the people with years of programming experience want to relive the last programming language five-year learning curve like they want a hot poker stuffed up their .. favorite gaming console.

Relatively few people have the relevant experience to compare between the new and the old. Mostly this is due to natural reasons, the new being, well.. new and everything. But the biggest problem in my opinion is that learning J2EE (as it was called back in the days :) was so staggeringly hard and complicated, especially since it didn't take you anywhere near where you wanted to go, forcing you to endure Struts piled upon JSF to get anything done. That experience scars, and makes people more wary of learning new things.

So when anything new comes around, they'll just stick to the beef they've already paid for, thank you very much. One person I've spoken to has actually declared that Java was and will be the last damn language he'll learn, and thats it.

On the other side we have mostly young, daring and early adopters who try, mostly in vain to define why Ruby (with or without Rails), PHP, Python or even NBL, sorry, Javascript, is a better choice for web development.

The reason they try in vain is because they do not have the experience to compare, they just feel that they can deliver quite a lot in a short amount of time, and having a fairly simple time maintaining what they develop as well.

But what is needed is senior coders with a solid experience of both sides. If you are one, please be seen. Blog, write articles, get involved in the projects you love and use. Do something new. Anything.

Why? To save the people around you from suffering technological blue-shift and be cut off from the very tools and languages which could save their projects.

Which brings out the question of my own expertise, of course :)

I've been teaching IP routing and general networking courses (firewall-1, Netware (Yes, I'm that old)), routing stuff during most of the nineties. I started fooling around with java 1998, founding my own company in 2000 as a programmer, and been involved in fairly high-profile J2EE things since then; Deep-down PKI CA coding, Distributed J2EE WPKI certificate enrollment and verification systems, Web-based (Tapestry) seling campaign systems, and a lot fo other stuff.

So I *know* J2EE.

During the first years of Java, the critique was very harsh; It was more than twice as slow as C/C++, it had a broken implementation of OO, it was unreliable due to GC, etc.

The people rallying for Java (myself being one of them) did so because they felt that they could be much more productive, and get a codebase which was easier to maintain, compared to, say, C++. Over the years the Java VM got smarter and quicker, up to the point that even Java's main derailer, Microsoft, decided to make it's own VM-based language(s).

Today, the new and upcoming scripting languages like Python, PHP, Ruby and Javascript (among others) gets ridiculed in *exactly the same way* that Java was - by the very people who defended Java from the same arguments, and for the very same reasons, ten years earlier.

That's really priceless :)

getting back to the title of this blog entry, I want you to remember a scene from the excellent Monthy Python movie "Life of Brian", where a Roman soldier manages a long line of people coming out from the courtroom, asking them if they're to be crucified or freed. Most answer "crucified" and the soldier prompts them to go to the left, and take one cross each. Please see http://www.mwscomp.com/movies/brian/brian-22.htm for reference :)

Today, I feel that the people who don't even try to look at the new tools available to them, is pretty much like these convicts. You actually do have a choice, you know.

Also, my own experience (starting with Javascript two years back, recently involving PHP) has been that the new languages and frameworks comes much cheaper, by orders of magnitude, than did J2EE.

I have done in dojo (javscript framework) and PHP combo some fairly simple things in two weeks, which would have taken months and months of development time if done in Struts or similar frameworks. Yes, Tapestry is better, but costs a lot of complexity.

Also, I am not tied in to any tools. I use no eclipse, no ant, no maven, I use VI, sometimes Kate or wordpad, depending on which machine I'm sitting. I know what I do, I _see_ what I do, and edit-to-tryout time is around 20 seconds. That's the time ti takes for me to copy the last versions of a couple of files to my web-hosting.

What do I do? Well.. I do This, for instance. It's very alpha and kind of hard to grok, so be gentle. The project has taken most of my spare time since january, but if I would have used any J2EE framework, I would still be fighting Hibernate over which Fetchtype to use for a certain class, and be two years off :)

No comments: