It would suggest that the interview itself selects for mostly irrelevant skills if that is a problem they're having with the process.
It would suggest that the interview itself selects for mostly irrelevant skills if that is a problem they're having with the process.
We ask people to prep because we want to know if you can do that level of work.
Was your query parser work done under the pressure and constraints of an interview environment? Would you have been able to write that parser in the same form at a white board during your actual interview?
As an example of why, consider this famous Brian Kernighan quote, Everyone knows that debugging is twice as hard as writing a program in the first place. So if you're as clever as you can be when you write it, how will you ever debug it? I've certainly been in the situation where the website is crashing, nobody knows why, but we need it fixed immediately. And solving the problem under pressure like that is twice as hard as debugging it normally.
When things go pear shaped, you really want someone available to debug it who is both competent, and familiar with the code in question. This is easy if the person who wrote the code is competent. But if the person who wrote the code is not amazingly competent, you may be stuck with your choice of competent people who don't know the code, and incompetent people who do know the code. Neither of whom is in a good position to fix the problem.
This is hopefully not a situation that comes up very often. It is not something most of us get a lot of practice for. And we put a lot of effort into avoiding a pants on fire situation. But ideally you want all of your programmers to be able to think at this level. (Even if they mostly demonstrate it by avoiding problems in the first place.)
I'm particularly curious as someone who only did a bit of CS in school and became a full time programmer from work I did as a hobbyist.
And if the answer is "yes, your work has nothing to do with the kind of work we do at Facebook, Google, etc." it's not so much that I'm appalled but actually even more curious about the jobs at those companies than I am now.
Funny that this got brought on the Facebook thread. Though I never applied at FB, I have 'mentored' two people who made it through the process. Mentoring as in, helped them make sense (and see the general pattern) of the solutions which they saw online but could not appreciate/ understand on their own. Though I guess they had lesser trouble regurgitating the solutions in the interviews.
I remember once there was a question on Quora about an IIT BTech guy who had offers from all major web companies. Some one asked him how he did it. And his advice was that you had to simply 'practice'. Simply go out on the internet check for good interview forums work on it an hour every day. Even if you are actually a worthless programmer on the ground. You can pretty much ace any interview with simply practice.
This also reminds of my Math classes in pre-university college here in India. I would generally try to solve a problem in more than one way and show it to my lecturer. One day she scolded me badly, that my experiments might end up in me scoring less marks. Her point was the evaluators were used to seeing a certain pattern of answers over years. And if the student had a new innovative answer, they would simply mark it wrong because it didn't their 'one true' answer, even if the solution was more elegant and better than the common pattern. Therefore the only way of scoring high marks was to practice all the common patterns.
Rote learning works at all levels.
I remember some days back I watched a interview of RMS on youtube, and he was asked a question on how you could be a good programmer and what books you had to read. And he gave a straight reply- You had to simply work on some hard real world problems/projects and bring them to closure. That was his advice.
Too bad these days we check people on everything apart from their actual work.
Interesting that you brought IIT up. Though I barely cleared IIT JEE and did not attend it for I could not get CS at any of the good schools, I had the feeling that it was becoming more and more hackable with the proliferation of coaching institutes. When I was in a top 5 PhD program which attracts the best of IIT K/B/M guys the quality drop became more evident over the years. There were and are still very bright IITians at my school, but I saw more noise coming in at later years.
And for those who are not aware- there are cram shops in India which 'train' you to clear Google/ Microsoft interviews. And this has been going for at least 6 years, if not more. Now from talking to my friends in India I get the impression that the superficial interview difficulty is higher in India than the Bay Area for similar companies. And that is despite the work quality being much higher in Silicon Valley.
It's all very funny and ironic.
This is so true, that I can't even find ways how to assert it more.
As a fresher, I attended a off campus interview here in Bangalore(Those who don't know- these are generally mass hiring drives, where hundreds/thousands get hired) where I happened to talk to a guy between written test sessions who even had taken very elaborate 'class notes' on clearing these interviews. He had gone through something like a 3 months coaching class just to attend these interviews. There are standard coaching materials, which are updated pretty frequently. Pretty much anything that they can ask you in these interviews will be covered. They have made you hard practice it so much it will be cake walk to you make it through.
>>And this has been going for at least 6 years
I can assure this has been going on for a very long time now.
>>It's all very funny and ironic.
Its all about the volumes. A recruiter told me, if a resumes falls down during a mass hiring drive they don't even bother to pick it up. We live in an era where recruiters search monster.com based on some keywords and pick up candidates based on that. So we are now down to SEO optimization for resumes. And then coaching classes to game the interviews.
As a side note, in all major IT services companies in India you have to take 'certification exams' for pay hikes and promotions. I've seen people drop everything they do and practice clearing these for months. The worst part is you have to 'memorize' the whole material. Later I would see those people go on to get promotions and hikes, while the actual who go the work done fail(due to lack of time to practice) in the certification exams.
Pretty sure there would be coaching classes to get into coaching classes with higher hit rates of finally clearing the interviews. It's that broken.
Whenever people talk about the madness of India's youth, I can't help not quoting Soumen:
"It's hard to overstress the liability of a nation of a billion people out of which 700 million are functionally illiterate and the rest have no wish to follow instructions, even when they are asking for a favor."
http://www.cse.iitb.ac.in/soumen/APKGKAH/illiterate/Applicat...
>> As a side note, in all major IT services companies in India you have to take 'certification exams' for pay hikes and promotions.
Hope you are fortunate enough to be not working for such places anymore.
But in my opinion, they just need an easily definable and quantifiable process. And they are happy to look the other way when they see covert cheating/ hacking as long as it clears the process. And there is no denying that there is still a decent ability threshold which most covert cheating people too will pass, which I guess suffices the corp needs.
I am a far bigger fan of pair programming after a basic phone screen, but large companies just can't do that.
You could prepare for months but if you don't understand the core CS concepts then it's difficult to hack these kinds of interview problems. Having a solution is one thing, but coming up with 3 different solutions to the same problem based on various constraints (preprocessing, space/time constraints) requires understanding.
If they "hacked" this, then thru likely understand the concepts well enough such that its sufficient for the job.
Also, interviewers should ask if they interviewee has seen the coding problem before and come prepared with a backup. Interviewers are also looking to see if the interviewee derives the answer too easily. Usually scraping the surface reveals whether the person really knows what they're talking about or not.
A good interviewer does try to gauge whether the answer was known to the interviewee. But I have seen that happen far more at hot startups than big companies- primarily because of their more stringent process which leaves less wiggle room for guess work and is more tuned towards concretely judged parameters.
I just don't like the facade of 'hiring the smartest people' in the world, when their mechanism largely filters just well-trained average people.
And I most certainly don't want to sound condescending, so I apologize before-hand. But I probably used a different definition of average than what you or most people here may have in mind. I know quite a few ACM ICPC world finalists, am a region finalist myself, and have conducted/ published CS research with reasonable impact. So I was simply using my PhD program peers as good, and people with lesser (proven) skills as average. My fault, but I hope you can see what I was trying to say.
I do think there are false negatives through this process but that's the trade off, I believe, for efficiency. Considering how time consuming interviews are (for the interviewer), there has to be some ways of reducing the wheat from the chaff.
After all, many use a university degree (from a prestigious university) as an initial filter. However, I'm sure there are many talented people who don't have degrees. But when looking at the probabilities, your chances of finding a great candidate are significantly higher if you filtered on that degree.
Advice to prep bothers you? Wow! I thought it went without saying that any endeavor of import benefits from prep.