In the 2005 December 14th issue of Wall Street Journal (requires login) there is an interesting column by Lee Gomes under the headline "Computer Languages Multiply, Pleasing Many – but Not all". The following qoute summarizes the column well:
Languages are proliferating in the computer industry these days, and software programmers couldn’t be happier about the choices they have. For their bosses, though, it’s often aggravating.
We blogged about this proliferation earlier and noted that “the more specialized a language is to a domain, the better it fits to solve problems for that domain. These niche languages trade off generality for efficiency in a domain and they are simply better and more efficient tools for that domain.” The domains for the languages above happen to be web applications. As we have discussed here, complexity is reduced when the degrees of freedom is aligned with the problem domain.
But the article then takes a new twist on this phenomenon:
All of these new approaches to software also rankle the chief information officers of the world. Usually, an executive responsible for managing technology tries to limit the number of software (and hardware) systems that are in house, if only for simplicity’s sake. These days, though, programmers are likely to whine, beg and plead to be allowed to use the hot new language that everyone else seems to be using.
So, according to the article, CIOs want simplicity, but programmers want something to the contrary. How can we explain this perception that the desires of management and the desires of the programmers are in conflict even about simplicity?
Here’s what’s probably happening. Simplicity – or lack of entropy – is like the cold within a refrigerator. This is what the programmers like – the “cool” language (even though the article called them “hot”…) that reduces the complexity that the programmer sees locally. But just as a refrigerator is a net energy user and heat producer, from the manager’s point of view the total complexity may have increased: the additional languages raise many organizations issues: legacy, training, maintenance, testing, build procedures, and so on.
The challenge still remains to reconcile the systems and reach a better overall optimum.