I talk to boatloads of students who are starting to learn to code, and invariably they are hyper-concerned about which programming languages and technologies they should be learning.
Now, first of all, I don't think it matters all that much. You don't fail to break into tech because you learned JavaScript instead of Python, or Go instead of Rust. You fail for a bunch of other reasons, chief among them being a lack of dedication, time, and focus.
That said, choosing good technologies to learn can certainly help. Unfortunately, almost everyone I talk to is only concerned with one metric: the total number of jobs for a given technology.
This is a mistake.
The total number of jobs doesn't matter
According to Stack Overflow's latest survey, JavaScript is the most popular programming language in the world, both for people learning to code as well as professional developers.
I also did a quick search on LinkedIn Jobs for "JavaScript" and "Golang" jobs. Here are the results:
- JavaScript: 477,512 open positions in the US
- Golang: 61,673 open positions in the US
If you look at those numbers and think "I should learn JavaScript because there are more jobs", you're not alone, but you're wrong.
It doesn't matter how many total jobs there are, because you only need to land one.
-- me
Looking at the ratios
To dive deeper I went to Google Trends and looked at the number of people searching for the terms "Learn JavaScript" and "Learn Golang" over the last 12 months. Here was the ratio:
JavaScript: 73
Golang: 6
73/6 is the ratio of people searching for "Learn JavaScript" to people searching for "Learn Golang". Google Trends, like the Sith, doesn't deal in absolutes.
So, let's do some more math:
JavaScript jobs to Golang jobs: 477,512 / 61,673 = 7.7
7.7 JavaScript jobs for every 1 Golang job
JavaScript learners to Golang learners: 73 / 7 = 10.4
10.4 JavaScript learners for every 1 Golang learner
Next, the "competition ratio": 10.4 / 7.7 = 1.4
Based on these numbers, I'd estimate that your competition for JavaScript jobs is about 1.4x higher than your competition for Golang jobs. According to this completely scientific and in no-way fallible analysis, it looks like Go might be a better choice if you're trying to minimize your competition for jobs.
Can I trust these numbers?
I don't know, probably not. My goal here isn't to convince you to learn Go, Python, Rust, JavaScript, or anything else for that matter. I just want you to think about the job market in a slightly different way.
This has been top-of-mind for me lately due to an anecdote from a couple of years ago. I was working as a hiring manager where I was looking for mid-level Go developers. My coworker was hiring mid-level JavaScript developers at the same company. When I opened a new position I would get 10-20 candidates within 2 weeks. He would get 100+ candidates within the same time frame. I felt bad for the JavaScript candidates.
Does the total number of jobs matter at all?
Yes, but I prefer to think of it as a threshold. Like, if there are only 100 total jobs for a given technology, even if you're one of ten people in the world who knows it, you're going to be entering a very niche market that could dry up at any moment.
It's like, "is what I'm learning sufficiently popular that I can reasonably expect to find a job"? If it is, then I'd argue the next most important metric is the ratio of candidates to jobs.
What else matters?
The next thing to consider is your location. Remote work is great, but I'm a big fan of junior devs trying to work on-site for at least a year or two. You'll learn faster, and you'll actually have an easier time landing a job in the first place (assuming you're in a place with some jobs). When you compete for a local job, you're only competing against people who live in your city, not the entire world.
If Python has tons of jobs, and a fantastic ratio of candidates to jobs, but where you live the only developer openings are for Go and Java, then I'd recommend reconsidering your choice of technology.
Please don't worry about it too much
Like I said at the outset, you won't fail to break into tech because you didn't choose the perfect stack to learn.
If you go about learning to code by going deep on the basics, you can always learn new technologies as you go. Fundamental concepts like problem-solving, imperative programming, data structures, algorithms, architecture, clean code, io, networking, HTTP, REST, databases, and caching are universal and language-agnostic. If you know how to build a REST API in Go, spinning one up in Express or Django is going to be a quick learning curve.
Syntax is the easy part. Best of luck out there.
Top comments (1)
I couldn't agree more. In my career (as an engineer, not a programmer, I like to say that programming for me is a tool, not a job) I self-taught and used maybe a dozen of languages (including funny things like PostScript) and I can say that in traditional imperative languages 90% of the difference is just syntax: do you write a for loop like
for (i=0; i<N; i++)
orfor I in 0..N-1 loop
orfor i=0:N-1
or ... ? Do you delimit blocks with braces,begin
...end
pairs, end markers likefi
ordone
or just tabs?If you have some experience in programming, you can learn the basic of a new language and be operative maybe in a day or two. I learned Ruby in an afternoon with a tutorial, Ada took me a couple of days during my free time. Granted, you will not be an expert and you need more time to learn the nuance and peculiarities of the new language, but you can do that when the necessity arise. Also, in my opinion, the best way to learn a programming language is to use it, like with human languages.
Let me conclude with some shameless link to a similar post of mine. My point of view there is a bit different, there I immagine replying to someone who just wants to learn to code, without any specific reference to getting a job (maybe they could want to do that for personal learning or as an hobby... Hey, I entered this world as an hobbyist!)