There's always a lot of talk about meritocracy, but I want to convince you that this is an unachievable thing. We often hear "it doesn't matter your university's prestige/your credentials, just the quality of your work." As if the two don't strongly correlate.
But the question is why they correlate. Social networks matter, a lot. If you're at a top 10 university your university's career fair is going to be filled with top companies. This isn't true for less prestigious universities. If you're a grad student, you also know that the connections your advisor has strongly correlates with your ability to get a job (nepotism playing a significant role here).
We also see everyone using LeetCode to filter candidates but there's so much evidence that this is just a noisy filter. Not only do people cheat and succeed[0] but just consider how it is a meme that this doesn't correlate with the actual job. Our whole community has the position "study for the test, then forget it". Honestly, this feels insane to continue doing this, and to even pump more money into lifting this system up. We also know that grades are noisy[1] and does anyone remember those brain teasers that google used to do (also [1])? The ones that people still use?
So how do we hire? Well, to do that we need to look at what the job actually requires. But the job will change. We also need to know how well a candidate will work with the team. These are really difficult questions to answer and it would be insane to think that a resume or in person interview could be a non-noisy process (or at least where noise doesn't dominate). Nepotism has succeeded because it is a decent filter. It has a lot of false rejects but it works because you are outsourcing a lot of questions to someone else that has intimate knowledge. It is easy to determine this, logically. You have three candidates who all perform equally well on their resumes, interviews, and whatever. You only have this information for candidate A. Candidate B was recommended by a close friend who you trust. Candidate C also knows a close friend but that friend dislikes them. Who are you going to hire? Why? The nepotism is actually giving you more information. This is not an argument for nepotism but rather a illustration about how the blind interview process is highly noisy and that there is still a lot of missing information.
CS seems to be very weird in a lot of these respects. In a standard engineering job (e.g. Aerospace, electrical, mechanical) you generally send in your resume, talk with a few people (2-3 interviews) where a few technical questions will be asked, and that's about it. Resume -> phone screen (~30 minutes) -> In person interview (30min - 90 min). No whiteboard problems/puzzles. No take home tests/projects. In person interviews have several engineers on the team that is hiring and they ask behavioral questions as well as a few relevant technical problems. At most you'd have to do a back of the napkin calculation. Why do these firms do it this way? They've recognized that the system is noisy and that essentially you apply a few filters and then just hire the person. In 3-6 months if they don't work out, you let them go. If the hiring process is easy/cheap then you can also turn over bad hires easily. It also isn't uncommon to get a call 3-6 months down the line from your final interview. So you don't always have to repeat the whole process because there are still often available candidates. I've met plenty of people who work at FAANG jobs and brag about how they work 20hrs a week making $150k/yr. I've never met an engineer like that. Maybe that means something, maybe it doesn't.
>CS seems to be very weird in a lot of these respects. In a standard engineering job (e.g. Aerospace, electrical, mechanical) you generally send in your resume, talk with a few people (2-3 interviews) where a few technical questions will be asked, and that's about it. Resume -> phone screen (~30 minutes) -> In person interview (30min - 90 min). No whiteboard problems/puzzles. No take home tests/projects.
One distinction is that traditional engineering jobs are usually advertised as requiring a Bachelors of Engineering degree from an accredited institution. In the software development world I don't think there is such a hard requirement on the types of qualifications the applicant needs.
It's not impossible but it would be relatively hard to fake your way through a 4 year Engineering degree.
Part of the requirements to get my Engineering degree was that I had to complete 12 weeks (60 days) of industrial experience (this was done through internship over the summer break between 3rd and 4th year of the degree) - I don't think software world has the same requirements for practical hands on experience to get certified etc. in the way traditional engineering does.
In my final year I also had to submit an independent 70 page undergraduate thesis and pass an oral defense of the thesis given by 4 professors which was way more intense than any job interview I've had since. It would be very hard to BS your way past the professors without a solid technical understanding.
Essentially I think that in Engineering obtaining the undergraduate degree is the technical screening.
That definitely isn't the requirements for most engineering students and it sounds like an honors program (I've helped undergrads do their thesis). But I'll also tell you that not only does every CS student with a 4 year degree still do all the crazy interviewing, but so do Masters, PhDs (far surpassing your requirements), and people with a decade of job experience (even from a FAANG company). The whiteboard, leetcode, and takehome work never goes away and applies universally. Your argument would make more sense if this was a filter for non-degreed individuals or just green candidates. But it isn't.
> One distinction is that traditional engineering jobs are usually advertised as requiring a Bachelors of Engineering degree from an accredited institution. In the software development world I don't think there is such a hard requirement on the types of qualifications the applicant needs.
Even software engineers / software developers who have accredited engineering degrees are subjected to the same excessive interview process as those that received their training at a boot camp or are self taught.
But the question is why they correlate. Social networks matter, a lot. If you're at a top 10 university your university's career fair is going to be filled with top companies. This isn't true for less prestigious universities. If you're a grad student, you also know that the connections your advisor has strongly correlates with your ability to get a job (nepotism playing a significant role here).
We also see everyone using LeetCode to filter candidates but there's so much evidence that this is just a noisy filter. Not only do people cheat and succeed[0] but just consider how it is a meme that this doesn't correlate with the actual job. Our whole community has the position "study for the test, then forget it". Honestly, this feels insane to continue doing this, and to even pump more money into lifting this system up. We also know that grades are noisy[1] and does anyone remember those brain teasers that google used to do (also [1])? The ones that people still use?
So how do we hire? Well, to do that we need to look at what the job actually requires. But the job will change. We also need to know how well a candidate will work with the team. These are really difficult questions to answer and it would be insane to think that a resume or in person interview could be a non-noisy process (or at least where noise doesn't dominate). Nepotism has succeeded because it is a decent filter. It has a lot of false rejects but it works because you are outsourcing a lot of questions to someone else that has intimate knowledge. It is easy to determine this, logically. You have three candidates who all perform equally well on their resumes, interviews, and whatever. You only have this information for candidate A. Candidate B was recommended by a close friend who you trust. Candidate C also knows a close friend but that friend dislikes them. Who are you going to hire? Why? The nepotism is actually giving you more information. This is not an argument for nepotism but rather a illustration about how the blind interview process is highly noisy and that there is still a lot of missing information.
CS seems to be very weird in a lot of these respects. In a standard engineering job (e.g. Aerospace, electrical, mechanical) you generally send in your resume, talk with a few people (2-3 interviews) where a few technical questions will be asked, and that's about it. Resume -> phone screen (~30 minutes) -> In person interview (30min - 90 min). No whiteboard problems/puzzles. No take home tests/projects. In person interviews have several engineers on the team that is hiring and they ask behavioral questions as well as a few relevant technical problems. At most you'd have to do a back of the napkin calculation. Why do these firms do it this way? They've recognized that the system is noisy and that essentially you apply a few filters and then just hire the person. In 3-6 months if they don't work out, you let them go. If the hiring process is easy/cheap then you can also turn over bad hires easily. It also isn't uncommon to get a call 3-6 months down the line from your final interview. So you don't always have to repeat the whole process because there are still often available candidates. I've met plenty of people who work at FAANG jobs and brag about how they work 20hrs a week making $150k/yr. I've never met an engineer like that. Maybe that means something, maybe it doesn't.
[0] https://news.ycombinator.com/item?id=35885342
[1] https://www.cnet.com/culture/google-gpas-are-worthless/