151 comments

[ 4.9 ms ] story [ 219 ms ] thread
Please render JavaScript and TypeScript correctly; it isn't Javascript or Typescript.
Thanks for the feedback, I would definetly do it
I just wanted to apologize to you for not taking the time to assess your work. As others pointed out in this thread, that was jerkish behavior.
Peak HN comment.

Just yesterday someone made a comment about how someone could spend years laboring away on some super cool piece of tech and someone on HN will ignore it all just to point out how the kerning is wonky.

Your comment is exactly what they were referring to. No comment on the project, the data, the conclusion. No related tangent, personal anecdote, or anything else that would generate conversation. Instead, hyper focus on finding some minor flaw that has absolutely 0 impact on the substance or delivery of the project and be sure to call it out in a condescending way.

Should Javascript be written as JavaScript? Sure. Does it materially change anything at all about what is being presented? Absolutely not.

Thanks for your perspective.

FWIW, my comment was made in good faith to help the author create a better impression with folks who are steeped in those two technologies. At the same time, I can see how it can feel pedantic.

Peak self-absorption.
Please learn how to use commas correctly. They aren't for joining independent clauses without a conjunction.
and yet, high demand doesn't equate to high comp, most of these languages are race-to-the-bottom markets with low barriers to entry

c++ is probably the exception here

predict even the Go market will eventually resemble the js market...a massive pool of low-quality positions with mediocre comp

15 years ago doing JavaScript or Python you’d be classed as a low tier web developer on the bottom of the pay scale.

Searching the job market the past year everything is JavaScript or Python because of the low barrier of entry. With the demand to hire high numbers of people and lack of people, these roles are now at the top of the pay scale.

Maybe it’s AU specific but if I was to take some specialised role requiring deep knowledge and experience, not using JavaScript or Python, I’d be on at least 20% less than a role essentially knocking out a ReactJS frontend or NodeJS crud services.

It’s dilemma I had the last year. Recruiters phoning with somewhat highly specialised roles that interests me, talent pool is extremely small for the roles, only to be told that the pay is at minimum 20% less than what’s available for nondiscript JavaScript/Python roles. Unfortunately for me I need to enjoy work or suffer mentally, and while I have used JavaScript, Python, insert name of frontend/backend framework in either language, extensively, it feels like torture having used better and knowing I can do better.

This is great if only to pop the HN bubble where everyone seems to be coding in Rust or Go.
This is only showing demand. It doesn't include how many people are already employed using these languages. Perhaps these languages are popular and self-taught among already employed programmers so demand is reduced.
Are you able to extract what framework is the most requested?
This blog has two more articles. One is about the most popular frameworks.
Headline seems unrelated to content?
How so? The HN title, "I scraped 7M dev jobs for 8 months and these are the most demanded languages", is different from the article title, "Top 8 Most Demanded Programming Languages in 2022", but they're quite similar and both describe the article content.
I am suspicious of that mirrored graph between Java and JavaScript. I see no real world reason for they behave in such symmetrical and substituting way month over month. Are you sure there is not a parsing error when analyzing those two languages?
Since those are percentages it could simply mean that a great amount of Java positions opened up in that period, stealing percent points from other categories. This explains the symmetry, but not the causes.

May it be a huge amount of positions have been incorrectly labeled for Java instead of JavaScript (you know… Ham / Hamster) and then corrected a month later?

Or the absolute number of Java listings is pretty much constant (permanent, big corps that just leave listings online all the time), and as smaller web companies add JS listings, and remove JS listings, that fluctuation makes the Java percentage move in inversion to the more volatile JS listings.
Many job ads seem to do things like confuse C and C++ (and then you read the ad further and find its a C# project), or just slap a long list of technologies, I won't be surprised if these ads confuse Java and JavaScript too and list them together.
Couldn't this also be due to personalization? Algorithms could be showing more of one language and consequently less of another.
I read this as javascript possibly being the language of recent growth: It's relatively young, very much en vogue, and so new startups are likely to use it disproportionally (because the guys who have been around for a while will not just switch their millions of lines of code to js because it's now become a thing).

But startups are also more likely to falter quickly in a recession than the old guard. And that's where java (or c#) is overrepresented.

A lot of HR people still don't know the difference in 2022, it's quite common to see job ads listed as Java/Javascript, then you only find out when talking to them they specifically mean one or the other.
Yeah or "C/C++" (and then sometimes finding out its actually a C# job).
Or "fluent in Java, Python, C/C++, fortran" and then find out it is an excel spreadsheet with occasional macro job
This pisses me off the most because it makes decent searching/filtering impossible.
yeah, I saw many offers with "java script", so it seems like many Java jobs could in fact be JavaScript
Ruby remains in relatively high demand, despite a decade of once a month blog posts claiming "Ruby is dead"
I know Ruby is going out of fashion, but Rails remains an incredibly productive platform that can scale a good bit.
Everytime I try out a new framework, I end up just switching back to Rails because "wow, I could do this all so much quicker in Rails...". Part of that is just a decade of familiarity, and part of that is the maturity of the framework.
The only thing that I've found to be more productive are the integrated GraphQL platforms (Hasura, Postgraphile, etc). However, these seem like they struggle to scale with team size.
The key thing to remember in any "x is dead" meme is that all it means is "this isn't the new and shiny anymore".

Ruby is as good as it ever was, it's just not shiny anymore.

And god, I remember the shiny. I remember when Ruby on Rails came in the scene, and the whole fuss about Basecamp and how influential 37Signals seemed to be back then. Time flies.

Based on what I see around me Ruby is used by a couple of big companies, while something like PHP(another language that people generally consider as "dying", probably way more so than Ruby is) is used by a lot small companies. Would be interesting to see OP's data, but instead of amount of jobs it's amount of unique companies that offer these jobs to see if I'm correct in that assumption.
This anecdotal, but I see a lot of small companies and startups still picking Rails.
Nobody bothers to write about the languages and technologies that are actually dead.
haha, I think this is a good point where headlines are opposite of reality: "Ruby is dead", "Cobol is alive", etc
COBOL is still being used though. Not sure if that's what you meant.

What I want to know is if any variation of Algol is used in any production context today.

As someone who has worked with dying languages, that is wrong. There are always blog posts about dying languages too.
Rails 7 and Ruby 3 are excellent.

They both got major companies (Etsy, Shopify, Github, Gitlab, Airbnb,..) backing them and are not going away at this point.

Great choice if you are looking to get work done with a mature ecosystem and settle down..

You could also add Amazon (for internal tools) to that list.
No mention of Elixir at all, which was one of the "most loved" language in SO survey. Not sure what to make of it.
In my experience, the majority of developers don't even log into StackOverflow, they purely use it as a read-only resource. I'd say even less actually fill in the survey!
My experience at a few places: devs try it out for hobby projects. Maybe get a POC in Elixir done at work. Ultimately the business continues to build on the existing stack. Hence, few job postings for Elixir.
Wasn’t Rust the #1 on that poll? Yet the amount of code in Rust is practically none, and there are vanishingly few qualified/experienced Rust programmers. There’s a massive gulf between what language has the share of memes and which are used to write real code in industry.
It's all about observation bias. The SO survey wasn't representative in any conceivable way. Only active users (as already pointed out, the vast majority are passive users) who are passionate about their programming language of choice were sampled.

Most professional programmers aren't passionate about the language they use - it's a tool or a management decision, nothing to get emotional about.

The more "esoteric" or "exotic" the programming language, the more passionate its user base. Mainstream is defined by mediocracy and the average developer simply doesn't care.

Some of the most loved languages like Elixir, Clojure and Rust are fairly modern and powerful and fun to use. But they are also scary. Elixir and Clojure are functional languages, Elixir runs on a niche runtime, Clojure is a Lisp and looks foreign to people who are used to more common syntax, Rust has functional concepts baked in and is known to be hard to learn initially.

Unfamiliar + hard to learn = scary. Which leads to less overall popularity when it comes to actual jobs.

I was lucky early on in my career that I started with JS. Used to write code strictly for IE6 then moved to ‘cross browser’ compatibility code.

These days we’ve come so far and you can reliably write JS that works everywhere, so no need to cater for niche browsers and target a specific browser.

I dabbled in PHP but stopped using it since it’s hard to write secure code with PHP (although you can audit it).

Settled with Perl and Python for small hacks that automate mundane tasks, but am far from creating anything elaborate with them. My Python scripts are rather small. One thing well and all that.

> I dabbled in PHP but stopped using it since it’s hard to write secure code with PHP

[Citation needed]

Yet I often come across websites that only work in Chrome. I think the "no need to cater for niche browsers and target a specific browser" isn't as true as web programmers would like to believe.
It's difficult to find someone actively hiring for Rust jobs these days. I'd love to use it day-to-day but it's still pretty limited in industry.
Most of the easy to find rust jobs will come from the token space these days.
That's exactly what I'm seeing, but I don't really have any interest working in tokens or blockchain.
Is that not at odds with your original comment though.

"rust jobs" vs "rust jobs I personally want to do" doesn't really back up the statement that there are no rust jobs available.

There's a handful of token jobs but even if I were interested in that, the pickings are slim. It's definitely not "no jobs" but there's a wide spectrum.
From my experience a lot of rust development is done in places where rust isn't really what they hire for. It's existing devs who start writing some greenfields projects
There's also demand for Rust in the world of "embedded devices that must not fail" i.e. medical stuff.
Elixir, Clojure, Rust. These were all great languages that were championed but nobody is learning them because there are no translatable jobs that you would find with ease in other languages like Javascript or Python.

The compensation isn't there to match it. Neither is it like a COBOL type of situation where someone's mainframe is running on super niche language.

You are better off learning C++ or Assembly

I get a lot of inbound elixir interest, and my company is hiring for at least 4 elixir positions now.
Clojure was among the highest paying jobs (or maybe even #1?) in the recent StackOverflow dev survey.
Well, it's difficult to verify; as a survey participant you can enter whatever figure you want; and even if it were true, the sample size is very small to conclude anything reliable. Measuring the number of jobs advertised is more objective; and with a thousand or more jobs, the noise component should also be sufficiently low.
It's been in the same position in previous years. In any case that's the best data I know relating to the claim about the compensation I responded to, if anyone else has better evidence to either direction, it would be interesting to hear.
I think the real problem is not this. But that comparing these average salaries is meaningless even if the responses are truthful, the sample of respondents is representative, and the sample is large.

Clojure developers have a different distribution of unobserved skills and motivations than JavaScript developers or Go developers. So the difference in average salaries could be due to the robustness of the language, due to the pockets of the industry that use them, due to unobserved skills and related reasons, or even due to differences in how much Clojure vs. other developers value amenities like the novelty of the task that they are working on.

It would be interesting to see more than just a comparison of averages. But collecting good data to capture the finer details is hard.

How do you know the sample is representative? If I look at the data posted by the OP there are about 450 clojure jobs a year; if we assume that developers switch jobs all three years in median we get about 1350 clojure jobs in total; if we assume a very good response rate for the survey, about 3% of these developers or about 40 responded; this is even less than the number of states in the US.
Whether a sample is representative is a different issue from whether the response rate is high.

For example, you can have a population of 10,000 jobs, 9,000 of which is hiring for Clojure and 1,000 of which is hiring for Forth. If you sample the 9,000 Clojure jobs, then you might conclude that 100% of all 10,000 jobs are for Clojure. But in reality, only 90% are.

Instead, you can sample 100 of the 10,000 jobs at random. The expected value of the average of whether a sampled job is a Clojure job will be 90%. There will be noise but that can be statistically accounted for.

If the population that you want to draw conclusions about is, say, the complete universe of jobs ever offered in the US in 2021, it will be difficult to find either a data set that contains this universe or a data set that is arguably a random subset of the universe. So representativeness is hard.

You could adjust your population definition to achieve plausible representativeness. For example, take the population of all developer jobs at companies that had an IPO between 2018 and 2021. Maybe you have a way to compile this data set from some source. Then you limit the scope of your claims but you will be more credible.

Another thing that you can do is take an existing data set that you know to be representative and compare the distribution of job characteristics in your sample to that. For example, you might find that your sample is more likely to include web development jobs than your reference data set. Then you know that your sample is not representative, and you know in what way it isn't. Or you might find that your sample is comparable to your reference data set. This can give you some confidence that your findings generalize.

Agree; even if we don't know the distribution or representativeness of the samples we can do some guesstimates, as I just did; it's as good or as bad as what you see on Tiobe or other ranking services; the error is likely to be larger the smaller the population under consideration, which is why I'm rather skeptical about the salary statistics on Clojure.
Why would you think that this data captures the nr of Clojure jobs?

I don't know many Clojure devs who found their job looking for a Clojure dev job ad. Even the yearly state of Clojure survey has ~2400 responses.

I made two simplifications in my thinking. First, I assume that the number of Clojure jobs is constant over the average job retention period. Second, I assume that each job change is advertised exactly once, or the OP evaluation ignores redundant advertisements for the same job. If the latter assumption were not true, the number of actual jobs would be smaller by the redundancy factor. There are studies on the job retention period (e.g. https://hackerlife.co/blog/san-francisco-large-corporation-e...) from which I just took the longest one for a conservative estimate.

The number of responses to the Clojure survey is barely representative for the size of the job market; otherwise you would have to expect millions of respondents for e.g. the JavaScript survey; people responding to such surveys are likely fans of the technology, not necessarily professionals who were hired to use the technology; of course there are also professionals among the respondents, but we don't know the exact proportion.

Funnily enough, these are the top 3 languages in the company I work in.
> The compensation isn't there to match it.

Really? Speaking from the Elixir perspective, I get recruiters messaging me with surprising frequency about senior Elixir SWE roles with base salary up to USD $200k; it doesn't seem like compensation is the issue, at least from my experience.

It would be useful to see the methodology used.

Eg. Go (say) is often a secondary skill listed with the real target, like Java. This means it's not as in demand as might appear on the surface let alone considerations of whether it is actually required by the recruiter or is just being used as bait.

"DevJobsScanner has only picked the job offers that explicitly required a programming language. Job offers with fuzzy language requirements were discarded."

It's pure Go job.

Ah thanks, I scanned the page and blog but missed that. Good to hear.
Yeah, that line is pretty ambiguous.

I've never worked or even heard of a software engineering position requiring literally just one language.

That makes me wonder how the author handled positions that list multiple languages, or a primarily language along with nice-to-have languages.

Potentially discarding all of those results sounds like throwing away most postings.

That's concerning. I am a Javascript/Typescript backend dev trying to get a full-time Golang based role. I wonder if should look for a Javascript role which has some Golang on the side.
Cloud engineering roles are almost all Go based these days.
Not saying you're wrong, but it's not the case where I work. Essentially 100% of our backend is written in Go. We only use Java for Android.
Anecdotally I've been watching C# gain a lot of ground as a backend for nextjs frontends.
The whole idea of next.js is that it‘s the solution for backends and frontends. Using it for your frontend only makes absolutely no sense at all. Or is there something I‘m not seeing here?
You can use it as a standalone backend or you can just use it as a router / renderer "web backend" but then still have an API off somewhere else. That API could be a monolith, a bunch of microservices, power multiple front ends, be a legacy system etc etc.

When I said backend above I meant company backend / API / services.

Ignoring the API routes in Next.js is perfectly valid, the build system and built-in routing and utilities make it a better frontend-only framework than anything else in the space by far (CRA, etc.)

Using it with a separate backend/API is also sometimes necessary, difficult to use serverless functions if you want a WebSocket server or similiar.

it used to be that Ruby was more popular but seems like Python ultimately eclipsed it. One thing that really hurt Ruby was there was just way too many ways to accomplish the same thing and there were lot of opinions and ego around which was better where as Python has established standards like PEP8 that champions readability above all
There are definitely as many ways to do things in Python if not more... I've worked extensively in both languages. Frankly, the Python ecosystem is a lot more complex to navigate (dependency management is a nightmare) and much less friendly.

I think the biggest difference is (1) Python more institutional backing (2) Python is taught in academic settings (3) Python has more robust scientific computing (4) Node stole Ruby's thunder in the web application space (5) Python works out of the box on Windows.

> dependency management is a nightmare

I don't know if it's better these days, but dependency management was one of the reasons I stuck with Ruby over Python back in the early 2010's. I never had issues with it in Ruby, but was constantly battling with dependency management in Python.

> I don't know if it's better these days

It's not

I think #5 is huge, until Windows Subsystem for Linux came out there was no easy way to compile all needed gems on Windows. Most Ruby/Rails tutorials assumed you were running *nix and DHH's dismissive attitude to Windows didn't help. Git Bash for Windows bridged some of the gap and probably Cygwin did the rest, but batteries were not included for Ruby on the most popular OS.
One thing that really hurt Ruby was there was just way too many ways to accomplish the same thing

I dunno, to me it feels like that's why Python won. Python is more pragmatic, flexible, less wedded to ideals, and, I think, these things allowed it to pick up a lot of entry level developer attention especially in areas like data journalism, data science, ML, etc. which stole a lot of Ruby's "good for beginners" thunder. This is now paying dividends as all those new folks have cemented Python's now bread and butter projects like PyTorch as must-have skills. Ruby not ever really caring about Windows didn't help either.

I've seen so many posts like this talking about programming language demand as a number of positions available - but I don't think I've ever seen one talking about programming language supply. JavaScript is certainly in high demand, but the market is also brimming with JavaScript developers.

Some other languages on the other hand, are far less common, but because they occupy a specific niche, might actually be more "in demand" (ie, less competition for an applicant, higher salary).

The positions available are not the demand. They are the demand minus supply.
That's an important distinction, but I think it's getting more common to post for positions you have filled so there are resumes available if someone takes flight. Resumes don't mean someone is available either.
Sure. Would you agree that this is something a JS-centric company is more likely to do (than a java one) because JS engineers are on average younger, and their life is more volatile, and also because the company itself is younger and more volatile?
not even that it's common for multiple contracting companies to post a job filling for the same target job which a prospective client have.
Probably because it's difficult to determine the supply of developers for a language. Job boards tend to be companies posting jobs, not candidates posting (public) resumes.

Even if you had resume data, having a language listed as a proficiency doesn't mean that person is in the supply of developers for that language. Likewise, sometimes people get jobs for languages they don't know. I hadn't used golang before my current job, so I wouldn't have been in the "supply" of go developers despite being hired to use it.

For how long a job posting stays unfilled might be an indicator of lack of supply.
The market may be brimming with js developers, but the bulk of them cant tell the difference between == and ===, cant get grasp the this/bind scope or lack basic understanding of inheritance, polymorphism and composition (the npm registry is full of copy pasted modules with small changes and a new name).

Getting js right is hard. Thus, competition for _skilled_ devs is rather low.

Same goes for php. Writing code full of sql injections, no design patterns, and no scalability is easy. Most php devs are limited to Laravel or Sympfony and have no clue about the language’s inner workings. Doing it right is hard and if you do you will get nice returns.

But i do agree about niche languages. The number of jobs available means nothing. Whats relevant is the (applicants/ number of jobs) formula.

Wish there was some sort of compensation-weighed index of demanded languages.

My guess would be Python and C++ being higher up due to AI and deep systems work.

I bet there’s a lot of weird effects in compensation. Probably dead languages with large, critical code bases pay a fortune, then there’s odd situations like ocaml that’s only used by one very successful organization.
From what I've seen (I work in the field), surface level AI/ML skills don't really command a salary premium these days. So many people hopped on that train that the market is saturated.
so if you know python/js you should be open to 50% of jobs. but that's without considering all the frameworks and libraries that job ads like to pile on to fill out that word count.
Really cool to see, I’ve been exploring some scraping options in 2022 for something similar to this but in another niche. Would love to hear any broad details about what you’re using for scraping and data extraction.
Interesting evaluation, thanks. Are these only US jobs, or worldwide?

It's surprising that there is so much need for Ruby (even more than Golang) and Lua, and that there is five times less need for Dart than for Lua developers.

If you're in the UK, you can use my favorite site to gauge interest. I use it as an American who's never worked abroad.

https://www.itjobswatch.co.uk/

Thanks for the link; the high-ranked order is quite similar to the posted one.
Seems to be worldwide.
some of this is as a result of a self feeding endless loop i.e in regards to JS. using JS or more apt us JS dev requires / create complexity, which in turn creates more demand for JS devs. But on a more first principles Basis - I have asked this question before [0]: Do we need web browsers ?

[0]: https://news.ycombinator.com/item?id=31855976

The web browser is the least closed most open distribution for software services ever. Anyone anywhere can publish and billions can access it without numerous gate keepers in the way.

It isn't the only solution out there. You can publish to the various app stores and abide by all their rules and regulations and upkeep requirements.

You can be confined to Linux desktop.

You can still get to the desktop via your own distribution. You can also side load Android and avoid the store.

Browser apps are, by far, the easiest.

I don't get Kotlin's position in rankings like this one. I've heard people say, "oh, for new Android apps, you definitely want to use Kotlin." And (I asssume?) people are writing lots of new Android apps.

But this methodology has Kotlin at 0.35% of jobs! And for that matter, Swift is not much more, at 0.38%. Why are these flagship languages for large ecosystems (Android/iOS) not more in-demand?

The web is killing it? Finally? Hopefully? Copium.
I'm guessing most of those ads just ask for Android/iOS experience rather than specifying the language.
I do Xamarin (Microsoft's iOS / Android framework) and the listings often throw in Swift / Java / Kotlin. Sometime's they'll throw in React Native and Flutter even if they don't use them. The Xamarin world isn't huge and I guess they just want to try to grab the attention of as many hybrid mobile devs as possible.
We looked for a xamarin dev last year and couldn't find one. I'm not surprised listings are awkward.
I think part of it is that there are a lot more old Android and iOS apps out there that still use Java/Objective-C. These apps are probably worth maintaining and updating, but not necessarily worth rewriting. (And, you'd still need to know the old language in order to do a decent rewrite.)

For iOS where I work, we use primarily Objective-C, with only a tiny bit of Swift. We actually have more Rust code than we do Swift. (The Rust code is for our cross-platform logic that's shared between Android and iOS.)

I think the Android side is all Java with no Kotlin at all.

Its the nature of the beast, as well as the market. The web market is massive compared to native app dev and app dev teams are minuscule compared to web teams. It would look less weird if the JS/TS line was actually split into the component frameworks (i.e. Vue/Angular/React/etc).
I recently suggested to one of my consultancy customers (valued at $500mil) that they should hire Kotlin and Swift developers to improve the quality of their React Native app.

The response I got is: "nope, we're fine employing one mid-level React dev to maintain our app in both platforms."

They don't consider mobile apps being essential for their fintech business in 2022. I'm speechless but this serves as a hint as to why we don't see more Kotlin and Swift jobs: companies are cutting corners with React.

As someone who does cross-platform frequently now, after doing native apps for a long time, that gives me anxiety for that dev lol. I can't imagine how helpless they feel to fix the 1000 random issues they run against in cross-platform land.
Kotlin is being used as replacement for Java in many places.

I know a few companies in Minneapolis are using Kotlin instead of Java for their new microservices.

I'm curious to know how much bias there is against smaller languages.

From my experience reading job postings, a lot of job postings for jobs where you may work with more "niche" technologies list more common ones beside what they are looking for and expect you to learn the technology during onboarding.

It might not be a cool language, but I'm surprised not to see VB anywhere here. It's still used in plenty of places, why does it not show in job listings?
Maybe they didn't know it exists so never parsed for it specifically
15 jobs for Fortran. Are there young People that are qualified for these Fortran jobs, or is it only older folk?
From my experience, it's mostly older people (50+). But my experience is also that companies still using Fortran understand that they need to train new hires to use it. So the "qualifications" for these jobs is probably more about background than programming language proficiency.
"Job offers with fuzzy language requirements were discarded."

Doesn't this mean that they're only counting cookie cutter ticket grinding dev jobs? Which will be heavily biased to the current top ~3 corporate use languages.

IME in good dev cultures the teams have a lot of freedom in picking the tools, and people are recruited assuming they can pick up new programming languages on the job.