I suspect companies have trouble hiring because they really don't want or actually need to hire. I mean, yeah, hiring managers can complain that they really, really need to hire someone for some open position, but I don't believe them if they've had a req open for years as you suggest (or even six months). If they really had a pressing business need to hire someone then they'd try to make it work. They wouldn't reject someone because they didn't happen to have 1 out of a dozen technologies/buzzwords that were asked for in the job description. They'd realize that an experienced engineer who knows several programming languages can pick up a language in a few weeks and the surrounding libraries and ecosystem in a couple of months. But no, they seek perfection. And in seeking the perfect they end up passing on a lot of perfectly good candidates who could have been getting up to speed and working on their problem in the time it's taken to try to find that perfect candidate.
Companies that really want to hire are flexible. Maybe they need someone to do Python but they've found a good candidate who has all of the other requirements except for Python - but they happen to be really experienced with Ruby. Well, OK, if they're really experienced with Ruby they'll be able to pick up Python in a month or so. Sure, they may not produce the most pythonic code for the first six months, but that's what code reviews are for.
I've been in this game since the 80s. Back then companies weren't nearly so picky it seems (at least not in my memory). The second job interview I had out of college in 1986 at a startup in the valley went like this (it was an embedded/hardware job):
Interviewer: We just got this new CAD system. I'm going to have you sit down and play with it for several minutes. When I come back I'd be really interested in hearing your opinion of it. What are the good and bad parts?
And so I play with the CAD system for a while and when he comes back I give him my opinion. And he agrees with my assessment.
Interviewer: I've got this schematic here and a breadboard, some parts, power supply and test equipment. Do you think you could hook the circuit up while I attend to some other business? I'll come back occasionally to see how you're doing.
I wire up the circuit, get it going, look at the output on a logic analyzer. Interviewer comes back and seems happy. After this he asks when I can start.
This took all of maybe 2.5 hours. In the 34 years since then I've only had a couple of other interviews that seemed that... I dunno how to put it, maybe "natural"? And both of those were in startups. They wanted to hire someone. They needed to hire someone.
I'm old enough to remember the way technical interviews used to be, and they were just like this.
Back in 2001, I dropped out of tech and became a land surveyor for almost 10 years. Now, land surveying or civil engineering is not the same business at all as software development, but they are both technical and there is some overlap in terms of engineering and outcomes.
My technical test and interviews were all completed on the same office visit, and I got a decision in 24 hours! Just think about how incredible this would seem today. First, I was welcomed by an engineer who gave me an overview of the company. Then, I was taken to a conference room and given a trigonometry & statistics test that took about 45 minutes for me to complete. Then I waited in the engineering library and browsed books while they graded my test. When my results came back, I then proceeded to the interview proper. After that I was introduced to the CEO of the company and escorted to the lobby.
The very next morning, I got a FedEx envelope with a proper offer letter. They really needed a good instrument man and they got one in 24 hours. Throughout the entire process, everyone I interacted with was completely professional and prompt.
Yup, my first interview straight out of university back in the 90's was just like that. From then on, it was brain teasers, whiteboard hazing and "you got everything right but aren't a good cultural fit!" pickiness.
Companies that really want to hire are flexible. Maybe they need someone to do Python but they've found a good candidate who has all of the other requirements except for Python - but they happen to be really experienced with Ruby. Well, OK, if they're really experienced with Ruby they'll be able to pick up Python in a month or so. Sure, they may not produce the most pythonic code for the first six months, but that's what code reviews are for.
I've been in this game since the 80s. Back then companies weren't nearly so picky it seems (at least not in my memory). The second job interview I had out of college in 1986 at a startup in the valley went like this (it was an embedded/hardware job):
Interviewer: We just got this new CAD system. I'm going to have you sit down and play with it for several minutes. When I come back I'd be really interested in hearing your opinion of it. What are the good and bad parts?
And so I play with the CAD system for a while and when he comes back I give him my opinion. And he agrees with my assessment.
Interviewer: I've got this schematic here and a breadboard, some parts, power supply and test equipment. Do you think you could hook the circuit up while I attend to some other business? I'll come back occasionally to see how you're doing.
I wire up the circuit, get it going, look at the output on a logic analyzer. Interviewer comes back and seems happy. After this he asks when I can start.
This took all of maybe 2.5 hours. In the 34 years since then I've only had a couple of other interviews that seemed that... I dunno how to put it, maybe "natural"? And both of those were in startups. They wanted to hire someone. They needed to hire someone.