Ask HN: How would you choose which language to learn?
I was looking at a list of how popular different languages are on GitHub, and it got me thinking.
If I wanted to learn a new language to expand future opportunities, does it make more sense to focus on: A) the most popular ones because there will be lots of positions for it, or B) less popular ones where there will be fewer jobs but also less competition for those jobs. I think it may just come down to preference, but I'm curious which paths you've chosen yourselves and how it turned out.
7 comments
[ 2.9 ms ] story [ 23.0 ms ] threadFirst, as you point out, less competition.
Second, these languages are usually a little younger, and there is a chance to be part of a nice community from the beginning
Third, learning an "exotic" language is sometimes a great asset on a resume even if you interview for a position involving a different technology. It shows intellectual curiosity.
But as the other comment states, B tends to be more exciting, and allows for deeper social connections more frequently. Sure, millions of people might know java and you can say, "Hey I know java too!" But I doubt the conversation will go any further than that. However, if you have experience with a less popular language and meet (or are interviewed by) someone that also knows that language, it will create a much deeper connection.
All in all, do both if you can. If you have to choose one or the other, learn something new and become a part of a smaller community and watch it rise or fall.
But if you want to look at it from a purely economic standpoint, the factors you mentioned interact in a complex way. Another one to consider is the salary curve for a language over years of experience. Not every language has the same pay. I would also consider the number of entry-level jobs over the total number of jobs.
I have an article exploring all these factors here if you're interested.[1] Enjoy!
[1]: https://medium.com/@tboyd/which-language-should-i-learn-answ...
If you're going to focus on a specific language, make sure you're applying it to a problem where it makes sense.
That may not be a language. That may be a programming style (functional? reactive?). It may be a library or a framework. It may be a platform (Android?). It may be a "language" that we don't think of as a language (SQL?).
My current answer is Android (not that I'm making much progress on it...)
Credit where due: I got my version of the question from my wife. She's asked it a couple of times over my career.