In the recent past, the speed of development reached a new high. The rate at which new technologies are emerging is quite overwhelming. As a software developer and practitioner, I came across this thought many a times, like how many more technologies to learn!!! However, if we look into the past it was quite the same. Innovation never stopped it always been like this.
In 90’s it was languages of hardware, there were so many, then comes the big WEB boom. No wonder there is one new Java Script framework for every day of the year (possibly there will be more than 365). Once after the Web hit the market it was initially quiet for a few days, then comes the Cloud !!! I was privileged to be part of very early cloud adoption programs. Where the concept was primarily your software on our infrastructure. I remember those days where there used to be so much debate on data security in cloud. In-between these some people thought we are missing on that big fat Database world! All of a sudden around 2010-12 all sorts of Databases started to show up! Now in 2020 apparently we finally agreed that we made a mess. So, the best way to manage a mess is making another one this time bigger! Voila! Welcome to the world of Micro-service where we successfully incorporated all the mess we build!
Enough of the prelude, the topic was why we need to know multiple programming languages??? The answer to this question is very simple people made mess and we have to live with it! As a software developer you will have to deal with a lot of different APIs and requirements. As you read in the previous paragraph these days there is no longer one consistent tech stack! As most likely you are building something that have at least
- A web component
- A Mobile App (Android / IOS)
- An integration to a ML framework
- 2 Different types of DB (SQL / Oracle / Postgre & Mongo / Redis)
- A Dashboard
- Hosted in a cloud environment
- Version Control (GIT)
- Multi Factor Authentication (OAuth2 / JWT)
- Logging / Tracing
Now achieving all of these using one language is possible but definitely not optimum. Like using traditional (Java, Apache, Oracle) / (C#, IIS, .net , MS-SQL ) / (PHP, Apache, MySQL) tech stacks were serving its purpose well as long as (Node, Express, React, Mongo) was not there. Typically this is way simpler, as all you need to know is Java Script which is a procedural programming language. On the Other hand you get the world of Python where you have (Flusk, Django, Mongo) but in both cases you will notice there is some sort of a gap! Like to build the service layer Node & C# & Java they are all so good! For the front end React / Angular takes the cheese! But the moment you are in the integration with the ML world Python is by far the leader. Where as relational DBs are still the winner for enterprise grade implementation. Also, for mobile apps C++ / Rust / Kotalin are gaining the wind faster than ever.Now comes the world of cloud management. It brings the rest of the things Power shell / Bash / Shell Scripting!
Now in this world of diversity if you are focused on only one programming language, i wont say it will kill you, but definitively you will feel restricted in multiple fronts. As per a recent study by a popular tech forum most of the Developers are learning one new language every year. In my opinion its not difficult either. As seasoned developers you have your base solidified on one language, now lets use that knowledge to learn the next one.
Clearly to thrive in this messy world of Software development one must know at least 4-5 programming languages that must include:
- Java Script / ES 6+
- Java / C#
- Power shell / Shell scripting
As always, I would like to have your thoughts on this topic. Your comments are most welcome!
Till next time Happy Programming!