Hacker Newsnew | past | comments | ask | show | jobs | submit | throw_aws_inter's commentslogin

I interviewed for 1.5 months (!!!) for AWS for a senior position, went through all the stages through the end. Then silence. I kept emailing the recruiters responsible for my interview, I kept getting out-of-office replies. Then I contacted some higher ups I found, told me they assigned my interview to other recruiters. No replies from them though. I have emailed them a bunch of times including the higher up. Then the news about Amazon layoffs got out; I presume they all got fired?

What a gigantic waste of time. Tons of stress for 2-3 months for nothing.


That is just Amazon being Amazon.

When they interviewed me the first time, the interviewer didn't show to work, so they asked another guy to interview me, he ended interviewing me in a language he didn't knew, to a position using another language entirely, the whole thing was a farce.

Some years later Amazon recruiters contacted me, asked me to go interview in person. Then during the interview in their offices, they literally forgot me for several hours in a random room of the building, the employees left at the end of shift, and left me alone in the floor with nobody in it, and I had no idea where the exit was.

I really need a job and been applying to lots of companies, but I won't apply to Amazon again.


Over a video call, the interviewer asked a coding question and immediately put on headphones and I am sure was listening to music. There was no dialogue and I had to use visual cues to get his attention.

I coded using C++ and pass by reference. He had never seen it in his life. He refused to believe modification on a reference would modify the value in the calling function! I hoping he would be willing to discuss or run the code, this was a total let down.

Note: I have 2+ decades of coding experience


You've got to be kidding... that's literally what references are for. Insane.


We don't teach pass by reference these days.

Anyone you find in the real world under ~30 years old may not even be aware that you can pass a reference and modify it directly without having to make a method return a value.

It's super cool to have someone explain to you side effects yet you show them a method with a null return and run it for them showing that the value has changed and they are mesmerized.


This is false and ageist. I got a computer engineering degree at a non elite state school very recently and this was covered in the first c++ and c classes. For that matter c# has an “out” variable that mimics this functionality, and the intro Java class covered primitive types vs. reference types. While reference types in Java aren’t the exact same thing, they do allow a void function to modify the state of the caller by modifying a parameter passed to the function.


I doubt that you can make an absolute "this is false and ageist" statement in any context, but here on HN, I would have at least expected you to supply information on what location in the world and level of institutional schooling you have.

Here in north-west EU C and C++ haven't been a part of the core curriculum for over 25 years (unless you do embedded work), and code with side-effects in desktop-class systems has been frowned upon for nearly as long due to the need for more cookie-cutter engineers to fill positions and write code that might still be OOP but has to be almost as side-effect free as functional code.

Basic/core languages are still (last time I checked when doing guest lectures ~ 6mo ago) Java, C#, Python and the mixed bag that is web languages.

This is also influenced by the core program required to be an accredited institution and the large amount of consultancies people end up working at straight out of college/school/uni. This even still happens in infrastructure-centric programs where you do lean a bit about TCP/IP and OSI layers, but then essentially get dumped into Juniper/Cisco/vmware/microsoft school which almost always gets them vendor-locked and unaware of the actual concepts and abstractions they implement.

So no, not knowing the difference between passing references or values, or pointers and dereferencing them is not as strange as you seem to think it is. It is not a piece of knowledge or experience that is seen as valuable enough by the people that create the curriculum or the companies that employ the largest quantities of inexperienced workers in this part of the world.


The core project for my compilers course in Germany in 2016 was about writing a C compiler in C++. I didn't do my intro courses at that university, but the professor clearly assumed all the students were already familiar with the language.

A lot of people seem to underestimate the prevalence of C/C++. I've had people tell me that C/C++ is completely dead and the future is machine learning entirely written in Python, but the machine learning models they're using still usually have parts hand-tuned in C/C++, or even assembly.


I work at a fairly large Python shop and we have some real performance problems with Python.

Most real world software will use many core libraries implemented in C/C++ for doing the heavy lifting. Just the FFI and creating all those Python objects makes it slow.

Python is a great language for prototyping and/or usage as a glue code.

Personally, I am more inclined to use Go for anything quick and performant. If Carbon language becomes a reality, I would bet on that since it allows seamless interoperability with C++ (and there is a large existing eco system). Else, time to learn Rust.


There isn't even a compilers course here, unless you go for a science masters. This likely got shaped this way due to the lack of interest and a push from industry to deliver more 'ready to use' engineers.


I went to a small Wisconsin state school, grad with a BS in CS in 2009. We learned C, operating systems, and had a compiler class. Definitely not useful in my day job, but it was fundamental in my understanding of programming languages and computing. Can’t believe there would be a CS program out there that would skip this.

I do know there are programs out there that focus on different aspects though, and not surprised they would be geared to make people more job ready. We actually didn’t really learn about unit testing, and such, so it’s a balance.


I'm a PM and I ended up graduating with an econ BA instead of a CS degree, but I took a few intro CS classes at UCLA in...2011/2012.

Intro to Programming 1 and 2 were taught in C++. Can't remember which one taught pass by reference, but it was definitely in one of those two.

Third class I took was Intro to Systems or something like that. The whole class was C and x86 ASM. Lots of binary operations in that one, used K&R a fair amount in that class (also learned debugging assembly in GDB and some other "low-level"-ish stuff).

Just looked it up, can't say 100% it's still C++, but the syllabus looks about the same as I remember for both class. It gets to pointers by week 7, and then in the second class goes deeper:

* https://web.cs.ucla.edu/classes/spring22/cs31/syllabus.html#...

* https://web.cs.ucla.edu/classes/spring22/cs32/syllabus.html#...

And again, I didn't even get a CS degree. This was all lower-div CS work at a public university, and I'm not even a career engineer.

> So no, not knowing the difference between passing references or values, or pointers and dereferencing them is not as strange as you seem to think it is. It is not a piece of knowledge or experience that is seen as valuable enough by the people that create the curriculum or the companies that employ the largest quantities of inexperienced workers in this part of the world.

This attitude is why you're getting flak in this thread. Your claim that "We don't teach pass by reference these days" was too absolute, and not accurate for a ton of people. Then someone came back and told you that, and you told them that their claim was too absolute.

I'll also say that it's something that was absolutely valued around the orgs I worked in at Microsoft (Azure, DevDiv, Windows, very roughly bottom half of the stack teams). If not C/C++ pointers, than __absolutely__ passing by reference in C#.

Point being: __knowing__ about pointers, passing by ref vs. value, etc. is not as strange as __you__ seem to think it is.


I never stated my own position on this piece of knowledge, so no, __I__ did not have anything to do with your point.

C and C++ (and Assembly and compilers) are not part of the standard college software engineering curriculum here. Your opinion on that doesn't matter (just like mine doesn't matter) because it is a verifiable fact. And as such, it is also not strange to not see this bit of knowledge being prevalent. K&R isn't used much except if you are either taking the purely theoretical CS degree courses or if you tack them on to the normal required courses. Even the Gang of Four is only mentioned in passing when talking about patterns.

You __could__ argue if this is foundational knowledge, and if so, you __could__ argue that therefore the curriculum is in need of adjustment. But I didn't.

Regarding what this was all about (WrtCdEvrydy's comment), he might be talking out of the wrong hole, or he might be in a similar location as I am where this is how it works and that might be different from where you are.


My 2014 undergraduate degree from an engineering school on the east coast included two required tracks, one for data structures/algorithms taught in Java and a computer systemsey track that taught C, Linux, and some operating system essentials.

I think an operating systems course, or something approaching it, is a pretty standard piece of good CS curriculums in the US still from talking with other folks I've worked with. And I live/work very far from where I got my degree.

EDIT: in the US, not in the CS, lol


UK here, graduated BSc Software Engineering in 2012, and the primary language was C++ (though we used Java in some modules).


C# also has “ref” arguments. The difference is that out arguments are required to be assigned during the execution of the method while ref arguments don’t have to be set.


What are you on about? Java, Python, Ruby, C#, JavaScript, most languages used to day have reference semantics for objects.


I don't think any of the languages you mentioned support true pass-by-reference. (maybe C# and Java, but it's not common) I've heard what you're describing as "pass-by-value-reference" Go, however, supports pass-by-reference which allows you to write a function like this:

    func swap(x *int, y *int) {
       var temp int
       temp = *x    /* save the value at address x */
       *x = *y    /* put y into x */
       *y = temp    /* put temp into y */
    }


Sure, you can't have the same code for Python, for instance, even if it was using objects, but you can have the same effect using a hack by copying the __dict__ from one object to another. However, you are still passing the object to a function by reference because the function can mutate the object and the object that the callee passed will also be mutated the same way, i.e. mutable objects are passed by reference, and values are passed as values. Which is how python, javascript, Java and the rest work. Obviously, you don't get to change what the reference is pointing to in most of these languages, but you can change the value that is being pointed to.


I don't believe this. Almost all mainstream languages use pass-by-reference by default. Java, python, javascript all pass objects by reference.


Passing a reference is semantically different from passing by reference (the latter being a functionality of the language); doing the former (behind the scenes) doesn't imply that the language supports the latter (if one wants to be rigorous, not even C supports pass by reference).

The canonical example is a function that swaps the variables passed to a function:

    a, b = 10, 20
    swap_fn(&a, &b)
    a == 20 # true
Since the above are primitive data types (ints), in order to make this work, the language needs to generically support passing the address (reference) of the variables. Java¹/Python² etc. are not able to do this; they copy the value of the variable and send it to the function, which will operate on the copy.

¹=at least, last time I've checked, which was long ago :)

²=funny to think that at least in Python, one can mess with the global register of the variables, and actually accomplish that


I understand it is semantically different, but the interviewer should not be surprised you can change a variable in a function without returning it, which is the context of this thread. It's syntactic sugar for pointers.


In python it actually depends on the data type!

    Python 3.10.8 (main, Oct 13 2022, 09:48:40) [Clang 14.0.0 (clang-1400.0.29.102)] on darwin
    Type "help", "copyright", "credits" or "license" for more information.
    >>> def f(d):
    ...     d['foo'] = 'bar'
    ...
    >>> a = {}
    >>> f(a)
    >>> a
    {'foo': 'bar'}


That example actually holds with what the parent comment said. You aren't trying to modify d exactly, you're modifying d's contents.

  Python 3.8.10 (default, Jun 22 2022, 20:18:18) 
  [GCC 9.4.0] on linux
  Type "help", "copyright", "credits" or "license" for more 
  information.
  >>> def f(d):
  ...     d = {'foo': 'bar'}
  ... 
  >>> a = {}
  >>> f(a)
  >>> a
  {}
does not modify the passed in dictionary, because the reference 'd' itself is passed by value. So the function doesn't change what d references for the caller. Java works the same way.


My understanding of what's going on with python is it passes by reference (hence what your code does), but if the data type is immutable any modification results in a new instance being created in the scope of the function, and the object passed in is not modified. Which mostly looks like pass-by-value behaviour.

I guess my understanding could be technically wrong in some way, but it seems to reflect what happens.


The issue is that Python passes references by value, so you cannot overwrite what the arguments of a function reference from the perspective of the caller. However, if you pass something like a dictionary or a class the function gets a copy of the reference and can use it to update the members of what was passed. Java operates on the same principle, although there may be some edge cases I'm not aware of where the two differ.


Perhaps I'm being simple minded, but the id of the passed object within the function is the same as the id of the object outside the function, no? My mental model is that an object's id in python is basically an address / pointer. So, how come it's the same inside the function as outside, if it's not pass by reference?


You're correct that the id is the same inside and outside the function, but when you modify the passed in argument the id changes because you're setting the value of the parameter, not what it's referencing. In C it'd be like changing the value of a pointer in a function instead of the value referenced by a pointer in a function.

Here's an example to include the id differences and the fact that a does not take on the value of d:

  >>> def f(d):
  ...     print(f"id: '{id(d)}'")
  ...     d = {'foo': 'bar'}
  ...     print(f"id: '{id(d)}'")
  >>> a = {}
  >>> a
  {}
  >>> id(a)
  140362610196224
  >>> f(a)
  id: '140362610196224'
  id: '140362610196160'
  >>> a
  {}
  >>> id(a)
  140362610196224

But, as I've posted elsewhere in this thread, this example will change the contents of 'd' since d itself is not being set, its contents are:

  >>> def f(d):
  ...     d['foo'] 'bar'}
  ... 
  >>> a = {}
  >>> f(a)
  >>> a
  {'foo': 'bar'}


Until the second line of your function (in the first example), it's pass by reference, no? It stops behaving like pass-by-reference because you then reuse the name 'd' to create a new object, which has a different id and lives at a different address.

At least, this seems like a coherent mental model of what's happening, to me.


I'm not re-using the name 'd', I'm assigning to the already-existing parameter d. Which if d was indeed a reference would result in the variable passed to the function being changed.

In explaining this I decided to check the Python docs and learned a new piece of terminology "pass by assignment", which is how Python explains its variable passing scheme: https://docs.python.org/3/faq/programming.html#how-do-i-writ...


I don't believe they're saying the feature doesn't exist or never gets used, but rather it's rarely something that's taught to junior developers, and rarely something you see highlighted as a best practice.

I've been developing for 25+ years in any language you can imagine, and know how to use pass by ref just fine, and know there are situations where it might be the best solution.

But I can't remember the last time I've used pass by ref. It's really just a coding style quirk for me, I find it "ugly" and it breaks my train of thought when reasoning through the flow of code. I certainly don't begrudge anyone who uses it though.

And OP's anecdote about the interview is certainly disheartening. You'd hope the interviewer would at least be open to the idea of learning something new. I've learned countless things from developers I've interviewed over the years, and I was incredibly happy about it each time.

Edit: In re-reading your comment and below replies it seems you may be misunderstanding what's being discussed. Yes, the things we pass into and out of functions tend to be object references by default. But when we say "pass by ref" (in some languages at least) we mean, essentially, modifying a value in a calling function without actually returning anything from the called function. That's a horrible way to explain it, but the MS documents for the "ref" keyword do a good job of showing examples:

https://learn.microsoft.com/en-us/dotnet/csharp/language-ref...


It's like the other day there was a post where someone wrote an entire blog post about how they changed a tight loop with a function call in Golang to pass a pointer to a struct instead of by-value so they stopped allocating and copying on each call.

Like...duh?

I suppose that's why I find Golang less weird to work with than others in my cohort. I spent a semester in the depths of C and OpenGL so I'm intimately familiar with by-value vs by-ref.


I haven't used C++ pass-by-reference in years, but I'd recognize the syntax. Perhaps the interviewer just wasn't very good.


doesn't really matter, all they have to do is run the code.


They use pass by value but objects are reference valued.


Yes, I understand... But the result, practically speaking, is objects are passed by reference, just like I said. Methods/functions can modify their parameters.


But you cannot change the reference itself which is possible in languages like C, C++, C#, and many more.


It's been a while, but my understanding was that actual C++ references were immutable, and what you are describing can only happen as a result of passing a pointer by value.


Yeah, you cannot 'reassign' a reference. The compiler will yell at you if you try. You can definitely modify values of your referenced object though, that's fair game. When it comes to pointers you can do whatever the hell you want but be careful.


All those languages pass by value and it's kind of embarrassing that you mixed it up while criticizing someone else for not knowing it.

One necessary (but insufficient) test you can use to determine if your language has call by reference or call by value is whether you can implement a swap function. In the languages you list, a swap function is not possible to implement, whereas in C++ it is, which tells you that those languages do not implement pass by reference.


We are actually both wrong. If they passed objects by value you'd be modifying a copy. They technically "pass by object reference" as another poster mentioned.


No sorry, you are incorrect and you can verify the correct answer on Wikipedia or any technical book on this subject.

For example the Java Language Specification states in section 8.4.1 that Java is pass by value:

https://docs.oracle.com/javase/specs/jls/se8/html/jls-8.html...

ECMAScript's Language Specification also states in section 10.6 that it uses pass by value semantics, although it's much more formal about the specific approach it uses:

https://262.ecma-international.org/5.1/

I can't link to the specific section but you can review the semantics of MakeArgGetter and MakeArgSetter which are specified to produce arguments bound to the *value* associated with the name, as opposed to a reference.

Python does not have a spec that I can reference, but given that its argument semantics follows those of Java, and once again the inability to write a swap function, it should not be too difficult to deduce that Python also passes by value.


This is indeed correct. Object references themselves in Java/Python are passed by value, which is why the following two code samples do not have the same effect:

  Python 3.8.10 (default, Jun 22 2022, 20:18:18) 
  [GCC 9.4.0] on linux
  Type "help", "copyright", "credits" or "license" for more information.
  >>> def f(d):
  ...     d['foo'] 'bar'}
  ... 
  >>> a = {}
  >>> f(a)
  >>> a
  {'foo': 'bar'}



  Python 3.8.10 (default, Jun 22 2022, 20:18:18) 
  [GCC 9.4.0] on linux
  Type "help", "copyright", "credits" or "license" for more information.
  >>> def f(d):
  ...     d = {'foo': 'bar'}
  ... 
  >>> a = {}
  >>> f(a)
  >>> a
  {}


I said they pass objects by reference, which is true. Technically, yes, Java is pass by value. However, objects are not passed by value. The value you are passing is a reference (pointer) to that object. If this were not the case, you would not be able to see modifications to method parameters reflected in the caller because you're modifying a copy. You are not modifying a copy.


I think you are deeply confused about this topic and should not be making judgements about other people. Instead of making an honest attempt to understand the difference between pass by value and pass by reference, you are trying to mince words to save face and even your attempt to mince words is incorrect.

While I likely can not convince you further that you are in error, especially since you're now trying to double down on this, for others reading this who have a genuine desire to understand this topic, please understand that Java, JavaScript and Python do not pass by reference, but instead pass by value and refrain from attempting to redefine technical terminology.

The references I cite are quite authoritative and unambiguous on this topic.


I already agreed you were technically correct!


I'm definitely nitpicking here, but I'd say almost all languages use pass-by-value, and what you're talking about is copying a pointer. C++ actually has true pass by reference, nothing is copied in memory.


In addition to pass by value and by reference, there's also a pass by descriptor mechanism. It's not widely supported, but it's just another way to glue different conventions for defining arrays in various languages, where it's not just a raw pointer to alloc'd memory.


At one interview, as a joke at the end, the set of interviewers asked me if I could write code to reverse a string. I replied, "In place, or...?" which apparently confused some of them.


... at least they did not reply to you that "no, you can't take this home - gotta reverse it here"


Coding in C++ could be a double edged sword whilst interviewing. It's hard for some interviewers to admit that they don't know C++ and they might end up surreptitiously misgrading your work. It's best to ask the interviewer's opinion on C++ before chosing it. IMO, the safest bets would be to stick to Java or Python (even Python's a fairly hairy language these days).

I once shadowed an interview once, where this happened. I felt bad for the candidate, because I wasn't allowed to speak whilst shadowing the interview, and neither did I have to submit feedback; and the candidate clearly was coding well. Although, I did reach out to the recruiter about this. And I don't know what happened after that.


Oh yeah, I didn't mention everything, I had analogous experience. At the second interview video call the interviewer didn't show up, because the recruiter forgot to tell him about it. At the fifth video call with a different interviewer, he was an hour late because of the daylight savings change, again the recruiters' fault.


I'll add to the Amazon interview complaints (early 2021 so remote). The recruiter prepped me ahead of time that I would have only 4 interviewers, and the next day they would be sending me an approval or some feedback. Having done interviews before I knew this was nonsense, and sure enough 2 or 3 days after my five calls, he called back genuinely surprised that there was no feedback. The interview itself was genuinely interesting but complicated by this team not having hired a frontend eng before.


this seems like a hazing ritual to make sure only those willing to be abused make it in.


From being on various recruiting positions, I believe it's usually just incompetence or laziness.

Hiring tends to happen when there's not enough people. Only the people who can do the job are qualified to assess whether someone can do the job. So you have people who are already at double the workload having to take time to design and handle interviews and such.

And by the time you get everyone to sign off on hiring this guy at the extravagant tech salary, economic downturn forces you to fire a bunch of people. In a recession, the least useful people are probably HR.


>In a recession, the least useful people are probably HR.

I think you mean recruiters, not HR. Big difference.


Indeed. HR handles layoffs. Well, unless you like lawsuits.


My Amazon interview was cancelled as interviewer got ill. It was never rescheduled


Sounds familiar! Not to mention the interview itself being a never ending stream of “tell me about a time when…”

Eventually you’ll get a “No” along with a message that, per policy, they don’t provide feedback. And then you’ll get several emails insisting you send your feedback, because they really want to “improve the process”. *facepalm*

Unfortunately, despite assurances to the contrary, I was generally unimpressed with the quality of the people doing the interviewing. One of them was in his kitchen, while family members moved about behind him. Another didn’t share video, because reasons, making every silence while they made their notes that much more awkward. And another would spend 2+ minutes typing in silence until finally asking the next question, ruining any opportunity for flow or conversation.

Judging by Amazon’s recent growth (prior to the recent layoffs), I’m not sure anyone has had time for any engineering. They’ve all been stuck doing interview “loops”.


Last time I interviewed for Amazon, I couldn’t understand one of the interviewers spoken English. Combination of bad audio (their side, I have a good headset) and accent. I kept asking him to repeat himself and eventually gave up, and tried to guess at what he asked.

I usually defend Amazon (used to work there and enjoyed it) but the last interview cycle was really unimpressive.


Same here.


In one Amazon interview the guy asked a coding challenge that he had apparently come up with himself. I realized later it was NP-complete.


Is that a bad thing? A lot of real world problems don't have simple computational complexity. I'd learn more about someone from how they considered heuristic tradeoffs and assumptions that could produce a "good enough" solution to a tough problem than seeing if they could reproduce Dijkstra's algorithm from memory.


It wasn't framed as "find an approximate/heuristic solution".


You can offer. Nothing about it being NP should prevent your implementing an exact solution, though. It'll be slow as balls on (at least) some inputs, and you should surface that, but maybe they only need something that works for N<5 or something.

That's different than it being undecidable, in which case you have to insist on providing something other than an exact algorithm that handles every input.


For the short story. A few years ago I was sitting a CS exam that was 3 hours of coding and then a defense where you explained what you have done on the board.

You had to compute a graph from a set of points (i think it was knn, not sure) and do stuff on it. At some point of the defense, this happened

Me: I skipped this question.

Examinator: why?

Me: If I compute it using the graph structure, it reduces to max-clique, which is np-complete. I looked for a solution using the point dara but didn't find it

Examinator: can you write an algorithm for max-clique on the board?

Me: here. This is exponential time

Examinator: it's worst case exponential time. But in this case it would have worked, you just had to try it

Me: urgh

Now I've learned my lesson: np-complete doesn't mean impossible


That's fine. Just provide and exponential runtime algorithm and you are good.


I will never again interview for Amazon unless I am about to be evicted and they are the only one left in town. Interviewed for a senior dev role, went through all the rounds, took days off of work to be available, and after the final round they just ghosted me.

I had to follow up to find out they had chosen someone else.

The amount of time I put into those interviews was absurd, reading up on all their principles, coming up with stories from my career where I met their principles etc. To then get ghosted at the end was a real slap in the face.


I think I'd rather dig holes over working for Amazon - I've never heard anything positive out of that place.


It seems to be a mixed bag. Don't know folks there who are developers specifically but I know people who say they really like it (admittedly fairly senior) and I know people who couldn't wait to get out after a rather short period.


Wow lot of complains here. I've had a good experience interviewing with Amazon few months ago. Recuiter was supper supportive and following up constantly. The interview rounds were also relatively nice. The only thing was to prep for all those behavioral questions. Been working there for a few weeks and so far better than what I expected.


That's terrible, but I can't say I'm surprised.

Amazon has done nothing but earn a reputation for treating it's employees, potential or otherwise, atrociously.


This is my own experience: if the recruiters don't call me back, that means I fail. Calling them just makes me more stressful/sad.


Yeah, exactly.

Guess how many times anyone has called a recruiter and heard "Oh yes, you got the job - I've been waiting all week for you to call me about it"?


It’s useful to call back because if you did well but they picked someone else recruiters can often send you to some other interview with a different team. This common because a team will often say we want person X, but Y is also acceptable if X declines.


This is my own experience: if the recruiters don't call me back, that means I fail.

No - it just means the decision has been made, and you won't be hired.

Which is different from "you failed". It could just as easily be their failure to evaluate you properly.


I came here to say this. You didn't fail. Its just not a good fit. maybe they are incompetent, and saving you heartache in the long run. Maybe they weren't able to extract your relevant experience. maybe you didn't share effectively. Just keep moving and good luck!


It's also a sign of having bad culture. Companies should always contact candidates in a reasonable amount of time.


THIS! It's a company that's not keeping on top of things! Overworked managers, HR doesn't have a queue, whatever, but it is unlikely employees magically escape these issues.


It's also possible their top candidate is has competing offers, and the recruiter is waiting to see if they need to fall back to you.


I tried to refer a friend to AWS and this happened to them as well. Twice.

Here's the thing though: you know all those horror stories you've heard about big tech companies and how they operate? Most of them are true, so if you actually care about the field then AWS is not the place for you. Especially if you're senior. Junior devs: you'll want to start here to build your rep and get a taste for awful at least.

EDIT: I should add that the ghosting of my friend was confirmed to be due to lay-off of the recruiters, so that's most likely the reason for the majority of the ghosting complaints here.


I would say not that bad if you take it from a different angle: what if you managed to get there and then laying off started?


Wouldn't that be better? They'd get a severance pay?


Highly unlikely you will get a severance pay as most company will only offer barely minimum required by law, which is is not much and definitely not worth the hassle. Also probation period makes things even worse for new starters as it can easily abused to dismiss a new employee for no good reason.


Most certainly not, because they would not work long enough.


since amazon has a policy to layoff the bottom 6% every year (numbers may be off), any good manager will be constantly looking for someone to hire into the bottom 6% role so they can keep their good people. Since they are not actually looking for someone who can do a good job they don't care if they treat you well.


A couple things:

1/ Managers particularly for SDE roles don’t usually have >10-12 people. In reality the URA (Unregretted Attrition) goal is mostly managed at the L8+ level where organization sizes are usually hundreds. Far more likely you have some underperformers in an overall organization of 300, even if an individual team is all awesome.

2/ Interviews at Amazon involve a Bar Raiser who almost certainly won’t work in the Hiring Managers span of control, and the debrief attempts to answer “Is this a bar raising hire?”, meaning is this applicant better than 50% of people in the role/level.

I can really only speak for AWS and Engineering roles, but I never saw any “Hire to Fire” behavior at Amazon, and most every Bar Raiser that I saw took the role seriously and was not a “rubber stamper”.


This is my experience, too. I've mostly stopped responding to comments where people talk about how bad Amazon is. I've never experienced the horror stories despite being here longer than the average tenure and working in three separate orgs.

Balls may have been dropped by some people, but I always have recruiters pinging me relentlessly the day after I've done an interview so they can get back to the candidate within 5 business days.


I keep hearing this trope but this is very naive. A manager simply cannot keep hiring into bottom 6% role. All candidates are subject to the same type of interviews. Every interviewer has to give a "hire" decision for the new candidate. Then there is a bar-raiser interview in Amazon where the interviewer belongs to an unrelated team. They need to give a "hire" decision too. Unless all of this happens, a manager cannot simply hire a new candidate. There is no way a manager can simply hire into the bottom 6% role to keep their good people.


I saw this happen personally. I was in the interview loop along with the hiring manager, HM was not inclined but the bar raiser and other people on the loop, myself included, were inclined but as a downlevel (L7 -> L6). Candidate is hired, I start mentoring him, he gets dev-listed (aka Focus) within two months, is pushed out by month six. I can only assume the HM had an axe to grind against this candidate, and saw a H2F opportunity.


“I can only assume” is I think the key to this comment, however let’s explore some hypotheticals.

You are a Director; you have a 350 person organization; you’re leading a rapidly growing business (let’s say >40% YoY growth in revenue, not uncommon in parts of AWS); during the OP1 you secured incremental investment of 20% meaning you’ll grow to 420, which is +70 hires to make.

You’re goaled against a 6% URA meaning 21 people exit voluntarily after being entered to Focus, during Pivot, or involuntarily at the unsuccessful end of a Pivot.

If I spoke from experiences, I’d say the (vast) majority of your URA will likely come from the tenure group with < 18 months at Amazon, in effect, hiring decisions which didn’t work out and where, in debrief, everyone thought the person had potential to be a bar raising hire but in reality they were bottom quartile. In the debrief your clear options were “Hire at L7”, “Hire at L6”, “No Hire”, plus maybe some flavor of good fit for Amazon but not really for this specific role.

Let’s take the extreme of this and say all URA comes from just the +70 growth, 21 people would be a 30% failure rate.

In a less extreme and more likely scenario: it’s more like some fast failures occur from the +70, others are slightly slower and show up after 12-18 months (that would be the prior years growth). Tenured people with e.g. >4 years sometimes start to struggle for whatever reason.

That’s not all that unexpected, in my opinion! Even with a structured well-used interviewing mechanism you’re getting perhaps 6 hours of signal and during this time the applicants are naturally very focused on “putting the best foot forward”. After a hire decision you work with someone for 6 months or more and ask “Is this what I expected?”, and “If I could make the decision again based on the signal I now possess, would I still be strongly convicted and proceed to hire this person?”. When the answers to these questions are “No”, that’s often what commences the performance management processes.

Now, this explanation works for growth businesses, it’s less apparent how 6% URA makes sense in a flat growth organization, since you’d be finding those cuts from a mostly tenured and presumably mostly proven set of people.


This is why my only response to Amazon recruiter emails is “No thank you”.


This is seemed pretty standard practice now, small companies, big companies, recruiters, FAANG. Actually Amazon for me was the best - I deliberately followed up a week later and they actively apologized and provided some feedback.


Could it be a deliberate test for being persistent? "Candidate does not jump through hoops to follow up, if they are not sufficiently interested we aren't either"

Then on the other hand, nobody ever got promoted for being nice to rejects. If their processes select for ambition (and they sure do), nothing that does not promise promotion will ever get done and that should qualify as explanation three times over.


Well they didn't change their mind. :) I think providing feedback is work which also requires coordination from more than one people, so is easy to avoid.


I sat through Amazon's process twice. Both times was 9 total hours of interviewing. Both times ghosted at the end.


ghosting is pretty standard in my experience, 1-2 months of interviewing and testing then nothing is pretty standard in the industry


I went through four interviews with (insert popular encrypted messaging solution) a while ago and got a verbal offer, then proceeded to be ghosted entirely, no more replies, from multiple people. Still don't know what happened.

How is this acceptable? So much wasted time, and not just for me. I basically interviewed the entire team I was supposed to be working with.


Why redact the company name? It would be a kindness to warn us away from them.


I still respect what they do, I don't respect their hiring practices or representatives. They are quite present on HN, for what it's worth.


Fair enough, thanks for explaining.


Here (Israel) it's illegal, you can reject a candidate for pretty much any (non discriminatory) reason but you have to tell them about it pretty promptly.

It's weird there are US states where it's not a requirement.


One practical problem is that there are a fair amount of people who are simply unstable, and if told why they were rejected (in very neutral to positive framing) they will actively challenge it and even go pseudo-stalker mode over it.

Dealing with just a handful of these guys is enough to do away with providing any sort of feedback. Like many things, a few bad apples ruin nice things for everybody.


Then we have a right (and moral right) to ghost companies without any notice, too.


Yes, in the US you do. Makes you look bad just like it makes a company that does it look bad.


ghosting in no way solves this problem, it's universally acknowledged as worse than a simple 'no'


Isan email that says we've moved on with another candidate sufficient or do you have to give the exact reason?


Exact same thing happened to me with Amazon. Spent a considerable amount of time interviewing with them for a manager position, then they simply ghosted with zero recruiter response for weeks on end. Finally they told me they ended up closing the position.


From what I hear Amazon is a terrible employer even for highly skilled positions, so maybe it's for the best.


Very similar experience. Checking on my application using the link they provide would still show "under consideration", but I knew after 2-3 weeks I wasn't going to get a call back. Someone finally got back to me after I emailed/called a few people I had dealt with along the way and they confirmed it.


Well I hope you didn't put all your eggs in the AWS basket ...


What was the salary or benefits that made you decide to endure that?


Don't know and I am desperate enough to not care about salary at this point: I apply for jobs everywhere and the only times I have had a reply the last 6 months (except for AWS), I was offered positions with relocating to other countries.


If you don't care about salary then I recommend going to some small bank or finance place.


I'm thinking the recruiters were the first to be let go.


same experience with Amazon a while ago, same with Microsoft, looks like ghosting is common


You are mad they didnt just hand you a job that pays 450k a year?


I was planning for applying for AWS as well, but since their lay off, I didn't

Thanks for sharing.


[flagged]


human beings can often find situations like job interviews stressful. OP is probably a human.


An interview with one of the largest, most important tech companies in the world. Everything about landing a job there makes you more valuable. You have the prestige of having worked at AWS, who are known for hiring only top talent. And you’ll have worked at a scale unrivaled outside of a handful of other large tech companies. I’ve heard nothing but terrible things about working at AWS, but if you can tolerate it for a while, I’m sure you’ll have gained a lot of valuable experience. The trouble, it seems, is getting out before AWS makes you completely miserable. /(Based on people I know who have worked there, and comments I’ve read around the internet. None of this is first-hand experience.)/

I am still curious about the other question, though.


> You have the prestige of having worked at AWS

> I’ve heard nothing but terrible things about working at AWS,

wut?


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: