Diminishing Returns on Language
Recently, there’s been a great deal of programming language innovation. From the ongoing rise of scripting languages to the ever expanding list of JVM languages to brand new languages it seems as if every few weeks sees the arrival of some new hot language or language extension.
It’s not exactly clear why innovation is accelerating in this area. Part of it is old fashioned NIH syndrome. Part of it is the strange belief that an engineer ought to know many languages, the more the better. And a big part of it is just plain old stupid language snobbery. All of these have contributed to the widespread feeling that the mainstream programming languages are all somehow insufficient.
Is any of this innovation actually making programmers more productive?
Personally, I don’t think so.
Much of the new innovation boils down to syntactic sugar. This kind of sugar might be nice but it’s simply not going to produce any significant productivity improvements in the long run. Saving a few characters here and there is simply not meaningful when the actual time spent writing code in most projects is a very, very, very small part of the whole project lifetime.
Similarly, a good chunk of the new innovation is centered around dynamically typed scripting languages. These languages make it easy to dive in to new projects but they have real scaling problems that can make maintaining large codebases quite difficult. Again, this isn’t a small problem when maintenance is 90% of the project’s lifecycle.
The remaining “new thing” languages are either functional languages or completely new languages like Google Go that target a particular class of problems. Both of these do, I think, have a lot of potential. Functional languages can exhibit remarkable composability. This is pretty important because, ultimately, it’s a language’s ability to enable composability that is probably the most important factor in increasing programmer productivity. Unfortunately there are also several major obstacles to widespread adoption of functional languages. For now, they remain niche languages and I don’t see them getting more popular anytime soon. There’s always the possibility that such languages may slowly, over time, filter into the mainstream and the enterprise. But functional languages have been around for more than fifty years and it’s difficult to see why they might suddenly become popular and accessible to a significant number of programmers.
All of this language innovation doesn’t seem to bearing much fruit, to me at least. This isn’t to say that language doesn’t matter any more. Instead it seems as if past a certain point, there’s a strong diminishing returns on productivity due to syntax. On a deeper level, language syntax might make a single programmer more productive but this, by itself, in the era of the web and open-source and, is simply not such a big thing. What’s much more important nowadays is how to make a whole ecosystem of programmers more productive. And indeed the technologies that are driving productivity these days are those that focus on ecosystems.