This million dollar question is very frequently asked to/by programmers. Most of the programmers asked or think of this question at least once in their lifetime. If you are a newbie and ask this question to someone who is already regarded as a programmer, you’d definitely get an answer. Then you ask this to some other programmer, s/he might give you a different answer. If you ask this in a programmers group or forum, you’d be blown away by the suggestions. Now you have another question on top of the previous one, “who is right?”
To be honest, I’m not gonna give you a definite answer to this question either. Though I’m not that much experienced to write an in-depth article about programming language wars and which side you should pick. But I think I can give you an insight which can help you to make your decision on your own. Feel free to disagree with me. I like the diversity of opinion and I believe that’s how we learn new things.
Let’s just forget about the question for the moment and let me tell you something.
First of all, I think of the programming languages as vehicles. Some languages are like the bicycle, some are like Cars, some are like boats and some are like airplanes. Don’t take it literally. I’m just trying to give you a broad idea here.
You see, you don’t ride a bicycle like you ride a car, right? Though both are serving the same purpose of traveling, moving you from one place to another, yet they are different. They differ in looks and shapes, also in terms of how you operate them. What else is different? Speed, capacity, safety etc. So, when you intend to learn a new vehicle whether it is bicycle or motorbike or car, do you ask the question from people to people, “Which vehicle is best to ride? I’ll learn that one”? I don’t think so.
The points which influence your decision are:
- I just want to learn it. It’ll be added to my skill set. This skill might come in handy sometimes.
- I’m gonna buy this vehicle, so I should better learn how to ride it. Otherwise, I’d have to hire a driver.
- I want to learn it for earning. Or it will at least help me to find a job.
These exact three options can help you to decide, “which programming language you should learn?”
- Are you already familiar with some programming languages and feel a passion for programming? Then you’d really find fun in learning new programming languages and different programming paradigms. Learning a new language is like enriching your skill set and make you more valuable.
- You have an idea which will change the world or at least, you hope, will change your future. You’d learn a programming language which helps you to build the product of your dream and you most likely won’t afford to hire a programmer(driver) for you right now. So, you’d learn it by yourself.
- You want to learn programming to get a job. You’re the most confused one. This article is specifically dedicated to you and I’ve something important to tell you at the end of this article. So, keep reading.
At this point, I want to introduce you to another question,
“What does it mean by ‘learning a programming language’?”
Let’s say, you’ve learned the fundamentals of a programming language. You can write some basic level code with it, like calculating some mathematical operations or read-write from a file etc. That means you learned to ride a new vehicle. Maybe it’s a car. So, you know how to ride a car and you can go anywhere you want. Life is beautiful, what’s next? Isn’t it enough already? Maybe, Maybe not. Let’s think of a hypothetical situation where you are stuck in the middle of nowhere and your car is not moving. What’s the problem? Is something broken? How’d you know? You just know how to ride it, nothing about how it works or what kind of parts it consists of. So, you are stuck. Only a motor mechanic can help you now. You could’ve avoided this scenario if you’d know something about inner things about the car you are riding, right? That’s exactly the case for a programmer. If you only learn the syntax of a programming language and think that, “Everything is fine, I can update my LinkedIn profile as a Software Engineer/Programmer now”, well, you can. But you’d frequently be stuck with different programming problems and in need of an experienced programmer or StackOverflow to help you out. But learning the philosophy of the language and how it’s different parts work will give you the skill set to solve most of the problems by yourself. So, learning a programming language isn’t limited to learn just the syntax.
I’ve mentioned Programming Paradigms earlier, let’s talk a bit about it. You might’ve heard of different programming paradigms like Functional Programming, Object-Oriented Programming and so on. At the same time you might wonder what these things even mean and why do you need to learn them. Isn’t just learning how to write code is enough?
I think this “Paradigm” stuff has a resemblance to the vehicles too. See, the philosophy behind a plane and a car isn’t same. Though you can call both of them ‘vehicle’, they are not the same, right? Different programming paradigms are the different philosophy of programming. Some will help you to fly, while some will teach you to float in the water. Don’t need to be confused by the jargon. And you definitely are not bound to learn all these paradigms. But if you are learning a new language you should be familiar with its paradigm. Otherwise, you would find a lot of stuff very weird, when they are actually not. Also, it will make the learning curve steeper. Remember, learning different paradigms will give you the insight to see programming with a whole new perspective and help you to be wiser. So, that’s your choice whether you should learn different paradigms and explore different languages or just want to stick the one you are fond of.
Do you really need to learn more than one language?
Would you always use a single programming language or a single tools/framework to build your project? If yes, why you would learn various programming language? You can just learn one and use it everywhere you want, right?
Let’s say you’re building a local business where you’d deliver some products from shop to customer. If you are delivering only small products you can easily use a bicycle for product delivery. You won’t use a Truck for that kind of job though you can. So, the primary consideration to pick the right vehicle is which suits your need properly. In this case, your business is small you don’t need to think about some complex delivery system or use some heavy vehicle to do the job. Now, what if you expand your business to international level and you need to deliver between countries? Would then bicycle or truck can help you out? Let’s for the sake of the example think that there is no border between countries, then you can definitely use truck to deliver products from countries to countries. But would it be the best solution? What if you break down your delivery flow to different parts. Like first you’d collect the products locally and send them to airport by trucks. And then you’d use some cargo planes to carry them to another country and finally picked them up by trucks again and deliver it to the end customer. See, you’ve used different solutions and combined them together to solve a single task. Also, it is more likely to be the best solution.
This type of scenario is common to Programming world too. In terms of programming how you would break down your big project into different parts and make them feasible to handle a large number of tasks is mostly the software engineering or software architecture related decision. And in that part, you might need to use different programming language, different tools, architecture, services to do the job. Or you can do it by a single one while you can. So, you need to know the trade-off between your decisions and take the one which best suits your need.
Enough for today. Let’s just sum it up.
If you are a novice programmer or want to learn to program to find a job, I can suggest you not to be caught up in the hype. Try to get information about which programming language is popular to find a job at where you are located or can shift. Learn it as fast as you can, do some experiment, play with it and search for a job. You’d learn a lot from interviews too.
But if you are a programming enthusiast, you can start learning any language you want. Learning basics of the language and start coding with it won’t take more than few weeks. After that, deep dive into the advanced stuff of it and the core philosophy of the language.
And most of all, “Never stop learning”.