I'll start with a few failed-recruitment stories, and then tries to generalize. Except that, while writing this post, I realize that this story only generalize to me, and probably not to most developers that are not fan of theoretical computer science. However, as I was told to post it anyway, here is the post.
First, I want to mention the best rejection I ever got. I was looking to come back to France. I already had Google and Amazon on my resume. I had a call with an in-house recruiter of a fast-growing French company. Some well-known national website, with a good reputation.
The recruiter quickly explained to me that, even if my profile was interesting, they fear they could not offer me enough money to retain me. So, they decided not to go forward with my application to avoid making us all lose time. This was particularly honest and frank, I sincerely appreciate that.
And they were right, I was able to get the double of what they could have offered. I'm not blaming them, they probably really could not afford my current compensation, and I'm sure plenty of devs on the marked could fulfill their need. Worse, since it's not a "startup", they don't pay with stock, options, or anything fancier than a base comp and annual bonus, they could not even compensate the low base salary with some vague promise for the future. Still, if most companies paying an average French salary won't consider my application because of Google on my resume, that may be a problem if one day I need to find a job again.
I also had the reverse problem once. The recruiter asked me how much I wanted to be paid. I gave her my current compensation, and she immediately answered that I should give myself realistic expectations. This is a mistake I don't do anymore, and just stop the conversation if I don't get their salary range.
We require year of professional experience in this particular field
I often hear recruiters mentioning that it's too bad I don't know such or such field. I kind of agree, a lot of fields seems fun, and I don't have time to know them all. Still, I just want to mention one case that was utter most absurd. But first, a slight bit of context.
I've been contributing to AnkiDroid, an android app with millions of monthly users, since 2019. My resume, my linked-in profile, state that I'm proficient in Android development.
I'm certainly not an expert in Android. I don't care about becoming an expert. I'm never going to know the in and out of every details of the Android operating systems. But I certainly know enough Android to do the changes that need to be done to our applications, and to help newcomers grow as contributors in our project.
More importantly, I can read documentation and usually start working on whatever needs to be done quickly, even if I'll always be slower than the mythical 10x engineer that knows everything by heart.
I was on a call with a recruiter. They were looking for talents for a "start-up". The goal of the start-up was to create an app that suggest recipes to use the food you have in your kitchen$$And if you miss an ingredient, they'd partner with a fast delivery company so that you can get the missing ingredient in 15 minutes. That's how they would make money I guess.$$. It's not rocket surgery, I'm pretty sure I'd have the level required to work on it.
It seems like the recruiter could not agree with my assessment. She explained to me that they were looking for people with at least a year of professional experience of Android development. However, as my job never involved Android, we could not move forward. She could not take open source contributions into account in the forms HR gave them. The fact that our project had 4.8 stars and 2 millions active users does not matter, I was not getting paid to do it.
Now that I'm not desperate for a job anymore, I find this story very funny. Because, when I joined Google Chrome for iOS, I had never done any iOS development. Still, the hiring manager trusted that I could learn the skills needed, and indeed, I'm now an active contributor and regularly contribute to Chrome.
The usual explanation is that a young start-up need immediately productive devs, while a big tech company takes can afford to spend a few month training new employees. Also, Chrome is huge, so even an experimented dev will need time to discover the codebase, while a greenfield employee can start contributing immediately.
Still, this lead to the usual issue: "you need experience to get experience". It seems like I can change my career in a big tech company, and get the time to learn and improve my skills. I have no idea how I could join such a kind of French small company, given that I would need the professional experience in the specific skills they need before I could get a job.
Let's now consider the interviews themselves. After all, sometime, I go to the interview step of the application.
Android specific questions
For another Android job, the first question consisted in creating a new Android app. They provided mock and the app should implements it. I plainly explained to the interviewer that I have no experience creating new Android app, and I would need to take some time reading how to do it. Visibly, it has proven to the interviewer that I'm just incompetent, and the interview quickly ended.
I'm still conflicted about this experience. On the one hand, I since learned this skill, and I admit it's extremely easy to create a new App in Android and implement an activity with a view. Today, I could certainly do the exercice in less than 20 minutes. And if I were creating new apps every month, I could probably learn to do the exercice in five minutes top. On the other hand, in which context must you create a new app every month? Yeah, maybe if you are a freelancer doing small ad-hoc app for various clients, it would make sense. I'm certain people have this experience. And I feel like a question that excludes people who worked on big project, spending years on a single application, ensuring the application can grow over time and adapt to user demand.
Big tech interview question
On the other hand, when applying at Google and AWS, I was asked general algorithmic and system design questions. The kind of very generalist problem that you learn to solve at university, and that does not require expertise in the details of any specific program language or developing platform or IDE.
Sadly, my job never rarely consists in solving complex algorithmic problem. Even when I was doing query-optimization software, it was a very small part of the job. So, I must admit that those questions are even less relevant to my day-to-day job than "creating a new android app".
Even during my time at AWS, when I was working on a software to optimize SQL query, it was rare that I actually had to consider complex algorithmic question.
Comparing the questions
I used to be a searcher, I created algorithm during my PhD and post-doc. Algorithmic questions are simple to me, and it's something I actually enjoy to read about for fun. On the other hand, I never cared about learning the intimate details of any system, any library. Paradoxically, not being an expert means that it was easier to get a big-tech job than a small-company job.
 unless they seems to be a very exciting opportunity.