It's Time For The Dinosaurs Of Development To Go Extinct

July 12, 2007

OK, maybe we aren't talking about nuking things with an asteroid quite yet, but I'm really getting tired of the large lumbering programming languages and frameworks still in heavy use in most IT shops these days. Yes, I do mean Java+Java EE, .NET and C/C++.

I've been a Java programmer for almost 10 years, and have done Java EE work in many different guises over that timeframe. I read enough about .NET to know it's different but the same beast, and I coded in C++ and C for another 10 years. Even as familiar and comfortable as Java is to me, it's really just another dinosaur doomed to extinction (or more likely doomed to eternal damnation as Cobol is due to all the existing code bases).

Today computers are so fast we can't even begin to make good use of the speed. None of the mainstream languages really deal with large numbers of CPU cores very well (for example C++ doesn't even have a standard thread model yet) and many of the algorithms in their frameworks were designed in the days of one CPU.

To me the most important resource that a modern language/framework needs to address is the programmer's time. Ask anyone building corporate IT applications how long everything takes, how much configuration you have to do, how difficult it is to meet constantly changing requirements. It's like modern Java, .Net, C++ are the QWERTY keyboard; designed to slow us down so that we don't tax the hardware. Much of Java EE for example is big and ugly, designed to fit in a monolithic application server world. Likewise dinosaurs were big because big was what was thought necessary to survive.

Yet it's the little mammals, furry and (at least to much of corporate IT) insignificant that are going to revolutionize programming. It's the languages and frameworks that simplify the programmer's world that will win out eventually. It's the languages that easily support the multi-core, 64-bit, fast network, distributed world that will ultimately claim victory. Maybe they are not quite evolved yet, but dynamic languages like Ruby, Javascript, etc. and functional languages like Haskell, Erlang and Scala, etc. are the first wave of a future where programming gets more productive.

One company I had a connection to is still building a replacement for a PhP storefront in Java nearly 3 years after starting. Another has many massive Java web applications but hasn't released a new application in nearly a year. Sure you could blame the problems on all sorts of things but most people will admit they know lots of similar examples. Yet in recent years you read of complex web applications being built in a scant few months by tiny development teams and scaled to thousands or millions of users. It's not like people are smarter than they were before; it's that their weapons of choice are better suited to dispatching the problem. It could be people are smarter to pick a better language or framework.

In the day of outsourcing and complaints from large corporations that they can't find enough programmers to do the work, wouldn't it make more sense to optimize and evolve the languages, frameworks and tools so that the smart people they have can get more work done. Apparently this thought only sinks into a very few companies since when you read job ads you see the same tired crappola everywhere. How many JSP (or ASP) apps do you have to write before you realize how painful it is?

Of course for many large companies there is comfort in tradition, in so called standards, in monolithic application servers (so much like the mainframe of old) and stuff that costs lots of money. Going to a new language or framework is scary business, forbid the thought of rewriting "the beast". It's easier to feed it year after year than replace it with a new furry mammal. The architecture committee sure isn't going to recommend such a rash act.

This is just a nice rant; I doubt I will change anyone's mind still embedded in the existing Jurassic programming era but be on guard, them little furry critters you ignore now represent the first wave of future where bigger is deader.