Becoming Programming Language Agnostic

Over the years, I have written a lot of code.

As a twelve year old, I was introduced to GW-Basic. I remember scribbling my ‘programs’ on paper because I didn’t always have access to a machine. I grew up to spend a lot more time with C / C++.

My first freelancing gigs introduced me to Perl and PHP and one couldn’t escape writing HTML, JavaScript and CSS code.

While at university I sharpened my C / C++ skills while getting familiarized with Java. After university my work dictated that I immerse myself in PHP and Java.

This was when (2005-07) the Ruby on Rails hype machine really got kicking and I remember evaluating / using RoR for personal projects. About that time I took a look at Python and fell in love. For subsequent projects, my first choice would have always been Python.

Of course client side programming was difficult back then and my (temporary) answer to that was ActionScript / Adobe Flex. As time progressed and browsers improved, I hopped back onto to the HTML5 bandwagon. This was when I re-learnt JavaScript and really started appreciating it.

Not to be left behind on the server side of things, I experimented and used Scala for work while also making use of new frameworks spawning in the Java universe.

Recently I bought into the Node.js hype and decided to evaluate it. It definitely was a good choice for a certain kind of apps I wanted to create. Yes, Node.js has been a good choice for Review19.

If I was to start a new project today, my first choice would either be Node.js or Python. That’s not to say I have definitively ruled out other technologies, but I feel between these two most kinds of apps can be built. JVM based languages could be a choice for compute heavy, threaded apps.

Now the purpose of this post isn’t to recommend my technology choices and try to convert you. Au contraire I feel the choice of language is almost always irrelevant. This is especially true if you’re building a generic app.

Don’t get me wrong, I certainly believe in picking the right tool for the job so for example if you’re building a real-time app with long lasting (web socket) connections then Node.js + Socket.io is probably one of the best choices for you.

What drives us to make any choice depends on our personal bias, project context and business constraints. In which order? Don’t know. It varies from time to time.

It would be nice if we minimize the influence of personal bias.

One lesson for all programmers out there, and for myself of course, is not to let ourselves be identified with any camp. Which programming language we like isn’t our identity.

If we are to spend time in this industry, we’ll have to learn a wide array of languages. Let’s be open to learning and overcome the reluctance to change.