I'm very fortunate to be undertaking a Software Development Engineer internship at Amazon London at the moment. Since I started, a few people have asked me if I have any tips on how they might secure a similar role. I don't know how qualified I am to answer such a question, but would like to help if I can.
I found that I was repeating myself in these conversations, so I thought I'd gather my general suggestions together here. Please note that these are intended for software engineering internships only, even if aspects might be applicable to other roles. If you have further questions after reading, feel free to get in touch.
One final point before I begin: in my opinion, staying balanced is more important than any of the points below, and will help you perform infinitely better in the long run. Please prioritise your wellbeing above LeetCode!
Securing an Interview
Here are some points you may wish to consider during the application process, while trying to secure an interview. You may consider some or all of these to be extremely obvious 😄
- Perfect your CV. There are many resources on this. For one example, see this article from a former Google and Facebook recruiter, but there are many, many others out there. Some of the bullet points below may also provide useful material to include on your CV. [Note: the article I linked recommends restricting your CV to a single page, but in the UK my understanding is that two pages is often fine, and sometimes preferred.]
- If at school, college, or university, try to work hard and get the best grades that you can. My hope is that both the grades and the things you learn will help you!
- Work seriously on coding projects, whether in your spare time, as part of your studies, or elsewhere. For example, you may wish to solve a real-world problem that interests you, and get it to work end-to-end. By end-to-end I mean from start to finish: building, testing, and, if relevant to your project, deploying online.
- If possible, put a good amount of your work on GitHub.
- Get some kind of relevant work experience or exposure to a company, no matter how small.
- Consider developing a portfolio website – some application processes even request these.
- Network, in any appropriate environment. Whether it comes naturally to you or not, I think it can be an unparalleled learning opportunity, and a great chance to meet other people who are passionate about technology and problem-solving.
- Pursue your tech interests, whether through practical experience, blogs, books, projects or elsewhere. Embrace your curiosity and learn as much as possible.
- Participate in hackathons.
- Keep an eye out for further opportunities, such as career events, conferences (in-person or virtual), and company events.
- Get some leadership and teamwork experience.
- Consider taking certifications you are interested in.
- If possible to obtain, employee referrals can be very valuable.
The Interview Process
Behavioural Interviews
There are many good resources out there for behavioural interviews, so I don't have too much to say here. One thing I would suggest is not to neglect this portion of the process just because you are applying for a technical role. If you have worked hard on your CV and projects to get the interview, you will have a lot of good material to discuss in this section – you just need to make sure you present it in the best way that you can.
Another thing which I think might be useful is to try to develop, and demonstrate, a level of interest in and understanding of the business side of the organisations and industries you are applying for. I think this can be important even if you much prefer coding and the technical side of software engineering.
I found these articles useful to prepare for the behavioural part of the interview process, among others:
Coding Interviews
I think it can be good to start preparing for coding interviews as soon as possible, as they can be very challenging. Here are some resources I found useful:
- Like countless others, I learned the basics of Data Structures & Algorithms for coding interviews from the book Cracking the Coding Interview, and used LeetCode to practice.
- I found working through the Blind 75 and NeetCode 150 lists on NeetCode a useful way to learn the fundamentals fast. Depending on your experience, I think this could be quite a challenging approach, though. I will also note that I found some of the provided YouTube explanations and solutions useful, but not all of them.
- I thought the book Elements of Programming Interviews was extremely good, from what I've read so far. I think it is more advanced than certain other resources I have encountered.
- I found the article 14 Patterns to Ace Any Coding Interview Question helpful.
- I find the free flashcard software Anki very useful for memorising things.
- LLMs like ChatGPT can be very useful to explain concepts, answers or points you are stuck on, but be sure to fact check its claims.
Alongside practicing the problems themselves, it may be worth practicing the process of solving them in front of someone. I think this mock interview video from Google provides a good illustration of how you could approach this.
Finally, I have the sense that what works for one person may not for another with coding interview preparation. There is a lot of preparation material online written or recorded by technology companies, or experienced engineers who have been through the interview process countless times. I would suggest looking around and seeing what works for you.
Good luck! If you are persistent, I think you will be amazed at how much progress you make – even if you find these problems difficult or impossible to begin with.
Amazon
I believe the exact application and interview process for roles at Amazon can vary between teams, so I am unsure how relevant my personal experience would be for you. With that said, my application process involved submitting my CV, a few online coding assessments, and behavioural and technical interviews. I would definitely recommend studying Amazon's Leadership Principles for the behavioural component.
I found Amazon's own resources very helpful to prepare. In particular, Interviewing at Amazon and Amazon internship tips for students and recent grads.
Apprenticeships
I didn't do an apprenticeship myself, but have been asked about them before, so thought it could be worth including this section. It's based off information from apprentices I've spoken to rather than my own experience so I will keep it brief. I was told the following could be helpful:
- Learn at least one language. It doesn't matter too much which one, as long as it's fairly common (e.g. Python). Get as good as possible.
- Build coding projects and include these on your CV.
- Try to develop a fundamental knowledge of software engineering. For example, you might be asked how to get a picture off Google Images via the backend.
- Use resources like The Student Room, Reddit, etc., to learn more about the process. The exact details will vary between companies.
- For the interview process for many firms, prepare thoroughly for LeetCode. Take courses on Data Structures & Algorithms. The difficulty of the questions will depend on the company. Make sure you communicate well during the interview (see the resources on this above).
- You may be asked to participate in a team exercise assessing your teamwork, communication and behavioural skills.
- Standard behavioural interview questions are important to prepare too (e.g. "what would you do in this situation", and problem-solving).
I think some of the information in the internships section above could also be relevant for apprenticeship programs.