GENERAL

It isn’t the Language. Just your mind. Everything else is a Tool.


One of the common patterns amongst Software Developers or other IT professionals, is their passion and loyalty to their tools. From operating systems, programming languages, hardware infrastructures and all what not. Today I will be focusing on the programming language side of things.

We all know the flame wars that repeatedly occurs on the internet: My Programming language is better than yours, C# is the best thing after sliced bread, Python is the most readable language after Klingon, you only a real programmer if you program in Haskel etc. Lets pour some ice on that situation for a minute and lets talk like adults just for a second.

Programming languages are tools just like a drill, a hammer and glue. Some tools are better suited for some task than others and that doesn’t mean the others are useless. Your choice of tools will directly affect your productivity. Also there is the issue of brand affiliation. You may like one brand over the other depending on whatever personal preference you have.

I have been fortunate enough to learn a couple of languages from QBasic, Pascal, Fortran, C++, Java, PHP, JavaScript, C#, some Python and now Scala. This means I have been exposed to different programming models. I remember when I started Fortran and never really liked the whole idea of counting column spaces to insert code but Fortran is really good for Mathematics based problems.

You will be considered crazy if you decide to use Fortran to build a reservation system. To be honest, you can build a reservation system and maybe add some crazy maths to the reservation process. The power of the tool is all a factor of your imagination and understanding of that language. Life isn’t easy anyways.

Lately, I have been taking some Python training at my place of work. I must say, I am not a Python fan. I tried looking into Python a while back and I couldn’t stand the syntax. Curly braces would suffice but Python hand none and made use of indentation which reminded me of Fortran. Being a Linux guy, I do know a lot of packages, libraries and tools on the OS are written in Python and so if I really want to understand my development environment, a little Python won’t hurt.

My colleagues are passionate about Python and are looking forward to working with Django. I don’t know much about them but I have a different approach to picking up tools. And when we have an unanimous vote on decisions, I tend to take a step back and get a better feel for that decision.

I have been able to get over the lack of braces in Python due to my exposure to Scala. Scala allows optional braces in some cases. My Scala story will be written another time. So while sitting in the training room listening to the Python master drill us on how awesome Python is, I couldn’t help but compare it to PHP and feature and concept level.

So maybe Python has a few syntax that shortens the amount of code written to achieve a goal, I feel that is great and with a little work, you can implement same feature in PHP. It may be tricky but with a reasonable amount of abstraction, you can have that clean elegant expression to rule the dev space. Considering the fact that the source code for PHP is available, nothing really stops you from picking it up and adding your desired extension. Afterall, Facebook invented the Hacklang and made it compatible with PHP.

After a few hours playing with Python on day one, I found myself looking out for programming features I use on my daily grind. “How is inheritance done?”, “Does it support Generics like in Java and C#?”, “How is information hiding done? What!! No private property?”, wait did I just write “No private property?” and what in the hell does passing self to a function mean? What happened to good old this?. I could use the few points and go about singing Python isn’t squat but hold on: Does self still achieve the same goal as thisreference?. So in the end, your choice of tool is a personal preference to the most part and the rest is a limitation of the tool to whatever task you trying to solve.

On day two of my Python training, we were introduced to Django Framework. With every feature mentioned, I couldnt’ help thinking “I can do that in Laravel”. So at this point it didn’t feel like much gain to me to be doing Django. Now one of the touted features of Django is Automatic Administrative UI generated from your models. This I think is cool and saves me a lot of time when it comes to building an Admin panel. Lord knows I am fed up with building Admin panels. But here is the thing, Django is built on Python, Django isn’t Python. And I feel if someone found a good reason they could replicate the Django design in most Languages out there.

So will I learn Python? Yes. I think Django is cool and if I am building a personal product, I can focus more on the customer view while keeping my Admin panel as generic and functional as possible. Heck it may save me more time working in Django than Laravel from a Time to Market point of view. Better still, if I feel smart enough, I can build my own Framework to rival Django. The decision is mine.

At the end of the day, I prefer to be Language and tool agnostic. Next month may be my Go Lang month, I may just find true love in Elm or in Elixir or I may just go complete Ninja and swear my allegiance to Erlang. What does it matter the language? All that matters is what I can do or will do with it. The client at the end of the day doesn’t care about your language, all they want is value even if that is done through JavaScript.

So I wish people will put down their arms and stop trashing other languages. I feel to gain the right to trash another language, you must have either contributed a feature to an existing language or built yours from scratch. And to add salt to injury, most people haven’t had much diverse programming language background and I think they need to keep low for a bit.

Originally appeared here.