Hacker News new | ask | show | jobs
by googlemike 2538 days ago
My Amazon interview was the most ridiculous experience I have ever had interviewing anywhere. That round I got offers from Facebook (insta), Google (team matching said maps), Uber (eats) and a few others but not Amazon. At Amazon, I pulled out and declined with an email to my recruiter from the lobby of the building at the end of the day. My interviewers were broken up into two categories: Engineers who didn't want to be there, and terrible mid level managers that quizzed me on memorization of their company competencies. One of the managers was clearly reading his questions from a list, and did not care at all about what I had to say. That, combined with the sad office (manager's share a tiny office, everyone else sits in grey cubicles without sunlight), and no food or snacks (it matters) really broke it for me.

All that aside (I am willing to chalk it up to luck, god knows my first (failed) round at trying to get into Google went terribly), Amazon clearly does not compete by hiring the best engineers. Rather, they compete by throwing money at the problem and undercutting everyone else, getting by with mediocre engineering.

8 comments

> Amazon clearly does not compete by hiring the best engineers. Rather, they compete by throwing money at the problem and undercutting everyone else, getting by with mediocre engineering.

Evidence please. Amazon has a lot of freaking fantastic engineers and "throwing money at the problem" is definitely not how they solve problems.

It's a huge company and not every single engineer is excellent and there are definitely rotten bits but that's true of _every_ company that's large enough.

One of my friends has a saying that is very difficult to translate to English, but a fair translation would be "everyone has different memories of the party". The point is not to use anecdotal evidente as absolute truth.

Maybe a few rounds of interviews with each company could help to paint a better picture. Personally I could say me interviews with Amazon have been some of the most pleasant I had so far, while other companies have arrogant engineers that ask incredibly hard algorithmic problems that you would hardly ever find in real life.

Just because I had one bad interview doesn't mean I should write off the entire company.

Pretty good English equivalent for that saying: https://www.urbandictionary.com/define.php?term=ymmv
It could be worse.

I recently had an interview with a 5 day code assignment to build services, perform data transform against several competing requirements, and some other things. I provided lots of code comments, interactive documentation, test data samples, and a detailed readme file about as long as the code to explain how I went about things and how to reproduce my results

The feedback was only that the code was disorganized because all 750 lines were in one file and there was no test automation. I really got the impression they didn’t even look at the code or execute it to see if I achieved success or followed instructions. Felt like they were just wasting my time.

All my big GitHub projects are on my resume. They could have given me nearly identical feedback by looking over my GitHub projects and not waste either of our time with this ridiculous assignment.

On the upside I view this as a somewhat positive thing because if their developers can’t read code then I probably be miserable there.

The feedback was only that the code was disorganized because all 750 lines were in one file and there was no test automation.

These days a coding test has a pretty standard minimum set of features to get a pass, and they include reasonably well organized code and having some tests. If you're working alone those are less important but as soon as you join a team they're critical.

I really got the impression they didn’t even look at the code or execute it to see if I achieved success or followed instructions.

When I do technical interviews I assume the candidates code works (and it often doesn't, but that's not the point). I review it first, then I see if it meets the acceptance criteria. If your code isn't the sort of code that would be acceptable in the organization it doesn't matter if it works.

I would rather reject a candidate on quality than failing the test. Also, occasionally, if the candidate has made an obvious error that stops their code working but it's clear they write great code I might still recommend making them an offer.

I don't want to be argumentative at all. I find what passes at one company doesn't at another and it's generally an interpretation of style that can be conformed to. For example, I am of the leaning that one line should do one thing only, and should be explicit -- which is different then many modern practices. Another example is array manipulation which, depending on the operation modifies in place and I reassign for clarity.

Does that make me a bad engineer? No. It makes me experienced. If any of those things aren't wanted at a future employer I can change to match the style.

To reject based upon that when the style isn't defined by tooling is weeding out great people who may not confirm but have the ability to.

As long as they weed out a high percentage of not very good people, companies accept weeding out some great people as a cost worth paying.
Very true. I have been working at startups for a while as a hiring manager and one of the skill sets I've had to develop is finding good people who have been passed on by FAANG or who come from a non traditional background and never would make it past there filters. Simply because we can't afford the salaries, but still pay six figures to non bay area employees. It's been interesting watching the "I should work for a startup" to "I should work for FAANG" over the past decade.
> It's been interesting watching the "I should work for a startup" to "I should work for FAANG" over the past decade.

I would be interested in your thoughts on this. Is it because of salary, opportunity or security?

I am outside the Bay area.

For example, I am of the leaning that one line should do one thing only, and should be explicit

I agree. And this is actually the very reason why I can dig into a 5 year old, reasonably complex bash script of mine and successfully maintain it.

> When I do technical interviews I assume the candidates code works (and it often doesn't, but that's not the point).

Why is that beside the point? For me, as the candidate, if the evaluation is only subjective nonsense then the more important objective qualities aren’t valued in the exercise and probably in the office. That is a huge turn off to me.

Why is that beside the point?

Outside of interview conditions I expect people to be part of a team, which means they don't have to be able to solve the entire problem on their own. They can (and absolutely should) ask for help and advice from the other team members.

There is never a point in real work where it's all on one person. So the same should be true for candidates doing technical tests. If you demonstrate you can approach a problem well, you can write good code to implement the parts you could solve, but the end result isn't a working test then that's fine. In the real world you'd have had other people around to help with the bit you couldn't do.

But this isn’t outside of interview conditions. In a production environment I would write production quality code.

At any rate now I know for next time precise questions to ask to ensure we aren’t wasting each other’s time. Had I known this before the code test I would have politely excused myself from consideration.

Not sure I understand your point here. You're saying that in a production environment you'll write production quality code, but if you ask about the code style before the technical interview and are told to write production quality code you'll excuse yourself?

That just implies you can't, or can't be bothered, to write high quality code in a technical test. Why would you imagine an employer is going to overlook that and think you'll write better code if you get the job? That makes no sense.

If you don’t write unit tests on an assignment like that, you’ve pretty much failed. I made the same mistake in a similar situation with a different company. It’s tough because the expectations aren’t spelled out clearly, but unit tests are non negotiable.

[speaking personally, not on behalf of my employer]

I suppose interviewers regularly fail people for less than this but it's just ridiculous I bet if the interviewee is told to add unit tests the majority could and would

It's not a test of skill so much as a test of expectation, hidden expectations are the worse to deal with in an interview

If we're going to wag the testing finger and say always unit tests then why not always generative tests? They'd always test more inputs, why not spin those tests infinitely? Did they test in the repl? why not always mutation testing? why not always integration testing?

I don't think people like to realise that testing is a spectrum of confidence you'll never reach 100% nor should you expect to

Dealing in bullshit absolutes here is stupid, talk to your interviewee about what they could do to ensure their code complies with its intent instead of springing hidden expectations after the fact

I prefer to perform functional tests in my automation, such that you prove the application does what it claims instead of testing the internals to prove a function outputs the right data type. This seems like unnecessary tech debt that can be solved for in smarter ways, like a strongly typed language.

But had they included this as a requirement I would have provided it. I am not in the habit at guessing informal unspecified requirements. If that is an indicator of their internal communication then I suppose I am glad I failed.

> I really got the impression they didn’t even look at the code or execute it to see if I achieved success or followed instructions. Felt like they were just wasting my time.

I don't know anything about where you interviewed and of course this may not at all be true for them, but bear in mind that the point of home assignments is rarely "does it work?" That the candidate followed instructions and that the project "works" is expected. What many companies are looking for is seeing how you document, how you organize, how you test.

Again, I don't know what happened in your specific case. Just a heads up that writing tests, documenting and writing good commit messages are usually what people look at first when evaluating a home assignment.

All code being in one 750 line file is a bad thing. It would never pass a code review where I work.

I would not really care if it worked or not and have the team or developer come back with a broken down version. (which if the code is structured well inside a single file should be very fast to accomplish)

Splitting a 750 line file is not a readability improvement, if all the logic is related to and part of a single task.

Splitting code across multiple files when there's no actual reusability or abstraction driving the split makes it harder to follow the flow of logic. In particular, 750 lines is not so much that there's obviously a missing abstraction lurking there.

If your doing competency based interviewing (which Amazon appears to be doing) its on you to demonstrate the competencies.

But it does seem that Amazon's interviewing is not the best - I have worked for places where you had to take and Pass a 2 day residential course before you where allowed to interview candidates.

It's a half day course at Amazon to be an interviewer, followed by a bunch of "shadowing" interviews and phone screens. To be a head interviewer (bar raiser) requires 100+ interviews under your belt, a lot of additional training, and a lot of further shadowing.

The fact is, it takes a certain personality to be really good at interviews. (I suck at it because I like everyone, too optimistic.)

What's wrong with reading pre-prepared questions from a written list? (nothing)
A job interview is a deeply personal process. If you get someone who is disinterested, which you can easily tell if A. They read from a sheet and B. Don't listen when you answer, that says a lot about the company you are interviewing for.
>A job interview is a deeply personal process.

I think you might put a little too much stock into your work-life if you consider a job interview "deeply personal". You're looking for an employer, not a soulmate (and it's not like Amazon is some unknown quantity).

It would have been better worded as "fundamentally personal". I didn't mean it in the sense that you will talk about what your most secret desires are, I meant it in the sense that you as a person need to get a feeling for the kind of culture/people that the company you are interviewing at fosters. You can't do that without any form of personal connection, unless of course that's something you enjoy. All the more power to you in that case, but it's not for me and I think also not for most people.
Software eng. is very much a job seeker's market right now. The interviewer comes off as cold and uncaring to the peril of his company.
Nothing but he followed up by saying he wasn't interested in the answers.
Depends how you do it and if you engage with the person you are interviewing
While many may hate Ruby Rails for whatever reason, Basecamp's way of operating business has been fascinating to me, and DHH has pointed out many obvious flaws in the way today's business operate that no one bothers to speak about it. They have been talking about hiring [1], and more to come in their podcast ( Not sure if that is out yet ).

[1] https://m.signalvnoise.com/its-high-time-to-rewrite-the-hiri...

This is where a bunch of people insist that the whole company isn’t like that, it depends on your team, as if that excuses this type of thing.
Based on this, and the consistent theme that seems to run through the rest of your comments, it seems to me that all of these companies could stand to do more to assess the character of their interviewees. Reading this in the most charitable way I can still results in it coming across as arrogant, attention-seeking, and as you've made it to age 22 having experienced no hardship at all.
I am surprised you learned so much about me from my comment! Let me clarify a little: I am significantly older than 22. I had to drop out of university to provide for my ailing parents and to support my sister. I've spent more than a few nights sleeping in my car around the corner from whichever office or university I happened to be attending at the time.
Really? That theme of generosity is notably absent from most of your comments unless they glorify Google. A positive impression of someone is hard to come by if they seem inordinately eager to jump in on threads that paint non-American engineers in a positive light, or that dismiss racial discrimination as a negative thing.
Where have I done those things?
Agreed.
I'm worse though, just in a different way.