If Dynamic Languages Were That Great, Why Doesn't Everybody Use Them?
A friend of mine, a pretty good java and C# programmer, recently asked me this question while I was advocating the merits of perl and of dynamic languages in general. Why don't universities pay proper attention to dynamic languages? Why do software companies, which are run by smart people and employ smart people, use java and C# rather than dynamic languages for the enterprise systems they develop? Why are dynamic languages used as niche tools only (e.g. perl for system administration, or RoR for quick websites), and usually because an individual pushed for their use rather then because of company policy?
I promptly replied that platforms such as java and .NET are backed by billion-dollar companies that spend enormous amounts of money convincing people that their software is superior. But even as I said it, this explanation felt somewhat insufficient to me. The question has been haunting me ever since, and gradually a somewhat unexpected realization dawned on me.
The dynamic languages ecosystem makes it difficult for the participants to make money.
Language superiority discussions among tech people have traditionally revolved around arguments such as: "My language has cleaner syntax!" or "My language has better extensions!" or "My languages makes whatever task easier!" or "My language runs faster in such and such environments!". Look carefully, however, and you'll see that on top of the tech arguments, the organizations behind java and C# have made sure that there is another, more subtle one that is clearly understood: "My language helps you make money!".
Technologies such as java and .NET have large companies (the Big Guys) backing them. This is a factor that has been discussed so many times ("We cannot compete with the Sun marketing machine") but it is still so easy to underestimate. The majority of the IT sector is occupied by ISV's that either develop applications for the businesses or the government, or (especially in Eastern Europe and Asia) do outsourcing for other companies. The Big Guys have developed complex partnership programs that provide these ISV with a formal attestation (in the form of certificates, references, logos for their websites, etc) of their ability to work with the respective technologies. Most ISV's work hard to attain such partnerships, as this in turn helps them compete more successfully for new customers and win government tenders. So it is in their best interest to promote the platforms developed by the Big Guys, and there is very little incentive to explore alternative technologies. In fact, several large government tenders (here in Bulgaria) that I have been involved with have all mandated the use of a specific technology - .NET and/or java, in the tender specifications. The reason? The actual tender documentation has been prepared by external consultants who are in turn certified Microsoft/Sun/IBM partners.
What the software giants are doing is, is they are saying: "The more effort you invest in using and specializing in our products, the greater formal acknowledgment in the form a of a certificate or partnership status will you receive by us, and the easier will it be for you to win tenders, win the trust of new customers and demand higher margins."
A similar scheme exists for developers. Most of the Big Guys offer various certification courses for IT professionals whereby the certificate obtained acts as some sort of reference before your current or future potential employees. In most positions, if you hold better certificates, you have better chances to obtain a better paid job. So certificates are a great deal for everybody: the training and examination companies earn fees from those taking the certificates, the HR companies can employ less qualified and hence cheaper staff to evaluate candidates, the IT professionals can earn better salaries if they hold the necessary certificates, and the ISV's can invest less money and effort in finding recruits.
The Big Guys thus create an environment where it is not only them that make money, but they also help a lot of other people to make money - the ISV's, the IT professionals, the training, consulting and recruiting agencies, etc. The more and easier this money is, the greater the enthusiasm for their technologies will there be. They create large cliques where everybody has a vested interest in promoting their platform. Why would Apple's Objective C gain such popularity - because Apple has made efforts to ensure that the developers that use it can make (a lot of) money. I remember a time when many java programmers started to flock to C# and .NET. Why? Because .NET programmers get paid better. Why? Because ISV's generally charge more for projects written in .NET. Why? Because the expenses associated with .NET projects are higher (licenses to start with). Why would end customers choose to pay for projects written in .NET then? Because ISVs, consultants, training companies, IT professionals - everybody tells them that this is the best platform to use (except open-source geeks of course, but they are dodgy-looking individuals that cannot be trusted anyway).
This seems to be a win-win for everybody. And it is very hard to beat.