sub-title

Also check Orama's Quora and Orama's GitHub
I shall not claim to know so much, but only that I learn new things everyday

Thursday, 21 April 2022

If I can drive a Toyota car, can I not drive a Nissan car? Thoughts for a Programmer or Data Analyst

Computer programmers and data analysts are usually at war about which programming or database language / platform is superior to the other. This is a valid debate, and it has merits without a doubt. For instance, certain languages are more suited to certain types of requirements. It is only unfortunate that sometimes the war goes overboard, and they are seemingly fueled by some power centers. Anyhow, at the end of the day, I always say “let the winner win and the loser lose”, but that is off-topic for today's discussion.

The title of this post says: If I can drive a Toyota car, can I not drive a Nissan car? This is also a valid question. In all fairness, the answer should be Yes, but possibly with some adaptation.

I truly believe that cars are made out of some common template. There are steering wheels, brakes, accelerators, control buttons, etc – which are presumably common to all cars, but of course with model-specific differences. In the same way, programming languages are made up of common basic fundamental constructs, with language-specific differences.

When I say programming languages in this context, I mean to include stuff like SQL as well because SQL is so important in any data-driven software. So, a fair list would be SQL, Python, Java, C#, C++, C, PHP, Kotlin, Javascript, ReactJS, React Native, Groovy, … The list is so long that I get lost and cannot continue listing them.

If I can program in Java (analogous to Toyota car above), can I not program in Python (analogous to Nissan car above)? The answer should be the same as the answer to the car question. Yes! I should be able to program in Python as well, obviously with minimal adaptation.

If I am a good programmer in Java, it means that I know language-independent programming fundamentals and Java-specifics well. In such a case, I can easily apply the same fundamentals to Python, or to any other language for that matter. A programming language is just a tool, which a programmer should be able to adjust to with ease. For instance, when you get a new employment, you may have to quickly adjust to a new language or platform.

There may be value in knowing many programming languages (just like a multi-linguist knows multiple natural languages). In my view, however, there is more value in mastering programming fundamentals than knowing many programming languages. That holds – at least for me. The amount of confusion that results from “knowing” many programming languages can be counter-productive. Yet, if one wanted to program in another language, it is easy to make reference to language-specific nomenclature while coding.

Back in the day, I used to do database programming using both SQL Server (T-SQL) and Oracle (PL SQL) concurrently. The two SQL dialects can be really different and confusing, so I found myself referencing documentation for either dialect all the time because I would grossly confuse T-SQL and PL SQL commands and syntax. However, knowing ANSI SQL fundamentals helped me to cope with the confusion because I would always know what I wanted before I look up the syntax in the event that I could not remember it.

In another incident, I was asked to maintain a system developed in Groovy, and later on develop a new system based on the same language. I had not even heard of Groovy before, but still it wasn't rocket science to adapt.

Finally, having attended many job interviews as an interviewer, I see that many candidates still pride themselves in being multi-linguist programmers … which is good in itself, but without solid knowledge of fundamentals, it isn’t as useful as it may appear. If you know how to drive any type of car (Toyota, Nissan, Mercedes, Audi, Land Rover …), but not very well (because you lack the fundamentals), then things have lost meaning somehow somewhere. Likewise, that is how programming is.

No comments:

Post a Comment