Live data from Hacker News

Why I Don’t Talk to Google Recruiters

yegor256.com

331–340 of 674 posts

Re: Why I Don’t Talk to Google Recruiters

#331

Earlier quoted context omitted.

Funny you bring up the CS curricula. In response to not knowing the speed of sound as included in the Edison Test, Albert Einstein replied: "[I do not] carry such information in my mind since it is readily available in books. ...The value of a college education is not the learning of many facts but the training of the mind to think." This is even more true today with the vast trove of easily searchable called the Int…

That story about Einstein doesn't illustrate what you think it does. Einstein was a theoretical physicist, not an experimental physicist; there's no reason for him to have known the precise value. However, you can bet that Einstein knew the theory quite thoroughly (review his writings if you believe otherwise) and would have been rather less than impressed by anyone calling themselves a physicist who did not. And asi…

I'm not sure I buy that distinction. Do you believe that experimental physicists know every single formula and can recite it off the top of their head? Because unless they use those formulas constantly in their work, they end up having to look them up.

Same thing with algorithms like tree traversal. You should know the theory behind them, but unless you regularly implement them, there is zero reason to commit their implementation to memory to the extent that you can casually write them on the white board during an interview.

>>And aside from that, let's face it, none of us here are Einsteins.

Even more reason to not try to memorize something unless you use it constantly.

Re: Why I Don’t Talk to Google Recruiters

#332

Earlier quoted context omitted.

I'd be interested in hearing from people who work at Google, and get to figure out a cool algorithm for solving an interesting puzzle-problem more an about once a year. I bet there aren't very many. In my experience, the stuff you do in this kind of interview has very little relation with the stuff you do in the actual job. (I wish it did! I love those algorithmic puzzles.)

> In my experience, the stuff you do in this kind of interview has very little relation with the stuff you do in the actual job. (I wish it did! I love those algorithmic puzzles.) This is what confuses me. I tend to take the problems I get during an interview as representative of the work I would be doing, and then get turned off by the job immediately. At least at the PhD level, you'd expect that the job would be us…

I used to enjoy giving interviews because it was fun coming up with these little problems, and discussing them with smart people. Because I didn't otherwise get to do that very often at work! But I felt guilty about giving a false impression to interviewees about what the work actually involved...

Re: Why I Don’t Talk to Google Recruiters

#333
post #26

There is no standard way to interview a software engineer. Whenever one of these threads come up we see multiple posters explaining their process, and while each process has it's upsides and downsides, no two are exactly the same. For a company the size of Google, with the amount of applicants they receive, I would assume that an interview standard is absolutely necessary. It's not perfect, but for 95% of developers…

I am not a standardized programmer, so I have no interest in Google's standardized interview. I tell their recruiters I am not interested as I doubt you would hire me anyway given I don't fit your standardized system. When you design your system for some specific person type, that's all you will get.

Yep. Your path into the company (were you interested in joining it) is:

1) Found your own company to do a specific thing 2) Prove out you can do the thing and do it well, and furthermore have the thing be valuable enough that it would be worth acquiring but not valuable enough that it can operate as an independent company that covers its own costs 3) Google decides that what you're doing needs to be part of their portfolio and they buy your company and staff.

Re: Why I Don’t Talk to Google Recruiters

#334

Earlier quoted context omitted.

You're missing the point. Sure, you should make it fil gracefully on unexpected input. But Google shouldn't change APIs in a way hat causes 3rd party apps to fail at all.

Third party apps wouldn't fail if they were correct in the first place. Failing gracefully on unexpected input is the way a competent engineer would structure their program.

[deleted]

Re: Why I Don’t Talk to Google Recruiters

#335
post #19
post #7

The worst part for me is how long the process takes, and how much time is invested for an interview process where the success rate is so low. My recent experience with AMZN was: - get contacted by recruiter, schedule a call with recruiter a few days later - take a take-home coding test a few days later - talk to the recruiter again a few days later to tell me I did well on the coding test - talk to another recruiter…

May be not for many people here on HN but for very large number of engineers job opportunity Google/Amzn/MS/FB etc are once in a lifetime type. I have not met people in my circles who would balk at interview process there.

From my experience, either your profile is deemed interesting and you'll get contacted by these companies from time to time (Amazon being the most aggressive) or they'll never get back to you, even if you try pretty hard.

There isn't really a "once in a lifetime" email from a recruiter. Once you interviewed with them you'll have plenty of opportunities to interview again.

Re: Why I Don’t Talk to Google Recruiters

#336
To contrast and say something surprisingly positive about Amazon. A local Amazon engineering manager looking to hire people sent me a note and suggested we discuss over a coffee. While I didn't want to pursue the opportunity I definitely left with a much better opinion of Amazon.

Also contrast with Microsoft when I had a series of technical interviews with members of the team I would be working with. I ended up going with a different opportunity but again I left with a good impression.

The Google hiring process sucks IMO. I've been approached a few times. I recall one phone coding interview where the Google engineer was condescending and trying to prove he's smarter than me. It seemed like he was in a bad mood or something, that can happen I guess. In a later recruiting attempt a Google recruiter called me, said he'd follow up, and then left Google to go work for Apple without having anyone follow up with me. Yet another recruiter, when he heard what area I'm interested in, said I've no chance because everyone in Google wants to work there. One thing that should automatically give you pause is a recruiter in Texas while the jobs are in California. Clearly that recruiter doesn't interact closely with the teams he's hiring for.

Google has gotten away with this for so long because they can be picky. Every open position has 100's of candidates. But times will change. They certainly have a lot of good people but they also have a lot of less good people. I've worked with some ex-Google people and they're really just like everyone else. Conversely there are lots of very good/smart people who don't work for Google...

Re: Why I Don’t Talk to Google Recruiters

#337

Earlier quoted context omitted.

Have you ever worked with the Android SDK?

In my opinion, Android's code organization is a result of questionable architectural constraints applied early in the development of the platform.

Isn't that exactly the point roguecoder made?

> I have had catastrophic failures caused by premature optimization, because locking a tool into a fancy algorithm before you know where the actual bottleneck is is a recipe for disaster.

EDIT: Or, are you saying that it was from the decisions made before Google acquired Android?

Re: Why I Don’t Talk to Google Recruiters

#338
post #316

Earlier quoted context omitted.

> Select candidates who are keenly interested in and knowledgeable about algorithms for positions where it's important (i.e. part of the regular course of development), not because of that slight chance there is one edge case where one adjustment to a more efficient algorithm might possibly be useful at some indeterminate point in the future. Well put! At the end of the day, it's way more important to get your produc…

Customers won't necessarily come back after you rewrite your product to deal with all the perf problems your naive implementations caused. I'm all for striking the right balance with perf concerns, but in my experience that's not "just deal with it later". Giving no thought to performance is as bad as micro optimizing at the beginning.

True. It's a balance, it's hard, and there is no silver bullet. I believe I should learn from my mistakes and move on rather than have rabid obsession over big O. If something is obvious or caught by code reviews, fix it then and there else move on.

Re: Why I Don’t Talk to Google Recruiters

#339
post #182

I've been working as a software engineer for quite a few years now and I'm sure I'm a much better software engineer now then when I graduated. I now have years of solving varying real life problems with real-life constraints (budgets, deadlines, ...) using a big amount of different technologies, working with a lot of different people, ... However, I'm also pretty sure I'd have a better chance on the Google interview…

> However, I'm also pretty sure I'd have more chance on the Google interview right after graduation then now, when all the theoretical stuff was fresh in my brain. So I'd have more chance while being a (in my opinion) less useful engineer. The thing to understand is that Google is more interested in not hiring potential bad hires than in hiring every good hire. Part of the reason the interview process works the way i…

handwave It's a tradeoff.

What you may have atrophy a bit being out of academia for a little while is the jargon and some nuance stuff (i.e. can you still reason formally about big-O notation, do you still know the names and relative behavioral constraints on all the fundamental data structures, even the ones you personally haven't had to touch for a decade because your specific industrial domain hasn't really necessitated them---can't tell you the last time I coded my own hash function over just using whatever the default "map" / "dictionary" / "object" is in the language I'm using).

What you will have an advantage on is the real-world stuff that an undergraduate new-grad may not have ever seen yet, like "How do you actually build a system that can move data from a web-based UI with authentication through to a database or backend-processing infrastructure and then back out to the user (and how do you scale out a system like that when it starts to bottleneck)", "How do you monitor and maintain a system after you've built it," and (probably the biggest gap between graduate-knowledge and real-world knowledge) "Cool algorithm; how do you verify it's right?" A surprising number of undergrad programs still don't teach unit, functional, or integration testing as a significant aspect of software engineering.

Re: Why I Don’t Talk to Google Recruiters

#340

See his posts How We Interview Programmers [0] and Hacker-vs-Programmer [1] for more insight. It is ironic, then, that the author is claiming that algorithms, and knowledge of them, are unimportant for a programmer. "There is no point in giving me binary-tree-traversing questions; I don't know those answers and will never be interested in learning them." He believes he is a good programmer, and that learning algorith…

I learned algorithms and data structures at university. That was the last contact I had with most of them.

For most of the companies in existence, as a software pro you will be working on the worst code ever written. It is all the worst code ever written out there, except the rare unicorn company that was co-founded by a software pro, and developed by best practices from the very start. You will never have the time, nor the opportunity, to design something that might work better than what is already there. Your tools are a spool of baling wire, a roll of duct tape, a tub of spackle, locking pliers, and a #2 Philips screwdriver. You know other tools exist, but you are not allowed to use them. They are too slow. And also expensive.

Nobody cares about big-O out in the real world. They care about alignment, margins, font sizes, and button clicks. They have all the money in the world for fixing something that's broken, but never a single penny for building things that don't break. You will never, ever be asked to traverse a binary tree. You will have a hard time even finding a binary tree. It's either an invisible part of the framework you're using, in which case traversal is already handled, or the data are not even organized well enough to shoehorn into any recognizable data structure.

So what usually happens is that some guy once made a spreadsheet. This becomes the nucleation site for all the business computation. But it doesn't scale. So the business gets a software amateur to port the spreadsheet into a "real" software solution. It might have been written in Delphi if you're lucky, or Visual Basic 6 if you're not. That scales past the four guys previously using the spreadsheet, but it doesn't scale with company growth. So then the business hires software professionals, but those guys are expensive, so all they are allowed to do is weld in a new support and slap a new coat of paint on the amateur solution, so that more hardware can be thrown at the problem. This last step is usually repeated until the company exits.

Sure, you can select in your interviews for people who know how to construct ivory-tower software under academically ideal conditions, but you're intrinsically selecting against all the people who can tell when your dumbshit software development process is wasting colossal piles of money, because the developers are effectively working with both hands and one foot nailed to the floor. If you hire someone fresh from the ivory tower, they are going to see the lovely pile of filth you live in, and recommend that you throw it out and start from scratch. Replacing it from scratch never goes well, but the new guys don't know that until after they have tried it at least once.

You're not going to get that guy who speeds up your existing software by x% just by walking the entire codebase and replacing every instance of the string '+' operator with buffer concatenations and string formatting statements. You're not going to get that guy who saves you 6 months of development time because he or she walked down the hallway and asked someone how they actually use some feature and heard "we don't use that anymore." You're not going to get the guy who solves problems before you knew you had them, not for promotions or recognition, but because it keeps you from running into his or her office in a panic at 4:45 PM on a Friday.

In the real world, you just link the binary tree library that has already been in existence for 20 years, and forget about it. Unless your company is the one maintaining that library, at most only one of your employees will ever need to know anything about how it works, most only need to know which specific business problem it solves. And no one will ever look at it again, until the profiler says it's a performance bottleneck.

Post reply on HN