Iterating over a hash slightly wrong when writing code in a google doc during an interview is such a stupid, trivial thing to be judged on, whether it's you or someone else doing the judging. It's clear from the "My lame attempt" example that the basic concepts are understood, and if he's written a series of articles about the Enumerable module then he probably knows it better than the majority of professional developers working with the language.
If this is a serious article, then it really highlights everything that's wrong with tech interviewing.
Do you have any open source projects? The first thing i'm looking for as a developer when I visit your websites is a link to any code you have written. Which as far as I can tell doesnt exist?
A programmer without a portfolio of source code is like a painter without a portfolio paintings.
I assume Google scouts are usually looking to hook the exceptionally rare "Monet" and "Picaso" software engineers swimming around in an ocean overcrowded by "PC techs".
There is a quote by Linus Torvalds that is fairly relevant here.
"Talk is cheap. Show me the code."
Your resume is nice... Cute even. But without the code to back it up, there is nothing to critique your actual skills.
As a Google Engineer, I can assure you that nobody who interviews you will give a damn about your code in github. Unless you're James Gosling or someone at that level. (But then again I don't think they interviewed James Gosling in the same way they interviewed me, so the point is moot.)
Google interviewers are interested in how well you can code (or design a solution) in a whiteboard for 45 minutes. I'm not claiming that it's the best way, and who knows, it might be the absolutely horrible way to interview candidates, but that's the way it is here.
As a Google Engineer, I can assure you that nobody who interviews you will give a damn about your code in github. [...] it might be the absolutely horrible way to interview candidates
It works as long as majority of the CS population dreams of a Google job. There are so many candidates that having a high false negative rate really doesn't matter. However, as Google slowly becomes less popular, it's current interviewing procedure might not work anymore.
I think that having high-quality open source project is a reasonable indicator of a person's technical abilities. For companies with a smaller stream of candidates, it would be silly to ignore such sources of information.
By the way, I am always surprised how obsessed people are trying to get into Google. After some persistent bugging, I went through a phone interview. I was invited for a follow-up interview, but decided that they could not offer the kind of position I was interested in. (No, I don't want to work 18 months in site reliability engineering when my interest lies with natural language processing.)
I'm glad to know that. I tend to spend my extra time doing company work, which cannot always be open-sourced; for example, a few months ago I wrote a small Go project, which is going to end up on the company intranet and wouldn't make much sense on Github. Look at my Github profile and it's empty; but put me in front of a whiteboard and ask me to write something in Go and now we can talk.
I'll start doing stuff on Github when I genuinely feel like it (probably soon, I have a few pending personal projects that would make sense there), but recently it feels too much like you should do stuff on Github because it's going to impact your future. Similar to how you should get a college degree, should nurture your LinkedIn profile (not sure anyone cares about that anymore), and so on. Bleh.
(Non snark ahead) Could this be why working at Google is no longer the prize it once was? And why developers would rather go to Facebook, Twitter, Dropbox, et al?
(Completely idiotic response ahead) Umm, really? Every day I see thousands of developers who would rather work in Google than Facebook... :)
(Non snarky response) I dunno. I joined Google in 2008, and as far as I know Google was always like that. So, unless you claim developers have preferred Facebook etc. to Google for more than 5 years now, it's probably not related to the interview process.
I chose Facebook over Google two years ago (despite a more lucrative offer from Google), because I wanted to go where I could have more of an impact. The interview processes are nearly identical. One of my go-to questions was a question I got asked at Google, actually.
The position is for a developer advocate, so the best thing for me to show is my work along those lines, which is quite well-documented in the Global Nerdy blog. Whether at Tucows, Microsoft, b5media, Shopify and even the consultancy I recently left, my work is shown there.
Everyone loves to say this, but this is just not how it goes in the real world. It is just bad advice for people to focus so much on this one aspect when in reality it will only help you land interviews with people that regularly read HN.
I'm certainly no expert at hiring or getting hired so don't take my opinion at face value, but since my opinion seems to be somewhat unique around here I think it has value for that reason.
But advice really depends on the context of the person: what they've done, what degrees they have, what type of job they're looking for, etc. But to address the type of people the "show me the code" response is geared towards: instead of a github profile I would say build actual products.
Code in isolation is hard to understand, even to the point where its nearly useless. But having a couple of full blown web applications that do something useful shows all an employer needs to know (even if they have 0 users). Everyone can understand actual sites that look polished and professional, and shows that this person will bring value to the company (whether from a business perspective or from being a competent programmer). Good coding practices can be taught or enforced through process, but being able to construct an actual non trivial product is what employers really want.
How the code actually looks is less important than what it does. Of course, feel free to put the code on github if you want, there are some interviewers that might consider that a bonus. But for most people its too much effort to make any practical sense out of what they're seeing. Just a repository of code without any context doesn't help.
This is his take on what went wrong with the interview, it's just one side.
Perhaps another side is that he didn't seem to be guided to the correct solution during the interview process, which would concern me more than not getting it right first time if I were hiring.
How much confidence would you have in a version of the SAT that was reduced to just one question which determined the entire score?
It's exactly analogous to tech interviewing. It's like saying, oh he couldn't even get that analogy right! He can't do analogies. Same thing with giving people one programming question. Much less nitpicking that one question...
So we are forced to go on lots of interviews and just hope that we happen to quickly grok the one or two problems they give us -- so we'll look "perfect" in that short period of time. which is eventually almost certain given enough interviews. but you can't be super confident to pass any particular interview you might have had your hopes on.
Don't sweat it. I find those Google interviews to be very discouraging and I felt dumb after not doing great on one when I was in school. Looking back, the whole interview was a mess. I got the call from the engineer 45 minutes late, I couldn't access the Google Doc because he was trying to send it to my university email address, and the coding portion started off with him writing "!(x & (x - 1)) && x" at the top of the empty document and asking "What does this do?".
Looking back, it was pretty silly but man did it really kill the confidence of 19 year-old me when it took me 10 minutes to work out that it detected numbers that were powers of 2. It really gave me a negative impression of Google's interview process (that and the complete radio silence afterwards), which I still think about when they send me their bi-annual recruiter emails. Funnily enough, the last email I got specifically mentioned that I had "done really well in the recruiting process in the past".
...did they at least tell you beforehand that they were coding in JavaScript? In pretty much any other language, that wouldn't compile, but those logical and bitwise operators are used in multiple languages from C to Ruby.
> When your bread and butter is crunching through large amounts of data with MapReduce, it only makes sense that you tend to take a more functional approach and think in terms of single-operation mapping, filtering, folding, and sorting.
Umm, sorry, no. You wouldn't believe what kind of 5-level-nested-if C++ statements you could find in Google's codebase. Google might be known for its technical abilities, but "affinity to functional programming ideas" is generally not one of them.
I don't think anyone could succeed in a coding test without rehearsing before taking it, just like any kind of live performance.
Programming languages are powerful things with which you can do a lot of very different things and tackle very different issues. Sometimes it's database querying, sometimes complex data structures, sometimes parallelism, genericity, business data modeling, etc. etc.
There should be a list of "warm up" exercises somewhere to help people prepare for general tests and make sure they've touched at least every subject once before going live.
I doubt that you were rejected (even if you were, which it seems like you don't know) based on needing to be prompted about select, and getting syntax wrong, especially for a non-dev position and in a phone screen. If I were doing a phone screen, I'd honestly be probing more for whether you know how code works in general, and if you knew what select was (i.e. when I prompted you, your response wasn't "uh...what's select?")
Also, did you not sign an agreement with Google that you wouldn't share interview questions before you started interviewing? I think sharing questions is generally considered somewhat uncool.
I didn't sign any agreements of any sort, and the question was about as generic as "FizzBuzz" that I wasn't giving away anything. If it's a problem, I can make it right by editing the article.
True story: I sort-of-interviewed at Google. The interview ended because the interviewer, after having been told that I had already completed the project they were trying to recruit for, became agitated and told me that I was just a hobbyist and my product did not exist -- this while he was being shown it in motion. I put a spare PCB for my product in his hand and asked him if it didn't exist, why was it making him bleed. Then I closed his hand hard around the PCB and told him to keep it, it's under GPL, and go ahead and crib from the design.
People who reject physical reality should receive a bit of negative conditioning about doing so...
That particular guy eventually was, enough to want to make amends. I believe that there is more luster in having "scooped Google" than "worked at Google" on a resume, though.
I am terribly out of Ruby practice.
Choosing Ruby as his language, presumably because it is the language he is best at, and then whiffing on the basics is probably what did him in.
The brevity of phone interviews and the need to whittle down a massive pool of applicants to a manageable stream means that the interviewer is going to infer a lot from a little.
He should have chosen a language he is better at. If Ruby is indeed his top language, and he's rusty at that, then perhaps OP just isn't fit for a coding job at this point in time?
- A language with a REPL so that I could check my ideas in a terminal window.
- A language that would reduce the amount of typing I'd have to do
- A language I that I was half-decent at (at lease at one point)
I didn't get as far as a full interview, but an internal recruiter reached out to me and we chatted for about 20 minutes or so for a specific position she was trying to fill. It was no better than a standard recruiter, really - I was expecting more.
"So, I found your resume... blah blah blah, you say you've done XYZ, blah blah blah, send me a copy of your resume."
WTF?
I said "um... you're google - don't you already have all my information?" a bit jokingly, and she laughed a bit. I then told her I wasn't at my computer, but if she Binged my name, my site would come up, and she could grab a resume from there. A few mumbles later, I got "OK, got it! I'll get back with you in a couple days with the answers to those questions!" I'd asked a couple questions about the job. That was early August - no followup. As unprofessional as any other hack recruiter imo. I guess I shouldn't have expected more, but I did.
To be fair, it was reasonable for her not to assume that whatever she found on a search would be up-to-date. Some people also like to tailor their resumes for the recipient.
to be fair, they had more than a week to go google me and see that the resume was the latest one. there are exactly 2 people with my name on the planet, and only one does much of anything on the internet (me).
"Do you have a more recent resume available? The one I have looks like was last updated in 2007" would be far more respectful - it would show you're looking at it, parsed it out, and are giving the other person a chance to polish things up if they want.
"HEY! I just found your resume! .... Send me your resume!"
"Waiter... I was just looking at your menu... things look really good. Could you please bring me your menu?"
If im ever being interviewed by Google, i'm going to say
"hold up let me google the solution to that real quick."
A good engineer spends about 95% of their time discovering new things to learn about their craft. An even better engineer uses what other engineers have already discovered and shared with the world to further their understanding.
When I hear, "I want you to develop a mini google.", I feel that the only right answer to the question is, "No thats not a problem that needs to be fixed anymore. Lets actually fix a real world problem that affects real world people."
There are very few new generation software engineers that are truly hackers at heart. Its really sad when a company like Google doesnt even know how to look for them anymore.
> If im ever being interviewed by Google, i'm going to say "hold up let me google the solution to that real quick."
If Google just wanted people to take existing publicly known parts and hook them together, they would be recruiting people fresh out of community college instead of fresh out of masters and PhD programs, and they'd be offering around $50k/year salary.
Google is trying to find people who can create the parts that ordinary programmers hook together.
I really can't get behind this kind of thinking. If you can't do what came before, how you plan on advancing the state of the art? Knowledge is hierarchical, one cannot get by forever by just googling the answer to everything if you're expected to be pushing new boundaries. Testing if you know the fundamentals is legitimate, even if there's already a million implementations of them on the web.
Deleted my comment because a) you were correct and b) I don't have time at the moment to completely rewrite my comment to express my thought on it in a cogent manner.
While you're not expected to be an encyclopedia of knowledge about any particular language, framework, or API; having the frequent need to look things up is a red flag because if you're always looking things up you may not move fast enough.
Also, having the "this is not a problem" attitude is a red flag; what else would this person not consider a problem when I hire them?
I may; hiring is tough. You only have a few minutes to gauge whether you'll work well with that person or not and bad signals are bad signals. I can't green light all candidates just in case.
It all depends on the tone and the body language and if they're able to continue with guidance.
Then you've turned the interview into a waste of time. There is no actionable information that is produced from that answer.
If you honestly are looking for a job and aren't looking to make some kind of F-U 2 The Man statement, do yourself a favor and don't give an answer like that.
I imagine that might have been a follow-up. Given that he was specifically asked to write a "search" method (and not something more open-ended), the more direct search through the docs might have been what the interviewer intended (though it might have been a plus if the author had said something about some sort of indexing off the bat).
On a related note, given that Google has been using their hiring and employee performance data to try to improve their interview process (http://www.linkedin.com/today/post/article/20130620142512-35...), I wonder whether they have also managed to identify good and bad interviewers.
So your plan for your mini Google was to iterate through every entry in the index? (Setting aside the ludicrous idea of iterating through a hash when you can just ask it for a value by key... or am I missing something? Please enlighten me if I am.)
I think you misunderstood the problem statement. The hash is keyed by the URL and the value is the body of the HTML page. The input to `search` is a term, so you would need to check all of the items to see which one contained the term in the HTML. The subject could not just index directly into the hash.
As for the interview, I really wouldn't sweat it. Even if you didn't do well in the eyes of your interviewer, 1. there are several interviews that they are looking at, not just one, 2. people understand that folks get nervous and can screw things up sometimes, and that whiteboard (or google document) coding isn't the best measure of intelligence. Because of this, they're usually more interested in how you respond to feedback than the merits of your first attempt, and 3. there's a lot of luck to any interview process - what questions get picked, etc. and even if you don't do well I wouldn't discourage you from trying again in the future.
Iterating over a hash slightly wrong when writing code in a google doc during an interview is such a stupid, trivial thing to be judged on, whether it's you or someone else doing the judging. It's clear from the "My lame attempt" example that the basic concepts are understood, and if he's written a series of articles about the Enumerable module then he probably knows it better than the majority of professional developers working with the language.
If this is a serious article, then it really highlights everything that's wrong with tech interviewing.