I have often been asked this question: what programming language should I learn? Sometimes, this is phrased as what is the best programming language to learn? To answer this question let's talk about trains.
Fig 6.4.1: Asking for the best programming language is like asking for the best train
Asking what's the best programming language is like asking what's the best train.
It is a perfectly valid question. But imagine asking that question in a room full of train enthusiasts. You will get a lot of heart-felt, enthusiastic and completely different answers like these:
This one can climb steep hills …that one goes underground… that one's free... and so many more! All these reasons are good. All these reasons are true and they are understandable, but they're missing a vital question. Where do you want to go?
More than anything else, that question will tell you which train you need to get on. You could be admiring the most magical and technologically-advanced train on the planet, but if it's not going in your intended direction, it is not the train for you.
Now, this is it: Your decision is good if you're learning a particular language because you want to expand your role in your current company where they use mainly C#, and .NET, Java, or may be Ruby on Rails or whatever you're surrounded by. What you have a chance to use is probably the first technology you should dive into.
Fig 6.4.2: Some programming languages that your current company may be using
Really this step is your decision because you may even have been reading about different languages but hesitant to commit yourself because you're worried about what happens if you pick the wrong one.
Now in practice, this is really not an issue because as we've seen throughout this course, so many of these skills apply across languages. So,
the first thing to ask is not what language is the best but rather what kind of development you'd like to explore or what type of things you're interested in building?
That shifts us from what train do I pick to where am I going? You don't need some massive 5- or 10-year master plan, but if you can decide on a short to medium term goal, this will immediately narrow your choices.
Are you most interested in making games? Consider technologies like Unity (C#) and Unreal Engine (C++).
You'd find certain languages more popular here, like C++, but C++ would not be a language I'd suggest if your focus was web development,
For web development, then you need a framework like Ruby on Rails or ASP.NET with their associated languages, and very often, JavaScript.
Do you want to make phone applications? If so, you need to lean Android (Java) or iOS (Swift).
Maybe none of these. Perhaps you're more interested in writing programs for enterprise- level businesses where your goal is to work for a Fortune 500 company (a company among the top 500 of the largest United States corporations).
So, for Enterprise Applications, I recommend Java, C# or VB.NET.
Perhaps you'd like the work of visualizing massive amounts of data to make sense of it all.
For Data Visualization learn Python or R (very useful in finance and banking)
Follow the guide in Fig 6.4.3.
Fig 6.4.3: Some software development areas and their associated languages
There are of course, many other specialized areas, such as computer vision, audio robotics, and a host of others. Of course, I'm just scratching the surface here and being intentionally brief. There are many other options within each of these categories, but the point is you will find some languages and technologies are simply more associated with particular types of development.
Now, if you see my guide and think, but I want to try it all. Well, you can but you just can't do it all at the same time! So, figure out what you want to do first, and if you're still not sure, then let me narrow it down to my personal and unashamedly biased opinion.
Here’s my top three suggestions for a first programming language:
Fig 6.4.4: My suggestions for first programming languages
Why?
Well, first they're all languages that would be considered easier and friendlier than some of the alternatives, but they're not introductory or beginner languages. They're all modern, practical and pragmatic, real-world programming languages.
If you're interested in making websites, look closer at JavaScript. If you enjoy and mainly work on Apple hardware, look closer at Swift. If you can rule both of those out, then look at Python. After picking your choice of a language, try to watch a few hours of a fundamentals course or a getting started course on Udemy or elsewhere.