DEV Community

Cover image for It's Not About the Job Openings
Lane Wagner for Boot.dev

Posted on • Originally published at blog.boot.dev

It's Not About the Job Openings

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)

Collapse
 
pinotattari profile image
Riccardo Bernardini

If you go about learning to code by going deep on the basics, you can always learn new technologies as you go.

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++) or for I in 0..N-1 loop or for i=0:N-1 or ... ? Do you delimit blocks with braces, begin...end pairs, end markers like fi or done or just tabs?

Of course, I am excluding here funny and esoteric stuff like stack-based languages (PostScript, FORTH), functional languages (Eiffel, Haskell) or logical programming languages like PROLOG or very low-level like assembly. They have quite different models and require a bit more than just a change of syntax.

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!)