The question of whether there is a specific cloud programming language has emerged in our internal discussions at TVP. We’ve noticed a tendency amongst “born in the cloud” companies like Cloud Physics to follow the example of Twitter and develop server-side components in the Scala programming language. Scala runs on the JVM and is supported by a significant number of PaaS, including CloudFoundry. Does this mean that enterprises moving to PaaS should now be coding in Scala?
There are different views amongst the TVP analysts, but my personal thought about Scala is, “Just what the world needs… yet another programming language. ;-)” I think this language and frameworks thing is an important feature of the emerging PaaS landscape, but not specifically Scala.
There is no doubt that full-blown JEE is out of favour because it is very verbose, large, and very old. There are new languages and frameworks emerging, some of which are Java-based or close to Java, while some of the interpreted languages are growing at the expense of Java.
Whilst node.js is in my view a likely leader, there is not going to be a single winner any time soon (or even at all). Obviously there are some applications where scalability is a problem, but for many new enterprise applications scalability is a secondary concern—as I found out to my cost when I ran a load testing company. These frameworks and languages are entirely about improving programmer productivity, and in most cases they do that. However, most of the improvement lies in the ability to map requirements to the “grain” of the framework; in other words, to understand both the framework and the requirement well enough to deliver a design which can be simply and effectively realized. You are much better off getting an experienced team that can properly manage the requirements process and really understands a sub-optimal language and framework, than you are using a great language for which you can’t find a good team.
I would like to propose some rules of thumb in all of this.
- The difference in productivity between a develpoment team that knows a framework and one that is new to it is a factor of 10.
- It will take 2 years for an individual to get to that factor of 10 improvement with a framework.
- For a given application, the difference in productivity between different frameworks once mastered is about a factor of 2-3.
So, if we come back to the cloud, I keep reiterating the point that the PaaS (or more generally the software-defined-datacenter) has to support any current language/framework that has traction in the marketplace. It has to be flexible enough to address future requirements for languages and frameworks and to allow some back-porting of historic applications. In my view, one of the most salient events that has happened recently is the acquisition of Nodester by AppFog. The node.js server-side implementation is being chucked in a bin and replaced with Cloud Foundry. I believe all the reference implementations for the server-side of all the emerging frameworks will be built on Cloud Foundry—and CloudFoundry is the real jewel in VMware’s crown.