Wednesday, August 19, 2009

Language Choice is Similar to Choosing a Musical Instrument

Following on from my post Software Development is like Painting I will take the opportunity to make another analogy, this time at a lower level looking at the choice of language in software development.

Is this going to be a blatantly obvious post ?

It does not take a rocket scientist to guess where I am going with this analogy – different tools have different strengths and weaknesses and you must pick the most appropriate one.. See that was easy – all done.

Just kidding… so if that is not really the point, what is the post of this post – well simply that the musical instrument analogy has an interesting aspect to this.

So what makes this analogy interesting ?

Now, while we know that every mature  ( and many immature ) developers appreciate that the different languages have their strengths and weaknesses – these same people somehow manage to get into a “holy war” when the rubber hits the road and discussions start about which language is better.

What is interesting to me is that I have never heard the same “holy war” or “curly brace war” when it comes to musical instruments. People tend not to fight about the fact that a guitar is much better than a piano.

However, there is very much a “curly brace war” when it comes to different musical styles.

So if you are following this highly skilled  progression of logic, you will see that, for some reason, many developers, despite their maturity in many cases, still see language as a musical style and not as an instrument.

So What ?

Well if we could find out why this distinction is not clear, then in theory we could find ways to make it clearer and stop these ridiculous wars, and get on with the job of making great software products ( the music ) – which then should be appropriately debated and fought over.

My Theory…

Perhaps it is simply because, in many cases the line between instrument and music are blurred simply because we tend to have a 1 technology solution for an application – so from the developers perspective that instrument basically is the music.

Now I am sure there are many exceptions to this, but the point is that it is not easy for a developer to seamlessly slip from one language to another, and so makes the barrier to entry much higher for whatever the other language is.

Now imagine a world where is a single file – lets call it TheProgramme.code which had a slew of mixed code.

So there is one method for sending mail that simply uses C# and .net to manage sending the mail, but directly underneath that is a method for parsing some text and well that method is written in Perl for the natural regex. Then there is some bit unpacking which obviously would be done with Erlang a bit lower down etc…

This programme is compiled by a single tool ( which would  just link in all the appropriate compilers at the right time – lets just pretend that is not hard  ).

In a world like this, I wonder if people would not more clearly see that language is simply an instrument, and that the application is the music.

blog comments powered by Disqus