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.
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.
🔗 Video version of this post
🔗 The total number of jobs doesn’t matter
- Golang: 61,673 open positions in the US
It doesn’t matter how many total jobs there are, because you only need to land one.
🔗 Looking at the ratios
So, let’s do some more math:
477,512 / 61,673 = 7.7
73 / 7 = 10.4
Next, the “competition ratio”:
10.4 / 7.7 = 1.4
🔗 Can I trust these numbers?
🔗 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.