On Choice & Necessity

Featured image

I see quite a few arguments in various forums bemoaning about the surfeit of choice that is available in the Java world. For instance, there was a question about the best choice for Unit testing frameworks in Java to which the answer was that the questioner was better off choosing .NET since it tends to be too confusing to choose different frameworks and making them all work with each other. Since when did variety become a bad thing?

Whilst there is some justice in the assertion that different frameworks tend to introduce complexity in co-ordination, it is also true that the very fact that there are so many different frameworks means that there are various ways of accomplishing the same task. People have resorted to different methodologies in accordance with their choice and situation. There is also of course the “Invented Here” syndrome that manifests itself in the proliferation of different frameworks with near identical underpinnings.

This entire complex ecosystem is hence a product of vanity and creativity.

The vanity springs from the “invented here” syndrome that was mentioned in passing in the preceding paragraph. The creativity is a natural outcome of what Jonathan Zittrain would call the generativity of the java programming language. Anything open and extensible generates creativity resulting in the creation of  various products and frameworks built on top to leverage its potential.  Take, for example the mock testing frameworks that are available in the Java world. EasyMock and JMock are two frameworks with slightly varying ways of implementing mock objects. Two sets of people had the same idea of implementing mock objects but chose to implement it differently. Each of these two methodologies are equally valid and resulted in various ways of achieving unit testing.

This surfeit of choice calls for a different set of skills in today’s world. Awareness of the existing frameworks for accomplishing a certain goal along with the advantages and disadvantages thereof each one of them vis-a-vis the other, becomes an essential skill. At one time, open source frameworks were dismissed as naive and amateurish. But the fact is that generativity thrives well in unhampered surroundings. Hence open source contains more creative frameworks than ever. These have been tested and enhanced by numerous users making them increasingly reliable. Hence a knowledge of open source frameworks becomes a quintessential skill of any aspiring IT architect.