There's flaws in the ways a lot of companies hire, but the process has to be complicated when you get down to the numbers of how many people are for hire and how many are worth hiring.
There's flaws in the ways a lot of companies hire, but the process has to be complicated when you get down to the numbers of how many people are for hire and how many are worth hiring.
When I was involved in hiring I was astonished at how difficult it was to even find a person who was both worth interviewing and willing to interview, and resumes were basically worthless at helping you make that determination.
Resume did not matter at all. The hiring pool is flooded with a thousand bootcampers, 1 in 40 can actually program and its impossible to tell who they are without conducting a remote. A thousand people with Masters degrees in comp sci, 1 in 50 can actually program and most of them don’t even seem to have any interest in programming.
Then there are unfortunate language barriers, where a large percentage of the pool are international but your company doesn’t have anyone who can interview them adequately.
There’s a reason finding tech hires has become its own industry and we all get spammed 10x daily. It’s because it’s really, really difficult and time-consuming and exhausting and expensive to make a good tech hire, and the cost of making one of your first 5 or 10 engineering hires a bad one can literally be that your company just fails.
It’s just so hard to hire software developers. I’ve been on both sides so I know how frustrating the situation is for devs, but I don’t think it’s half as frustrating as being on the hiring side of it. It’s just so fucking hard and exhausting. Even beyond the logistics of it, you’re spending all your time judging people’s economic worth and sending emails that you know will ruin their day. It’s just not a fun job at all.
I hope your pay and total comp is actually competitive, in which case you're grousing over something you could fix in a jiffy.
This discounts people that transition to CS from another field like mathematics, chemistry, physics, etc. Just because you didn't major in CS as an undergraduate doesn't mean you can't program. That is a bit of gatekeeping. Plus, I'd argue someone from a field like mathematics and physics might be more suited to do certain types of programming jobs due to their background skillsets.
Sure, there's fields where the domain knowledge is prerequisite to do anything at all, but that doesn't make you a better programmer for it.
Then by that metric you don't even need a degree and your initial point of a BS > Masters > Bootcamp is nullified by the self-taught programmer that has programmed longer than anyone else in that group that happens to apply for your position. But that doesn't necessarily mean they will be a better programmer in the long term.
Or don't, and run my resume through a buzzword search program, instead. Yeah. That will work. Good luck with that.
I think the reality is more nuanced. There is some fraction of good people who are not happy where they are for whatever reason. They are bored. They want to make more money. They want to move to a different country/location. If you are a great place to work with the right kind of challenges and you do the right PR some of these good people will find you. Obviously they'll also go through their contacts who know they are good and will be happy to hire or help them. Some companies looking for great people are unable to recognize them, especially startups founded by inexperienced people, as they tend to have little clue of what makes good software. Others may accept a very large false negative rate due to some religious beliefs :) You may need to take some risks to find "your" good developers.
If you are a sucky workplace working on boring stuff you're not gonna find any good people whatever you do unless you're incredibly lucky, e.g. some guy that lives next door and likes the commute. The sucky workplace is under people's control (if they realize it) and the boring can also to some extent be made more interesting.
If everyone applying can't program then no amount of resume analysis or interviewing will yield a good candidate. So if that's your problem you need to address it.
It's also quite likely you are rejecting good people. Possibly even great people. Some hiring processes have people jump through ridiculous hoops that have nothing to do with their potential to do great work in the actual role they're hired for.
I've never worked for a company that doesn't say it hires the "best" people. Guess what, most people are average. That's true in Google, in Amazon, in Apple, in Microsoft etc. etc. The 100's of thousands of developers working there all lie on a nice Gaussian with some minor offsets. In all these companies there's like 20% of the people at the most who do the really hard bits and the others are worker bees/supportive roles.
i.e. we're trying to hire imaginary unicorns because we don't respect actual programmers.
We certainly weren't looking for imaginary unicorns, but we also couldn't afford to train someone who sent in a code sample in a MS word doc that was full of syntax errors...
Any software development job requires training. Every project is different and it takes time to come up to speed. For a good developer catching up on some particular buzzword is much faster than your undocumented spaghetti of a project ;) If you can't afford new people ramp up then you have a bigger problem.
This is a bit of a fun story to tell in person; this was the same person who claimed to be the second coming of Christ, and tried suing us for religious discrimination when we didn't hire him.
Fortunately for us, the people in the interview didn't respond to his claims at all, didn't mention it in the feedback we gave him when we declined to hire him, and (edit: the company) lost only lawyer fees fighting the lawsuit.
That said, hiring is damned expensive, and I have a hard time faulting companies who make the process difficult for potential candidates.
Presumably this is partly why hiring is expensive. Not that I'm sure it's really that expensive in the big scheme of things. The problem isn't the process being difficult per se, it's the process having poor predictive power.
I agree with your overall points- especially with regard to respecting your candidates time. You do need to verify that the relevant information they provide is correct however. You wouldn't make a significant investment in finances, buying a car, marrying someone, or go into business with someone if you didn't trust that you have a decent understanding of what you're getting into.
Then again, if you do, it's a lesson you'll learn rather quickly. Respect yes, blind trust no.
More often than not, those job requirements are not written by the person who is doing the hiring, or the people you will be working with. Just be honest about what you know, what areas you are willing to grow in, and what excites you about the job position.
Some companies "hire only the best". A good company for a junior developer will look for a person's "trajectory"- i.e. is a person willing and worth investing in to help them grow.