Bruce Lee has once famously quoted “I fear not the man who has practiced 10,000 kicks once, but I fear the man who has practiced one kick 10,000 times”. In year 2020, do you need to learn a new programming language or do you need to work on the languages you already know like Bruce Lee has said? Like many other questions, the answer is: it depends.
If you are just starting to learn your first programming language, then I would advise you to first learn that language properly. But if you already know one language properly or you are a seasoned Software Developer who has already master more than one programming language, then I would suggest you learn a new language next year.
Learning a new programming language has a price. It needs lots of your time, energy, and brain cycle. Still learning a new language can give you significant benefits directly or indirectly.
Here I am shortlisting five main advantages you can have if you learn a new programming language:
Source: The Blind Elephant
In modern days, programming language landscapes are vast, varied and complex. Usually, one programming language only covers a small part of the programming language landscape. There is a famous story of the blind men touching only part of an elephant and interpret elephant in their way e.g. someone touches the tail of the elephant and interprets elephant like a rope. The same is true for programming languages.
Here are the mainstream programming language paradigms:
\In one paradigm also, there are many more sub-paradigms. Usually, one programming language focuses on one paradigm (e.g. C is Procedural, Haskell is Functional). There are also many languages which touch multi-paradigms albeit not 100% (e.g. Java is Object Oriented and partly Functional).
Learning a new programming language will give you the bigger picture of the programming languages. Like any other domain, having a bigger picture is often helpful and gives you an extra edge.
In happy old days (e.g. last century), the life of a developer was simple. In those days, you could have learned one mainstream programming language and work for the rest of your life.
But in modern days, the life of a software developer is more dynamic. With the rise of Microservices, Polyglot programming is a norm now rather exceptions.
You may have to learn a new language in your job or project. The human brain is excellent in transfer learning. If you already know Haskell/Scala, you can learn other functional programming languages fast. If you learn one of the modern languages, e.g. Kotlin, then you can learn other similar modern languages (e.g. TypeScript) fast.
Nowadays, even Frontend web frameworks use different programming paradigms. So, if you already know Scala/Haskell, then you can learn the Frontend framework React faster than others as React uses the concepts of functional programming heavily.
Often companies want to explore new software development with a new software stack. If you already know the programming language, you can easily grab the chance and join the newer, cooler project.
If you only know how to run one tool, e.g. hammer, then you will try to use the hammer in every scenario where it is not the right tool. The same is true for Software Developers.
Learning a new programming language will enhance your toolset and make you a better developer.
Road to Full-Stack Software Development
With the rise of Microservice architecture, the demand for Full Stack developers will only increase. I have written a blog post on best practices for Microservice Architecture:
In that article, I have mentioned that Microservice architecture needs a cross-functional team. If there is a team with e.g. 2 developers who can only code Frontend and 2 developers who can only code Backend, then the team will not be flexible enough. As Frontend and Backend developers work on parallel, the progress of the team will be hampered e.g. when both the Frontend or Backend developers cannot work. The team will be in a much better position with few Full Stack developers who can switch between stacks.
Also, the company will willing to pay an extra salary to a Full Stack developer.
Now, learning another programming language will not make you a full stack developer. But it will help you greatly to be a full stack developer.
If you want to climb the career ladder i.e. if you want to be a Software Architect or Solution Architect, then you must not only have deeper expertise but also wider expertise. In the Role of Software Architect, you should make design decisions about the complete Stack and not only about Backend or Frontend.
Once upon a time, there were “Ivory Tower” architects who can design Software Architecture for a project without knowing the hands-on coding. But companies are increasingly looking for software architects who can code.
If you are a Software Architect who can code in multiple programming languages and can talk with developers, then developers will show you more respect.
Once again, the path to Software Architect or Solution Architect will need many other skills. But learning new programming will help you if you want to be a Software Architect/Solution Architect.
Discover more about Programming Languages with RobotLAB!
Check our products page and discover different products that are ideal for your STEM classroom! And don't forget to take a look to our online learning platform Engage!K12 that offer a wide range of lessons for students and teachers !