And it's not that he interviewed and didn't get the job...they didn't even let him interview, not even the phone screen. That's pretty rough.
Technical interviews should be more about doing due diligence over someone having the knowledge they say they have... not some sort of game people write books on how to train for it...
Yet they aren't, technical interviews are mostly bullshit CS questions which you barely use in day-to-day programming. And it isn't like CS knowledge is all you need to be a good programmer. Technical interviews are exactly what you say they are, a game.
And every game has rules that can be exploited. This guy's mistake was to try and completely break the game, which would have left Google with no alternative but to invent a different game.
I remember going through this process for internships and wondering how I was supposed to figure out all of these weird puzzles on the spot. Then I made a few friends and we all just traded questions with each other. We'd spend weeks on the problem and pretended we just figured it out.
Also the interviewers are separate from the people making the hiring decision, which I think is a good thing.
My programming hygiene and software design skills? You can see that more reliably from my Github work, but then recruiters and interviewers almost never take the time to look at that. Instead, we're stuck relying on a shitty test, not years and years of hard work and data, because it's easier for you to evaluate. Good job everybody.
You have quite elegantly avoided saying which parts I got right and which parts I got wrong. In fact, you haven't said anything specific, probably because you aren't allowed to?
I think I have a poor memory myself, yet I'd say I'm able to design efficient algorithms and evaluate their costs. Of course I wouldn't expect anybody to devise a publication-worthy algorithm within 45min. But most real world problems can be solved by standard algorithm-construction techniques, without any original research nor genius strike. It's part of the skill set of the trade, not something to learn by rote.
About recruiters and interviewers taking time to look at stuff, when I applied they even asked me for a list of all the college courses I had taken. Interviewers are encouraged to look at your past projects and enquire about their technical details.
I'm not convinced evaluating someone based on the quality of their code in GitHub is fair, though. The candidate might have improved their skills since writing that code. Or it could have been originally written by someone else for all I know. Also, not all candidates have been in a position to have code publicly available. Of course, we're not talking about evaluating Chris Lattner types here; that's not the level I interview anyway.
The interview's supposed to, in theory, hint at future performance as an employee - too many intensive study guides used by too many candidates, and it'll just end up reflecting how much cramming the candidate did for the interview.
An applicant who is an expert on gaming their system is probably scary to allow into the system.
"This is my multi-month study plan for going from web developer (self-taught, no CS degree) to Google software engineer." 
The author presents two conflicting pieces of information. In , it seems like he has accomplished this goal of being hired. In , he is working towards it and has not clue if anything presented will work.
Without reading this quote, each post makes it seem like he knows everything about how to get hired. With the quote, each post reads very differently.
Body says: "Why didn't I get hired? I don't know why."
Real question to HN readers: Do you believe this type of inconsistency also affects writing code?
In other words... if a hiring manager notices this muddled writing in a blog post, is it fair to think the programming output will also be muddled? (e.g. function names, architecture, engineering the organization of microservices, code comments etc.?)
Or do you believe that the brain compartmentalizes and it's very easy to write disorganized prose simultaneously with organized code?
PS or even better "I didn't get hired by Google".
To your question - would this affect the author's code quality? Maybe, maybe not. They could be an absent-minded-professor-type who can easily do genius technical work, but misses things like this. However - Google looks for more than code quality.
I admit I do not look forward to the future when manpages will be titled "Top five sprintf format string length modifiers they don't want you to know; the last will shock you"
/* You won't believe the one weird trick this function uses to compute inverse square root */
A common example would be business logic code polluting the "View" of MVC.
code reviewer: "Why are you retrieving the sales tax jurisdiction from the database and computing sales tax in the gui form?"
programmer: "Well, the form has the TOTAL amount displayed to the customer so it made sense to me to put that db-dependent code there."
code reviewer: "No, that's what the "Model" code is for. That's the "M" in "MVC".
programmer: "Oh, the model source code is where I update the GUI progress bar because that's where the state variable that keeps track rows processed is stored. "
"Fork is rather simple, once you get the hang of it, but the memory management can be a bitch. See 'mm/memory.c': 'copy_page_range()'"
It's like writing on Facebook that you feel miserable because a girl rejected you.
Just move on, kid.
Not that Google initiated this kind of cult in the first place, the spontaneous worship is a little overwhelming TBH.
I am genuinely curious to see his resume (I didn't see it on this site or his other blog). Again, I'd have to assume it was at least somewhat littered with references to his dream of working for Google (the GitHub repo gives that away, and maybe he linked to his blog).
His current LinkedIn profile starts with a Projects section (I'd have recommended a summary) and the first project listed is "Google Interview University", so I assume any recruiter vetting him would have immediately seen that, then noticed that his experience section starts with "in training for a software engineer interview, April 2016 - present", and then perhaps into the rabbit hole of all his posts.
This might be a case of someone "trying too hard/pandering" to one audience. If we take away the Google-related content on LinkedIn, we've got a guy who has 5 years of experience running what appears to be a light tech startup, ~ 15 years of demonstrated web dev experience, several Coursera courses, and an active GitHub.
If you only gave his GitHub 5 seconds (without opening any of the repos themselves), I'd think most recruiters would think he'd be worth at least a quick phone call. Maybe they dove in and didn't like what they saw.
More questions than answers on this one.
He lists himself as an 'Autodidact', I wonder if he has a BSc and if not, if that contributed to not getting a phone screen. If it did, thats pretty rough since he also lists 15 years of experience.
Also I'm very curious about this comment on the post:
Honest question: who told you to make this blog? Email me email@example.com
Not quite sure what he's implying by 'who told you', anyone know?
The entire blog just reeks of desperation and lack of confidence (or worse, misplaced confidence). I think that they flagged him before he ever applied.
With that said, I'm not surprised that he didn't get a phone interview. Even if Google knew about him, they might want to let people know that their interview process can't be gamed. If I was hiring, I might be concerned that someone who put in that much effort, might stall once they get hired. I want someone who has put that kind of effort not leading up to the interview, but over the years due to genuine curiosity due to love of computing and not because they want to get a job.
This makes no sense? Level up to what? CS degree level? Because correct me if I'm wrong, but the majority of interview questions are based on CS 101 (or the equivalent). So literally the first year. Guess it depends what kind of depth of knowledge you want/need. Again, if you're only doing it for interviews and not to go into CS research, don't think you need too much depth.
AFAIK, they actually send out a prep-sheet which recommends experience with not only big-O and simple algorithms, but knowing how search algorithms compare, dijkstra's algorithm, A*, graphs, trees, networks, http, combinatorics, etc.
I'm not sure which CS 101 you took, but to me that's not 101 stuff. They definitely expect a candidate to know nearly all of what you'd learn in an entire typical CS program.
(Not that I support the use of "how do you reverse a linked list using only one pointer?" type questions at all. It only encourages "cramming for the exam" vs. actually have a broad understanding of "why would I even need to do that?" and "what is the cost of stack space and could we allocate more?", etc.)
Experience - nope nope nope nope nope!
I'm sure everyone here can relate too - What you learnt in university was not as useful as real life experience (even when working on your own side projects).
While he spent his time (a lot of it too) on learning how to game Google's interview process, he didn't seem to consider experience at all :S (I mean, 8 months learning algorithms but not even a month working on some kind of portfolio showing off your work?)
I am not saying EVERY dev out there needs a portfolio, but he said he didn't have CS background/experience and this was his way of getting into Google, but without actual experience (note: NOT work experience, just experience in general), how does Google know he's up for it?
I applied only once at Facebook, and the whole process was a bliss. Constant flow of communication with my recruiter, very interesting interviews, and a relatively short time between the start of the process and the final result. It was really weird to see such a big difference between two big tech companies.
I know a few guys who did GSoC a few times, hired full-time, left for a start-up, rehired, left again for a start-up, rehired into Google X, left again for a start-up, and now has Google begging for him to come back again.
Google can identify talent, and will bend over backwards to retain that talent over time. This guy wasn't talent.
If you look at the about page, you'll see that he considers his main blog to be: https://startupnextdoor.com/
Is this his first time applying for a job or, you know, interacting with the world in any way?
They would be doing you a favour if they would tell you why you were rejected and give you advice moving forward. In this case they are just doing themselves a favour by not bothering to give you anything meaningful.
> but if you're good enough for Google, you'll eventually get in.
If you don't get in the first time, you might want to ask yourself: is Google good enough for you?
> Recruiters know what works, and what doesn't. So respect their decision and be polite.
A lot of recruiters are incredibly incompetent, they don't always know what works and what doesn't and they can just reject you due to their own incompetence. You should always be polite, because being rude rarely earns you any favours, not because the recruiters are always right, and you should feel sorry for them.
> There are a lot of places where I can strive for greatness and have that effort rewarded.
This is why you should never be hung up on one person from one big company rejecting you.
Large companies where you can learn a ton, and work with smart and motivated people, are filtering based on not entirely relevant CS trivia. They still have many viable candidates as anyone coming out of a university has four years where their job is explicitly to learn this stuff.
The stuff ends up being so esoteric, that rarely will these trainees actually be able to use this knowledge for their own programs (i'm open to counterexamples here). But the reward of going to work for say Google is so immense - both monetarily and in experience and connections, that students accept the cost of learning the wrong stuff for the future benefit, the job where you "actually start learning valuable knowledge"
The next level up in a career is looking for engineers with a proven history of being able to scale. Guess who that is: last year's hires, who got brought into an already working system.
This is the pattern we see in management of Fortune-500's and prestige banks. This has created a culture where you have to buy your way in the door with years of what a lot of people who actually do it, will admit is largely B.S. Again, this is not irrational though, because there is often a dramatic drop-off in quality of opportunities if you don't buy into the game.
So since everyone else is convinced (perhaps rightly so) that the real value doesn't come until you've been in an elite position, the effect is to erode all value in acquiring knowledge, skills and experience, in anything that doesn't neatly fit the filtering game.
In my own work I have to use the hyperloglog algorithm pretty often. If I didn't know CS basics it would be a complete blackbox to me.
Or say someone is building a database and needs to make sure that chances of personally identifiable information getting released is minimized. He'll probably have to use some sort of differential privacy algorithm. If someone has never encountered probability how would he even understand the requirements?
Could we drill into hyperloglog and how you use it? Is it a bioinformatics app? Otherwise why are you using this approximation technique on modern hardware?
You can learn a lot in a year, but you can't create a CV containing a career that may look attractive.
(Google process is pretty much optimised to quickly discard applications)
I have no idea about how recruiters select profiles in Google, but maybe having an strong background as entrepreneur is a red flag ("he'll leave the company for his own project!"); or maybe the lack of bachelor degree...
(or maybe pure ageism)
I can't say I agree, clearly spending that much time shows a lot of passion, but Google tends to have pretty harsh and silly selection process, where a silly small thing or mistake gets you rejected.
No CS degree and no CS background. I wonder why he wasn't chosen (and why HN dismiss Google interviews as silly games...).