Interview are long and hard because a bad hire is worse than no hire at all. Firing someone is also a long and difficult process.
You don't want work somewhere where the interview process is just 1-2 rounds of talking to someone. That company will be full of people who can BS an interview but can't do the actual work. Early on in my career I ended up taking a job (due to some recruiter shady stuff) where the interview process was talking to this guy (who's background was mainly in academia but was CTO) and sending them some code samples for them to review. The company lacked technical competency. For example, they didn't allow normal git processes because people lost work by fucking up their git multiple times. I ended up having to mentor them in a lot of processes when I should have been learning.
I've designed interview processes in a few of my roles. Noone wants to waste time, and engineer hours are expensive. Because of this, a lot of rounds exists, mainly to shield the engineering extensive "onsite" from the vast majority of applicants.
Most of them look something like this:
- Recruiter screen (15 min): Recruiter introduces company, gets basic info and makes sure you're not autistic. She sends the resume to hiring manager to review. A lot of times they are instructed to look for key words to answers to basic tech questions just to cut down on volume.
- Hiring Manager screen (45-1hr): Mainly behavioral questions. The HM is trying to sniff out if you're a charlatan. Then he is trying to see if your way of working would cause issues with the current team. Software isn't about a bunch of nerds coding on their own. Its very much a team sport.
- Tech screen: This one kinda varies. Its to make sure you have basic coding proficiency, before wasting 3 or 4 hours of engineering time to go through the whole onsite process. Nowadays, its automated a lot since theres just too many applicants. This can basically be the DS algo portion of an onsite done first.
Once they get to an onsite, theres should be a high likelyhood the candidate can pass. If you're sending a lot of candidates to onsite, but they fail, its an issue of your screening process. You should not shorten the interview or make it easier, unless you want to hire shitty engineers. The onsite is very much dependent on the role you are hiring for. It can include:
- DS/Algo/coding: This is the basic coding interview. Good thing is, not many companies do hard LC problems anymore. I facilitated a lot of these interviews. Its not just a pass fail on whether the candidate can solve the problem. I'm looking for how they communicate, can they proactively debug when things don't work, etc. Especially now with llms helping jeets cheat interviews, this opened my eyes to how many people can bullshit screens, yet have absolutely no coding ability. If things don't work the first time, and you do more than just stare at the screen, you're already better than 90% of candidates. I've also caught a number of cheaters. Its surprisingly easy to catch cheaters. Theres a number of tells, including solving bugs out of nowhere, adding unnecessary shit that chatgpt does, weird pause before answering any question.
- System Design: Essential for Senior backend engineers. Anyone past a certain level runs into these. Seniors are expected to own the entire feature development cycle.
- React/ Frontend design: If you're interviewing for a fullstack/frontend role, you usually have to do a React test. Its very practical and very good for weeding out people who lie about their experience.
Aside from the above, there are some common rounds found in companies based one what they feel they need. A lot of these ones are unnecessary, and I've worked to remove these rounds in some of my roles, but most of them are pretty bullshit
- Product/Design interview: You talk with someone from product to see how you've worked with product in the past. Its a pretty low priority interview. I've seen many times where they just override whatever the product guy says.
- Executive talk: Most of the times this is a formality. Its more a chance for the Cxx to meet everyone they give an offer to and a chance for the candidate to ask questions. If you do something too autistic, the executive will veto you lol.
This might looks like a lot, but it really is the minimum to both guard engineer time and to make sure you hire good engineers. Doing hours of interviews everyday sucks, but I much prefer it to hiring random people without a real interview process and hoping it works out (I've been in both situations).
Another thing to note is that internships are much harder to get than an actual job. I can't imagine any company is investing in an internship program at this point. Its a very expensive way to hire that will never end up being worth the price for the company. Internships have always been more of a way for bigger companies to "give back" to the industry than anything else. I wouldn't read too much into how retarded an intern hiring process is.