Background
I had been working at my first software job for 3.5 years and in that time I moved from junior to mid. It was obvious that if I were to keep growing my skills, I would need to move companies.
First thing, I changed my status on LinkedIn to "Open to Work." About three months later, an AWS recruiter reached out to me. Working at AWS was my dream job. She said I could interview for a couple of different teams and we decided I would interview with API Gateway.
I had two months to prepare.
Step 0: Study coding challenges
I read two books and would only recommend Cracking the Coding Interview. This is common advice, but it prepares you well for coding challenges. I read through it, doing at least one problem per chapter and then reviewed as many additional questions per chapter as I had time for.
Step 1: Go to Amazon's interviewing workshop (if available)
AWS provides a number of resources for candidates. They want people to succeed, If I had not attended the hour workshop offered to me by my recruiter, I wouldn't have gotten the job. Most of the advice in this article just echoes their recommendations.
Step 2: Find two stories for each LP
Amazon holds tightly to the Leadership Principles. These are a set of short phrases used to guide decision making.
Choose two stories per Leadership Principle. Each story should:
- Follow the STAR technique.
- Be short (3-5 minutes max) to explain.
- Be tied to a professional experience. If you're fresh out of college, tie it to a collegiate experience or side project.
Write enough of the story down that you'll be able to look at your notes in the interview and remember the story.
This took me around 10 hours. At the time, there were 12 Leadership Principles, which meant 24 stories. I tried my best and came up with around 20 stories with 4 overlapping between principles.
Note: During the interview, I pivoted which stories I told according to the questions asked. Don't be rigid in the interview, but find as many stories as you can and be ready to share any of them.
Step 3: Find useful design patterns and be able to apply them.
The book "Design Patterns" by Erich Gamma is a great resource for this. Don't memorize the entire book (unless you'd like to). Instead, pick 4 diverse patterns that you could see helping you solve problems.
I picked:
- Abstract Factory
- Builder
- Singleton
- Decorator
- Proxy
- Observer
- Iterator
I only used one of these as part of the software design portion of the interview. However, I referenced more in passing as the interviews progressed.
Step 4: Look into trees
This is in Cracking the Coding Interview. Please look into it. Even if it's just BFS/DFS.
Step 5: Know O(n) notation
Some people already do but just in case, it's really important. Not just for interviews.
Step 6: Have at least 4 thoughtful questions to ask
Asking questions that show you know what you would like out of a job and want to work with the company can be very helpful. Ask software specific things you care about. One example I like is: "What is your oncall schedule like?" or "What does releasing software look like on your team?"
Figure out what you care about in a job and write down these questions beforehand.
Essential Step: Take too many notes
The picture for this post above is my setup for my interview. This was something that was mentioned in the class - that notes are allowed. Always be up front about your notes. If you're going to reference them and you happen to be remote, mention casually, "hey, do you mind if I reference my notes on this?" Or "let me just scan my notes real quick for a story that matches that."
To be honest, I memorized everything except for the 20 LP stories. But those 20 stories were incredibly useful to have written down and I'm glad I took the time to write more down because it stuck in my brain better.
The interview format
This may have changed since I interviewed, but here are the rounds I had to get though:
- Phone screening with a recruiter
- Two short, at-home leetcode style tests
- Connection with the recruiter for interview timing and training opportunities
- 4, hour long in-person interviews: system design, software design (patterns), 2 coding exercises. In each, I was asked a behavioral question
Useful Links
- Cracking the Coding Interview: https://www.crackingthecodinginterview.com/
- Bit Twiddling Hacks: https://graphics.stanford.edu/~seander/bithacks.html
- Grokking Algorithms (a very beginner friendly book I learned about recently): https://www.amazon.com/Grokking-Algorithms-illustrated-programmers-curious/dp/1617292230
- Design Patterns: https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612
- STAR Interview Technique: https://www.amazon.jobs/en/landing_pages/in-person-interview
- Leadership Principles: https://www.amazon.jobs/content/en/our-workplace/leadership-principles
How long did this take?
I didn't have any leetcode experience before I started preparing. My first job didn't contain a coding challenge. I had read the Design Patterns book, but I didn't have a list memorized. This was my first time applying for a FAANG roll.
This was my dream job, so I spent multiple hours most nights studying for it. My guess is that I spent 100 hours preparing for the interviews.
How much of this is luck?
There's always luck involved with interviewing. In my current role at LTK, I was rejected the first time and accepted the second.
What would you have done differently?
I didn't handle the offer stage very well. They ended up offering me 30k more than I asked for because I didn't trust the research I had done on what Amazon typically pays. If I had believed things, I may have been able to negotiate for 10k more in my salary.
When you join, you get to choose which OS you use. I wish I would have asked what OS the people on my team use. There is also an unlisted third option of getting a Linux laptop. I switched to that after 8 months and had a wonderful experience.
What happened after you got the job?
I joined AWS working on API Gateway for 1.5 years. In that time, I was put on an S-Team project where I led various parts of the initiative to great success. I'm being intentionally vague as I'm not sure how much of that I can share.
Then, AWS required everyone to come back to the office. I was asked to choose a location or (by default) move to Colorado. They did it in the best way possible - giving me a year to decide. I'm very grateful for the time frame.
I decided to move on, but working at AWS was one of my favorite professional experiences. The people I worked with were some of the most practiced engineers I've met and when my son grows up enough to where me being at home is not as impactful, I would consider rejoining.
If you want to be an encouraging voice and/or read these posts before they're public, buy me a coffee and let's start a conversation.
Top comments (37)
Thanks for writing this article; I really enjoyed reading it. While I appreciate the insights, I’m not sure I would want to work at AWS. I generally prefer smaller companies where I can have a bigger impact, even if that comes with more stress. I’ve always heard about the challenging interview processes at companies like Google, Facebook, and Netflix, but I didn’t realize AWS had a similar approach—although it makes sense. It’s surprising that they offer interviewing workshops to help candidates prepare. The amount of time required for their interview process might also be a deterrent for me, but I’m glad to hear you had a positive experience overall!
I love that you're thinking about your own path and what you want out of a job. Knowing that is so vital for a healthy career
It is interesting reading this. Having worked at AWS/Amazon, there is some good stuff in here, but there is a bit more I would add.
Don't make stories up. A good interviewer will ask questions and find out when/if you are full of crap. This may sound bad, but you have to be honest. Now, you can spin a story any which way, but make sure you actually worked on what you say you worked on.
Earns Trust. If you are caught lying or thought to be lying you will get axed. I have seen a full interview board turn down someone because they were caught lying. Be honest.
The technical aspect is only a facet of the interview, for technical roles. Be prepared for all types of questions. A lot of people know that everyone is just grinding leet code to prep. This means that interviewers are getting more creative in their questions. Asking open ended problems that can be solved a number of ways.
And, if you get a question about the 15/16 leadership principals, just run.
Absolutely to all three of these.
Haha, while I agree that the latter two don't fit with the first 14 principles, I think they are attempting to address real problems Amazon was facing. I hope there's a good resolution there.
Thanks for such a detailed and well informing article. You really gave very good information on what it takes to get into a FAANG company. I personally wish to get into a FAANG company and I will use this as a roadmap. Thanks for that
Glad this could help! Good luck on your journey!
😮
Wait a minute, I recognize you from Twitter! Hello again!
Hello, didn't expected that coming 😲
Keep shining, buddy. ✨
Hope Amazon retains you for long!
Thanks! They keep offering me positions after I chose to leave, but it's more important that I'm home with my baby right now.
I look forward to when I can say yes to coming back though
So true about step #4. Trees got me off guard the last time I tried at a FAANG
Right!? It's so interesting how integral they are to some faang work. I don't know of many places which would prefer to work with a tree over other data structures.
Worth reading and Thank you!
Please keep posting such articles.
Will do! I'm open to ideas if there's anything specific you'd like to hear about
How about a roadmap even more detailed ? :)
Hey, nice post! I thought I recognized that avatar from Slack and I was right.
Oh hey! How crazy to bump into you here!
Thank you so much for sharing your experience! Btw nice collection of dice you have there. ♥️
♥️ it's such a a great desk toy. I was running a ttrpg where the players where an analogy for the subconscious and repressed thought at the time