I began to think if there is any programming language that can be a silver bullet for all problems. I think it will make a developer’s life easier. Why should I learn more and more language if I can use a language, and I can build anything in this world with only a single language? So I began to create some list of what “Rule Them All” programming language looks like.
1. Should be able to build all types of application with different purposes.
2. Should be able to build application on top of different platforms such as desktop, mobile, and web.
3. Easy learning curve.
4. High performance, easy to read, lightweight
All checklist are ready, and here we go. In pursuit of finding that “Golden” programming language! I tried to learn all (popular) programming languages in the market. Tried some basic stuff with language A, watched tutorials for language B, etc. Looked back into my checklist and find out if any criteria satisfied.
Time goes by and I still can’t find any programming language that fits with all my criteria. This thing comes to the conclusion that
There is no silver bullet for all problems.
I know many people who can’t adapt with various programming language. I don’t mean that we should learn all programming languages, but these people are too comfortable with a programming language and they are expecting that they can solve various problems.
Then I began to think again. If I can’t find any programming language to rule them all, how to choose the right programming language for solving my problem let alone maximize my productivity? Looking back to my checklist, I found that some criteria can lead me to these questions. Questions help me to identify if I really need to learn this programming language or find another one. So here are the questions
1. What kind of application do you want to build?
Software application comes with various purposes. There are a business application, information aggregator, lifestyle application, games, and many more. Knowing what you want to build can lead you to the right programming language. Does your app need to have response below than 500ms? Does your app have complex computation? Ask some questions about your app!
2. What platform your app will be built?
After you find what kind of application you want to build, what kind of value you want to serve your users, you need to know on what platform your app will be built. Is it a web app, mobile app, or desktop app? If it is a mobile app, is it on Android or iOS? Is it for Windows or Mac? Because there is no single programming language that fits all platforms. Each platform or operating system is built using a specific programming language. Like why you learn C# if you want to build a MacOS app? Why did you learn Swift if you want to build an Android app? The key is to look for languages available on that platform.
3. How is the learning curve?
Some platforms have few options of programming language to choose. But there are platforms where you can only build using one programming language. For example, before Swift came out, Objective-C is the only choice for you to build your iOS or MacOS application. How about building back-end on the linux server? You have several choices like Java, Ruby, Golang, and many more. If the app you want to build has only one programming language option, then there is no choice to learn that language. But if you have more options, consider the learning curve before you jump in. Because the learning curve will affect your productivity. If the language is hard to use, you will jump back and forth to StackOverflow or its documentation to find way out. I’m not saying that you don’t need to learn (relatively) hard programming language. But also consider your situation. Are you learning for the long term? Do you have deadlines?
4. What are the “selling points” they offer?
Every product surely has its own selling points. I’m not talking about commercial products- but any kind of products, including programming language, has its own strength. You can find each programming language strength in its documentation, or find any review in the community/internet. For example, Golang is known for its performance and readability. If your app cannot tolerate extra 100ms latency, then go for Golang! Or like Clojure, which is good for functional programming. You don’t use OOP? Add Clojure to your options!
5. Is it still relevant to the market?
If you do programming for work, consider this question before you choose your language. But if you do it just for fun, you may skip this part. This point applies to language that has “competitors”. Server-side development has few options for programming languages. The fact is many people do programming for work, which is totally fine. They need to know what the market needs. Like why you need to learn PASCAL (sounds too old isn’t it 😂?) when the market needs Node.js developers? Or if someone really likes to work in big corporates, then learn Java / C#. They need it so bad!