In the last 8 months, I have interviewed with Google, Amazon, SpaceX, Blizzard, and StackExchange

Repeating the ridiculous technical interview process (including the onsite gauntlets) so frequently in such a short time span makes me feel like Bill Murray stuck in Groundhog Day. You know, the movie about the poor guy doomed to repeat the same day over and over until he becomes a better person. Am I stuck in a loop? Am I doing something wrong? Or are these job opportunities really just as “competitive” as the HR representatives claim in the copy and pasted emails that get sent out to the unlucky losers? I’m not convinced that the status quo for interviewing processes is sufficient.

I’ll admit it. I’m a bit cynical. It’s entirely possible that companies employing the standard technical interview process deserve the benefit of the doubt. Maybe they are bombarded with completely atrocious applicants who don’t even know how the most basic parts of a computer function. That’s fine. I understand. I get it! If I was receiving thousands of applications each week, I’m sure I would try to devise a firewall to keep most people out as well. But making a filter too finely grained causes one to miss out on some truly hidden gems.

For reference, every tech-related company seems to follow a fairly standard process of interviewing. It’s nearly formulaic.

It starts with a recruiter contacting you via information picked up from their own hiring system, a third party hiring system, or LinkedIn. It’s usually very informal and may or may not be relevant to your skills. The recruiter asks you if you’re interested in a position (described vaguely) and asks about certain buzzwords that you’re familiar with (project management methodologies, frameworks, languages, algorithms). It’s usually just a list of things the recruiter recites to you from a script since they probably have no clue what the items mean.

If you’re interested, the recruiter sets up a first phone screen interview with either a technical team member or a project manager. The first phone screen exists only to establish if you are capable of holding a conversation, know how to talk about technology, and know how programming works at its most basic levels. After explaining the difference between an abstract class and an interface for the 100th time, it gets really frustrating. Don’t expect the interviewer to particularly care about this interview. I’m not kidding when I say that I’ve had interviewers leave to use the restroom while I was answering a question. You should also expect the phone to sound as bad as possible due to normal poor cell phone reception plus the noise from a speakerphone.

If you sounded confident and knowledgeable, a completely separate recruiter will contact you to schedule a technical phone screen. The second phone screen usually involves coding and more detailed technical questions. You can consider it the first real “weed out” interview. Again, expect awful cell phone reception. The interviewer might be a little more interested, but don’t be surprised if they sound like they would rather be dead. This can be a stressful interview depending on how the phone reception is, how good the interviewer’s speakerphone is, how interested and helpful the interviewer is, the nature of the problems tossed at you, the mood you’re in, and how well you get along with the interviewer.

After the second phone screen, you’ve probably lost count of the times that you’ve written a method to reverse a string. If you’re not exhausted with the process by this point, and the interviewer liked you, then you’ll either get a third phone screen or an invite to the gauntlet. The gauntlet is what I call the infamous 5-7 rounds of interviews conducted at a company’s headquarters.

If you got invited, you have to decide if you’re masochistic enough to schedule your travel, take off multiple days of work to interview, and fly thousands of miles just to show groups of people spread across 8 hours that, yes, you can in fact solve problems, thank you very much. Expect exhaustion, stress, worry, and confusion. Don’t expect the interviewers to be sympathetic to the fact that you may have traveled across the planet just to write on a whiteboard. The door opens, the questions are asked, and the answers are attempted to be provided. As an anecdote, I found my resume to be absolutely useless at Google and Amazon (not a single onsite interviewer read it).

Beyond that, you’ll either receive an offer, be turned down, or hear absolutely nothing (which you can assume is turned down).

Now, take that process and imagine doing it five times in less than a year. It’s tiring and honestly a bit degrading. How many times should one have to explain Quicksort’s worst case time complexity? What about determining if a string is a palindrome? Even if you can muster up the strength to write out yet-another-binary-tree, what about those who are excellent problem solvers, but don’t perform well under the conditions of the interview? Phone terribleness aside, some people have trouble communicating due to various reasons while others simply freeze up during stressful timed scenarios where no assistance is given other than vague hints from a pseudo interested interviewer. It is highly probable that such people will simply be passed over due to the process. It’s almost like carpet bombing your yard just to avoid a few weeds.

Between the stress of 10 different interviews for a single job, traveling thousands of miles, studying up on topics you haven’t seen nor used in any manner since college, trying to look your best in front of strangers, struggling to understand a strong accent on a choppy phone connection, hoping that the interviewer actually has an expressed interest in hiring the best person, and worrying about how you will relocate your family if an offer is extended, it’s no wonder that people feel like the cards are stacked in favor of the youngest possible applicants.

On my visit to Google, it was immediately obvious that the company does absolutely everything in its power to make sure the employees don’t leave the office. Free food? No problem. Free daycare? Sure! Laundry services. Why not? I kid you not, the bathroom I used between my interviews had a wall of cups filled with toothbrushes and labeled with different employee names. Are people seriously encouraged to stay so long at work that they need dedicated work toothbrushes? Spare me the agony.

Look, I get it. It’s easier to convince the freshly out of college graduate to work at a company which presents itself as a college campus with the college life. These are people who have little to no responsibilities, are used to studying and working horrendous hours, and really have nothing else to do but stay at work and perform as long as possible. Silicon Valley calls this “passion.” I call it “insanity.”

This is where I have to ask: why is there such an intense focus on academic performance? Software engineering entails far more than succeeding at programming puzzles and algorithm designs. Think about what makes a good software engineer and in general a good employee: a specific skillset, the ability to communicate technical ideas to technical and non-technical audiences, the ability to train others, knowledge of version control, bug tracking systems, dealing with internal and external customers, various stages of project management, basic understanding of the monetary effects of software design and project management, software release management, software configuration management, friendly and positive attitude, problem solving, critical thinking, tolerance, forward and progressive thinking, decision making, and many more behavioral aspects that simply aren’t expressed during the onslaught of computer science 101 questions.

There’s probably no way to determine the number of academic superstars who turn out to be terrible employees nor the number of good employees who turn out to be terrible engineers. In the latter case, it seems to me that the employee could be migrated to a position which better suits them whereas the former engineer would have nowhere else to go except teams which don’t mind someone who lacks basic communication skills, is a grumpy coder, or is stuck in their ways simply because “that’s the way it’s always been done.”

This was a bit of a rant, but it has a point. The software engineering hiring culture needs to look for alternative methods of identifying people who will be good employees and good engineers rather than focusing on someone who can pump out whiteboard samples on demand. Solving real world problems never occurs in such a fashion. Tapping in to previous knowledge, utilizing knowledge resources, collaborating with various teams and coworkers, and being able to perform at a comfortable pace is ultimately how we end up with better products and services.