
How I went from failing every interview to a job at Amazon - reggylong
http://reginaldlong.com/how-i-went-from-failing-every-interview-to-a-job-at-amazon/
======
ZanyProgrammer
It appears the OP describes his experience as a college student (presumably
full time) at Stanford. As someone with a bit more atypical college
background, who now works, the idea of devoting so much of my free time to
studying boggles my mind. Programming 9-5 everyday makes me much less likely
to want to do any coding when I get home.

And it really sucks that being a full time programmer isn't remotely
sufficient experience for any kind of technical job interview. I'd be laughed
out of the office if I suggested we write BST algorithms on whiteboards.

~~~
unoti
> the idea of devoting so much of my free time to studying boggles my mind.
> Programming 9-5 everyday makes me much less likely to want to do any coding
> when I get home.

I can sympathize, but I suggest long term you figure out a way to get over
this sentiment. If you plan to work in the industry for any length of time you
absolutely must study to stay employable.

With few exceptions almost every segment of the industry changes how it does
things about every six years. What you do now will be pretty out of date in
mid 2020. I've been working as a programmer since the late 80s. If I step back
in six year increments and look at the technologies I was using, here's what I
get:

2011: Python, Django, MySQL, Jquery, Mercurial (not Git).

2005: PHP, CakePHP, MySQL.

1999: AIX, PowerBuiler, VB6, FoxPro, Access

1993: DBase 3, 8 bit embedded systems (68HC11)

At every stage of my career people I've known said there was no need to go
learn new stuff. What they're doing will always be in demand. I'm talking
about people doing things like ANSI 77 COBOL, RPG/3, and system 36 assembler.
They were probably right, I'm guessing there's some orgs out there still using
that stuff. But the options get smaller every year.

If you want to have your pick of the best opportunities available and be in
control of your own destiny, and want to work in the industry more than 5
years, you're going to have to train yourself.

It'll help if you figure out a way to enjoy the experience and have fun with
it.

~~~
dkarapetyan
The fundamentals don't change. Merge sort in Cobol is the same as in assembly.
The rest is window dressing.

~~~
sidlls
Actually the rest isn't window dressing, unless you're working on a very
narrowly scoped glorified CS project. Actual engineering-scope projects may or
may not require a deep understanding of "the fundamentals" but certainly not
to the extent that the focus on them for interviews suggests.

~~~
dkarapetyan
I don't understand what distinctions you are drawing. I don't know what
engineering-scope vs CS means.

------
minimaxir
This is a after-it-therefore-because-of-it argument/survivorship bias.

Inversely, not knowing the technical questions doesn't mean that alone is the
reason the interview "failed". /r/cscareerquestions had good discussion
yesterday about the realities of interviewing:
[https://www.reddit.com/r/cscareerquestions/comments/68czkl/w...](https://www.reddit.com/r/cscareerquestions/comments/68czkl/what_terrible_career_advice_do_you_see_repeated/dgximxd/)

~~~
reggylong
I agree that there are many reasons why someone can "fail" a technical
interview (I wrote about some of them here[0]). It's just as important "how"
you solve the problem and that you come off as someone people will want to
work with.

[0] [http://reginaldlong.com/i-failed-my-tech-interview-and-i-
don...](http://reginaldlong.com/i-failed-my-tech-interview-and-i-dont-know-
why/)

~~~
axoltl
Neither of which can be solved by 'studying' for an interview. I'll argue that
the required skills are on the interviewer, not the interviewee. As an
interviewer I'm trying to assess a skillset, be it social, be it technical.
All the points you listed (except #5) I deem to be a failure on the part of
the interviewer:

1\. You didn't make enough progress on the problem.

The interviewer didn't properly explain the scope of the problem.

2\. You were too slow and didn't get through all of the problems.

Again, a scoping issue on the interviewer's part. When I interview, I have one
_single_ problem that I pose. I interview largely for embedded security folks,
so I write this on the board:

void func(char* arg) { char buf[128]; strcpy(buf, arg); }

And I will ask them to explain what's wrong with it. Most people can answer
that question fairly easily. With this simple problem on the table I now have
a base to start more questions from:

\- How would you fix this problem? \- In a large codebase, how would you find
this problem? \- What's really happening here on a machine level? \- What sort
of system-level mitigations can I implement?

These are all branches I can take, and once I feel like the interviewee is out
of his depth in any one of them I jump back up. I'm trying to assess the
skill-level of the person, not whether they meet some minimum bar (though I
can do this afterwards, of course).

3\. Your solution is complicated.

There's a little bit of shared blame here. The playing-field isn't level in an
interview as the interviewee is naturally going to be nervous. You as an
interviewer can help level it a little by giving some broad strokes help.
"That solution looks like it might end up a little complicated. Do you think
there's a better one?". I have given no technical guidance, but have given the
interviewee a chance to step back and think.

4\. You didn't communicate well enough with the interviewer

Everyone works differently. When I'm solving a problem, I like being alone in
my head to focus. Some people more naturally are drawn towards collaborative
problem solving. An interviewer that doesn't recognize this is a poor
interviewer.

You as the interviewer can solve the problem by occasionally asking "So, what
direction are you thinking?" or "Can you write me out on the whiteboard where
you're going?".

5\. You ignored the interviewer's feedback

Yeah, ok, that one is on you.

~~~
voltagex_
> void func(char* arg) { char buf[128]; strcpy(buf, arg); }

I'd much rather solve this one - and talk about maintaining legacy systems,
than any of the other interviews I've done.

~~~
axoltl
I'll be honest with you, I've conducted some attrocious interviews. It's taken
me a long time, and a LOT of interviews, to get to the point where I feel like
I'm not horribly butchering them most of the time.

I found that I really like the "pick one problem/question and go deep and/or
wide" approach. The above example I can go anywhere from compilers (Q: "What's
the smallest function a compiler could legally output given this code?" (I
love this one :P)) to C (Q: "How is 'buf' allocated?") to static analysis (Q:
"How would I statically find all instances of this pattern?") to exploits (Q:
"How would I exploit this vulnerability?") to mitigations (Q: "Given a stack
overflow, what can I do to make it harder to exploit for the attacker?"), etc.
etc. etc.

------
driverdan
> Set up a system for studying for interviews

This makes sense if you're still in college and learning but if you're already
a professional you should not be studying. If you get asked pointless CS
questions in an interview walk out. That is a terrible way of finding good
employees. Employers should be asking questions relevant to the position.

~~~
reggylong
What would you say are examples of meaningful vs. pointless CS questions?
Anecdotally speaking, I've heard of senior engineer interviews where the
candidate has an impressive resume but has difficulty coding solutions to
"basic" problems.

~~~
bkovacev
For a senior role - "Basic"/pointless problems are those algo questions you
would ask at the big 4. Rarely will you find a senior level engineer knowing
the best solution to inverting a binary tree or any other text book problem
you know because 9/10 times those are not used at all in any of the most
common real world cases.

However, what meaningful questions will cover are advanced architectural
problems, particular inner workings of a tool/framework, how to squeeze in the
last few drops of optimization etc. Conversation should flow without any major
breaks and the most experienced engineers will talk about edge cases of edge
cases, thus continuing the conversation themselves. You can discuss different
types of architectural patterns, ins and outs of each one and how it can be
applied to a particular problem.

You should not waste the engineers time on textbook questions if you value
yourself or the interviewee, and as the parent comment stated - the engineer
should walk out if they start asking "basic" questions. Someone that worked in
the industry for 10-15 years should not be bothered with them.

------
naitoon
As someone who is already in Amazon and moved teams, I recommend you to keep
your interviewing skills sharp, specially if you see that the project you're
working on is going nowhere and might be cancelled. You wanna be ready to
interview so that you don't get moved to a random team. I was in that
situation and it really sucks. I had to start over getting used to
interviewing, failing 2 or 3 interviews before I landed a job with another
team. A really complicated time for me.

~~~
bkovacev
I'm not sure if I understood this correctly - you had to interview for another
team within the company, even though you've already went through that same
process once? If true, that's ridiculous.

~~~
mikestew
Hell, it's what Microsoft was doing fifteen years ago, and I have no reason to
think it has changed. Change teams? You have to go through the same loop and
same hazing as a new-hire candidate. There might be a little less paperwork, I
don't recall.

~~~
therealdrag0
Yep. I had a friend at Microsoft go through this a couple months ago.

------
UK-AL
I agree interviewing is basically a skill now.

But I find that concept silly since since whole point of interview is to find
how good you are as a developer. Not how good you are at interviewing.

~~~
dagw
On the other hand, someone willing to 'work' unpaid overtime and jump through
unreasonable hoops to just get a job is more likely to continue doing the same
once they get the job.

~~~
cryptarch
Which is why you should let companies filter you out by choosing clear
personal boundaries regarding the interview process.

------
simonebrunozzi
This is my "getting a job at Amazon" of 9+ years ago:
[http://brunozzi.com/2008/05/22/how-i-got-hired-by-
amazoncom/](http://brunozzi.com/2008/05/22/how-i-got-hired-by-amazoncom/)

I hope you like it and find it useful. I think it's still relevant today.

~~~
reggylong
Hey Simone. Awesome story! I actually ended up working at AWS too (S3).

I'd love to get in touch with you. My email is reggylong at gmail.com

~~~
simonebrunozzi
Hey reggy! Just sent you an email :)

------
haskellandchill
I don't study for interviews any more. I figure as I continuously improve my
Computer Science and Mathematics fundamentals it will just happen naturally.
So yeah I've been to final at Google, Amazon, and now Facebook, but I probably
won't get a job offer for another year or so. Their loss though :)

~~~
sleepychu
I've never studied for an interview but I don't see any correlation between
being able to smash the technical tests and getting hired.

In fact I think that often scoring 100% on the technical has hurt me because
they believed my ability outscopes the role they're hiring for. (though they
won't hire me for a senior role because I'm too young, eurgh.)

EDIT: In fact I think the best correlated factor has been applying for jobs
where I'm apparently not qualified enough, the companies that decide to
interview me anyway are:

\- Willing to assess me not $YEAR - $GRADUATED

\- Struggling for candidates

~~~
dcole2929
Serious Advice: Remove the graduation date from your resume. Most companies at
an institutional level don't care when you got your degree so long as you have
one. Specific people might care if it comes up but not enough to make a point
of it. They're generally perfectly happy to hire you based on your interview
performance.

Source: Have been involved in hiring at giant software corp

------
NTDF9
And this is how another smart person dedicated their life to solving puzzles,
just so that they could get a job on an obscure feature in a giant company.

~~~
toephu2
And what do you do? Would you like me to marginalize it too? Any job could be
marginalized in the way you just did.

~~~
NTDF9
I'm sorry. If a Stanford grad gets the same job as a bootcamper, I fail to see
the value of college.

It's not so much about marginalizing a job as much as an examination of the
value of education from a good school.

Either education isn't valuable anymore or companies suck at allocating bright
minds. You choose!

------
avenoir
Amazon recently opened new office in Boulder (i believe) and started hitting
up a lot of folks in the surrounding states. I live in CO, but my company is
in KS and I started hearing a lot of chatter among our interns that they're
grabbing kids left and right from schools in the area with mediocre to below
average computer science programs. In fact, one of the kids who interviewed at
our place ended up taking an offer from Amazon, which i kid you not was around
$100K more than what my company was offering for a new grad with no prior
experience and a degree from a school that doesn't even make it to the top 100
in the nation.

~~~
mabbo
100k more for a new grad? That can't be right. Five years back, the new grad
offer was 90k, plus 45k of stock over four years. If they're up that much,
things must be getting desperate.

~~~
avenoir
I'm sure $90K is a thing somewhere on the coasts. A typical starting salary
around here (MO/KS) is $60-65K considering you have some internship
experience. Otherwise it's usually in the mid 50s. Amazon offered $160K (bonus
included).

~~~
mabbo
I would guess the fact that most starting developer salaries are 60-65k in
your city is the reason Amazon opened an office there.

I moved to the Toronto office not long after I joined, and that office existed
for similar reasons. Lots of talent, but generally low wages in the city. Made
recruiting easy- they went from 25 people five years ago to 500+ today.

------
pfarnsworth
I'm currently studying to find a new job. I intend to memorize all the
algorithms I can, all the tricks, and completely fake like I'm figuring out
the answers on the spot when I interview. I will dedicate the next 3-4 months
on this. That's just how things are these days unfortunately.

~~~
eadlam
That's not faking anything, that's just learning.

~~~
1stranger
You're supposed to act like you're figuring it out in real time during the
interview. They're "seeing how you think". When really you're just trying to
recall.

------
known
I'd recommend you to master [https://techiedelight.quora.com/500-Data-
structures-and-algo...](https://techiedelight.quora.com/500-Data-structures-
and-algorithms-interview-questions-and-their-solutions) before attending
technical interviews

------
sytelus
TLDR; Lots of practice, at least one problem every day from CTCI.

The reason this article is interesting is entirely because author is actually
CS student and that too from Stanford. Most CS majors anywhere in the world
have to take algorithms classes and even more advanced compiler design,
distributed computing, parallel programming, graph theory etc (for example,
Stanford has CS161). Its hard to imagine CS student who hadn't had
_Introduction to Algorithms_ as textbook and did not had to do at least few
assignments from that book.

So given all that, I'm wondering how author got through those classes because
those classes are usually much more demanding than tech interviews and
questions are more harder (try yourself doing CS161 final exam [1]). While
CTCI does have lot of material that is not covered in typical CS classes, I
would think pretty much all fundamentals such as permutations and basics like
checking correctness of recursive algorithms or runtime complexity etc is very
well covered. In fact I would argue that anyone heavily relying on CTCI as
only source would be much weaker on these fundamentals and a competent
interviewer would be easily able to identify them.

[1] [http://web.stanford.edu/class/cs161/final-
autumn16.pdf](http://web.stanford.edu/class/cs161/final-autumn16.pdf)

------
40acres
Interesting. I dropped out of a CS degree so I thought the theoretical
knowledge was preventing me from getting jobs. If a Stanford Grad has trouble
with interviews it seems that CTCI and tools like Leetcode are the way to go.

~~~
akhilcacharya
I know two people that didn't finish their degrees (not even in CS!) and had
offers from Google, FB, Airbnb, Square... all from being really good at
technical interviews. It happens.

------
ChuckMcM
Something else that you might try, instead of doing 'practice problems',
consider taking each algorithm or concept you want to learn and putting it
together with a project that can use it. Everyone learns differently and for
people like me, things 'stick' better in my head when I can relate them to a
project rather than just as a bare concept unrelated to the real world.

------
dnautics
I failed every coding interview as well. I'm not a great programmer - no
industry experience, only academic, (but I passed all of the "coding riddle"
problems my friend who is a senior programmer kept failing), and I made it
through triplebyte's interview (I can write a bloom filter from scratch in
under an hour). When whiteboarding though I have problems like, "doesn't
default to hash", "has trouble remembering how to BFS", etc.

Eventually I got a programming job doing data science at a startup in
"emergency hire mode". Didn't have to whiteboard, was hired on reputation and
friend network alone. They even forgot to ask me to send a link to my GitHub.
Most of my day to day in the first few weeks has been literally "debugging
shellscript".

------
shmerl
This puzzle based interviewing system is a complete mess. How did it get to
this?

~~~
toephu2
Algorithmic problems are not puzzles..

~~~
shmerl
They are puzzles, if some spent many years coming up with solutions for them.
Surely if you know the solution for the puzzle, it's easy. But if you don't -
you won't be able to solve it in reasonable time. So what is the point of the
interview? To know if you memorized tons of puzzles in advance?

~~~
poikniok
Civilizations spent centuries coming up with what we now know as basic
arithmetic. The point is now that people have done it, it is easy.

~~~
sigsergv
Civilization spent years coming up with what we know as programming libraries.

No one asks historical foundations of arithmetics during basic math exam. You
don't need to know how to multiply roman number.

------
peteretep
There are some detailed tips in here:

[https://www.slideshare.net/perlcareers/how-to-prepare-for-
an...](https://www.slideshare.net/perlcareers/how-to-prepare-for-and-survive-
a-technical-interview)

------
justinzollars
I am going through the process now and I can definitely sympathize.

~~~
cwein3
I sympathize with you too! Good luck person!

~~~
justinzollars
Thanks!

------
relics443
"For example, I would stumble on simple questions like generating all
permutations of a set by writing a recursive program that wouldn’t even
terminate (even though it was something you would learn how to code by the
second intro to CS class)."

Does that mean second course, or second class? Because second class would be
pretty intense. Although second course is pretty intense too.

~~~
relyio
Fwiw, this was an assignment question for a first-year CS course at UWaterloo.
We use Racket, a dialect of Scheme.

It's hard for first years, but the prof is really good though

------
tled
Does Amazon hire Mobile developer (Android/iOS) ? I have been in a situation
where I got into the final interview at a large tech company and did all the
test well, but they emailed me after that saying my background (mobile) does
not align at this time with any teams.

------
smnscu
Great article, added it to my collection of interview prep resources:
[https://github.com/andreis/interview](https://github.com/andreis/interview)

------
utmachina
This is strictly for those in college with the TIME to study and interview.
I'm a year out of a top-10 college; just signed a new job offer recently.
Let's just say that difference is day and night. College is very much a
cushion for your job search process. Grown ups have to deal with the emotions
of failing startups, working over time to push through deals/compliance
issues. Try having the stress of a family and dependents, yikes...

------
pdimitar
I never seen how exactly did he get the Amazon job offer, though. The article
cut really important parts of the story.

------
cwein3
Hi Regy! I must say I am very impressed by article. May we get in touch
perhaps? PM me!

~~~
hihelenn
Same.

------
bluedino
The Earth's Most Customer Centric Company? What's behind the meaning of that?

~~~
andrewcoover
That's Amazon's charter. Google has "Organizing the world's information",
Airbnb is something along the lines of "Belong anywhere" etc.

Sounds like some good Koolaid

------
hihelenn
Thank you. Very impressive. You should work at every company ever.

~~~
cwein3
I may be looking for ppl. We offer good rate. Start work at my company. Work
hard, play hard, so the motto goes.

