Great write-up, thank you to the OP for putting this on the web! I have a few thoughts on it.

First, I'm not all that surprised someone would study for 8 months for an interview at Google. I interviewed there (no hire) and gave myself 3 weeks. It wasn't close to enough time, and I've taken a lot of formal math and basic CS plus data structures. Just too rusty, especially at a whiteboard. I could easily have spent 3 months.

Various people here have cautioned against working at Google, and I know people who worked at Google (as SSE's) who cautioned me about it when they heard I was interviewing. No, not in a "run away" sense, more of a "don't get too starry eyed here, it's not that great" sense. But salary-wise, a SSE role at Google would have paid a hell of a lot more than I make right now. I'm just saying, I can see why people put in the time. And plenty of people do love it there.

My advice to people who have more of the fundamentals is to get a copy of "Cracking the Coding Interview" and just making damn sure you can do the hard problems in 45 minutes at a whiteboard. Memorizing won't help you, you need to understand what you're doing on a deep enough level that you can solve similar problems you haven't seen before.

I also recommend knowing basic data structures like the back of your hand. Really, you can't be trying to remember how to program a queue or stack, or traverse a tree, not if you need to use these concepts to solve a more complicated problem in 45 minutes at a whiteboard [1].

Now, on to the other side here...

I love a few things about software. I love it that an econ major who self studies intensely can get "high level" jobs. I love it that no cartel controls entrance, and can force everyone to do a 3 year grad degree with tuitions at 50K+ a year. I love it that really smart people can move at a faster pace because they learn quickly.

However, I don't love it that corporations are essentially our gatekeepers. The "google interview" shouldn't e called an interview, it should be called the "google exam". Calling it an interview creates an ambiguity that confuses people outside our industry. I know people who work in other fields, and while knowledge is probed during interviews, what they go through is vastly different from what we go through in software. My "interview" at Google was a series of whiteboard exams.

Here's what I don't like about this - someone like the OP here studies, intensely, and takes his exams. Suppose he didn't get the job. Well, how did he do? If you take the actuarial exams, or the nursing boards, or the bar, you get a sense of how you did. There is more transparency around the test. There has to be.

As far as I know (based on what I've read about this interview process at Google from people who know, including the author of Cracking the Coding Interview), my name, along with very formal numerical scores, along with photos of the whiteboard after each interview/exam, are in a database at Google. However (yes, for legal reasons), I am not allowed to know more that the vaguest details about this.

A formal exam, in almost every field, has a published study path. It is graded in a way that is audited to ensure fairness and consistency. It must not be capricious. A student has an opportunity, often, to try again. Your hard study, should you pass, leads to a lasting credential respected by industry.

We get none of this in software. I honestly do believe that the tech exam is a big part of why a lot of people quit software development or never enter it in the first place - this in a field where CEOs regularly lobby congress and the president to lament a shortage of tech talent.

We do need to fix the technical interview. I think the first step is to realize that it is a formal exam, and that as such, it needs to come with the usual benefits and considerations afforded to people who take formal professional exams in other fields.