Last night, I made this post on LinkedIn:
At the time of this writing, the metrics for the post are as follows:
In addition to the 170 comments, I now have over 300 new connection requests and a host of messages in my inbox.
I have no idea why my post had such a wide reach! I expected maybe a few people to respond. Realistically, I am unable to give a personalized response to everyone, but I want to respond broadly. That is where this post comes in.
First, a few things:
I am a software development engineer (SDE) at AWS. I have very little insight into most other roles at this time. Thus, I will best be able to assist those looking for an SDE Role.
Amazon has numerous job openings for SDEs. According to the hiring website, there are 20,022 open jobs for Software Development at the time of this writing. Not all of those are for SDEs but most of them are.
A referral from a current employee does not make the interview process any easier.
So based on the number of openings, the opportunities are there! The question you should be asking yourself is whether you are yet qualified to be an SDE at Amazon. To figure this out, consider these questions:
Can you solve medium/hard problems on leetcode.com? Can you solve them in 20-40 minutes? Can you solve them without referencing external resources? Can you solve them in a basic editor with little to no code completion (or alternatively on a white board) and no compiler? Can you solve them while actively talking through the steps you are taking including tradeoffs, runtime complexity, alternatives, etc.? Are you comfortable asking for direction if you get stuck? This YouTube video is a great example of how you should handle these coding questions during an interview.
Do you have examples from your tech career where you practiced Amazon’s Leadership Principles? If you are new in engineering/tech, do you have fitting examples from your past career or schooling? When asked about your work experience, can you answer in such a way that demonstrates these principles using the STAR method? Amazon is dead serious about their leadership principles!
For mid and senior level roles, can you design systems? If someone asked you to “design a chat service”, could you do it? Do you understand how to gather requirements? Do you know when caching works? Can you explain the tradeoffs between relational and NoSQL databases? A great resource for learning systems design is the ByteByteGo newsletter.
If you answer “no” to any of the above, then chances are you are not yet ready to interview. But that’s OK! I was not ready for much of my career either. Here is what you can do to prep (and this mirrors my own prep):
Grind through problems on LeetCode.com or a similar site. Amazon requires SDEs to have strong problem solving skills. I have written about this in a past post, but I will repeat my methodology here.
Pick a question and try to solve it. If you are new to problem solving, then start with easy questions.
If you can’t solve it, look at how other people solved it on the forums. Spend time understanding precisely what they did to solve it and why. Wait a few days, and see if you can solve it without referencing their solution. You might encounter new concepts by doing this. Dive Deep on those concepts. For instance, I did this on a problem and found someone using a Trie data structure to solve the problem. I had never used a Trie before, so I spent hours learning about it.
Do step #2 even if you solve it on your own! Others might solve it in more optimal ways. Remember, the goal is to learn and get better at problem solving, not to just simply solve the problems.
Solve the problem again in a different programming language! Amazon interviewers generally do not care which language you use during an interview. However, a great way of guaranteeing that you understand how to solve a problem is to do it in multiple languages.
Get a job as a software engineer. If you are new to software engineering and didn’t study computer science or a related degree in school, then getting a job as an SDE at Amazon will be difficult without any prior experience. However, most companies do not have an interview process as difficult as Amazon!
Review ALL of Amazon’s publicly available interview prep material. This page is a great place to start. Amazon’s SDE interview process is well known. You do yourself a disservice if you don’t learn about it ahead of time.
Practice coding interviews with your friends. The structure of an SDE interview at Amazon is very transparent. Get some of your programmer friends to administer a “mock/practice interview” for you. Try to emulate the experience as much as possible by doing the following:
Have the interviewer design a problem or pick a problem from LeetCode. Do NOT let them tell you about it until during your mock interview.
Use a simple code editor to solve it. If you can, turn off most style/error checking. Do not use a compiler. Do not look anything up.
There should be a time limit of 40 minutes max for a coding interview. In an actual interview, you might actually have less time to solve the problem. This is because the first 20-40 minutes is used for questions based on Amazon’s leadership principles.
Practice Leadership Principle Questions with your friends! These are even easier to practice because your friend doesn’t really have to be a programmer! Amazon mostly asks behavioral type questions based on your experience. They’ll often come in the form of “Tell me about a time when <fill in the blank>”. Amazon recommends using the STAR format when answering questions. Have your friend record whether you use STAR or not! People often forget to include the R in STAR which is the result. Practice learning how to not make that mistake!
Practice Systems Design with your friends. Are you seeing a pattern here yet?
I hope this post was helpful! If you do feel that you are qualified already, then please apply!