Techno Blender
Digitally Yours.

How I Landed an Amazon SDE Internship Without a Computer Science Degree | by Philip Wilkinson | Jul, 2022

0 57


Or Solving hundreds of HackerRank questions…

Photo by Piotr Cichosz on Unsplash

Last week I had my final day as a Software Dev Engineer Intern at Amazon after an almost 3-month Internship. It was a great experience and I learned a lot while working with some great people in an exciting department. I can’t speak too much of what I did, due to a number of NDAs being signed, but I can say that I built a new tool that I hope my team continues to use in the future. And I managed to do all of this without having a CS Degree or even attending a single coding BootCamp!

So how did I get this internship? Did I solve 500 HackeRank or Leetcode questions before my application? No! In fact in the year leading up to the internship I only solved 6 HackeRank questions in total. Did I spend all my spare time learning Data Structures and Algorithms prior to the interviews? No! I did touch on some data structures, including the basic ones in Python and some abstract data types prior to the interview, but I don’t know them all nor do I know many Algorithms in depth. Did I have a previous contact in Amazon who could have put in a good word for me? No! I didn’t even know anyone who worked at Amazon, at least as far as I’m aware, so I didn’t already have an ‘in’. So let me tell you how I did actually get the internship.

The application

I have to admit that the application to Amazon was based on the premise of “what do I have to lose”. I don’t have a traditional CS background as I didn’t do a CS degree and I hadn’t even done a coding BootCamp. My undergraduate degree was in Land Economy (a mix between economics, geography, and law) and was so far away from computer science that I didn’t even touch macros in excel at that time. However, since then I went on to complete a Masters’s degree in Smart Cities and Urban Analytics where I learnt the basics of Python, SQL, and Javascript for Geographical Data Science, and I started a PhD in Advanced Spatial Analysis building gravity models for grocery retailers in the UK using Python. This meant I was able to develop some coding and software engineering skills during my education, but I didn’t think that it would have been enough to land me a role at Amazon.

With this in mind, in the application, while I touched on my education and showed I had learned some programming concepts, I had to emphasise my extracurricular activities and some of my “softer” skills. This included a website that I had built as part of a group for one of my Masters projects, which after the submission I transferred over to AWS. I then linked this to a subsequent freelance job that I did with a friend to build the back-end workflow for a university department’s alumni website. I also emphasised a lot of the work that I do on here, as part of my Data Science blog, along with my work as a First-Year Rep and then Head of Science for the UCL Data Science Society last year. This meant that I had a lot of practical applications and projects that I could point to, to show that I could actually do the work of a software engineer, or at least I hoped.

The coding challenge

After a month of not hearing anything from Amazon I had given up and moved on to looking at other internship opportunities. Another month later however I received an email saying that I had been invited to complete a coding challenge if I wanted to. I was surprised to receive this email but thought again that I had nothing to lose, so I set aside two hours to complete it, with admittedly little preparation, and tried my best.

The Coding challenge itself consisted of two short challenges, which could be solved in less than 20 minutes, and one longer challenge that was meant to be solved in 40 minutes or so. The first two were relatively easy HackerRank challenges that still had to have some thought put into them to ensure that all edge cases were caught. At this point they stated that they didn’t care too much about code quality, as long as it worked, and that’s what I tried my best to achieve, passing all the given and hidden cases provided. The larger question however was much more difficult. I doubt it was the cleanest code of all time and I’m sure it could have been done in a much more computationally efficient manner. I managed to pass all the given cases but failed some of the hidden ones as I was running out of time to finish the challenge. I submitted my solutions on time, thinking that while I had done okay I probably did not achieve the high bar that would have been required, and so I waited. Could I have done better if I had practiced more and had known more? Probably yes, but I couldn’t do anything more about it now. I just had to wait.

Photo by Matthew Henry on Unsplash

The interview

Like with the coding challenge, I waited another month with no contact and so I thought I had failed. Again, I moved on and looked at other opportunities, even accepting another internship over that period. Another month later however (two months in total) I received an email inviting me to an interview and to select a time in the next week. The next week! I wasn’t prepared for that, and I certainly wasn’t going to be fully prepared in a week while I was still doing my PhD full time. So I set a date, did a few HackeRank questions, read up on some of the Leadership Principles, and did the interview.

The interview itself took on, what I now believe, was the typical Amazon structure of asking about leadership principles first and then performing a coding task. I thought I did reasonably well at answering the leadership principle questions, I gave my answers in a STAR format, and talked for about 15 minutes, with questions, on each. The coding question was a bit more difficult however. When I first heard what I was so supposed to do I had no idea where to start. I didn’t panic, as I knew that would be the end of that, so I broke the task down into what would be required while typing notes on the different stages, all the while explaining to the interviewer what I thought I had to do. I made sure to ask some clarifying questions on things I wasn’t too certain of, double-checked my logic, and then began to code.

As I started, I explained every line as I went and went through my thought process out loud. My interviewer was mostly quiet during this time, sometimes asking why I was doing what I was doing, but not influencing the code too much. Once I thought I had finished the interviewer asked me a few questions about the code or different scenarios, which then led to some minor improvements and tweaks to get to the final product. At this point I was confident I came up with a valid solution that would work, but not confident that it was the right one, so I finished thinking that I wouldn’t get an offer and that the next contact would be a rejection.

The offer

One week later I received a call from the recruiter saying that I was receiving an offer for an internship! I was surprised! At most stages I thought I had failed but I was very happy to receive the offer. I was even told that the interviewer was wondering whether I wanted to join their team in another city! I was intrigued, but as I had set down roots in London, along with the aim of wanting to stay in London long term, I said I hoped to stay in London for the internship this time, but that I was flattered by the offer. They said it was fine that I wanted to stay in London and that they could find a department there that would suit my skills. The next issue was then when would I start, as I already had an internship lined up, my PhD funding partner had only said yes to the one internship, and I had to do the internship for 3 months straight. I got lucky as my PhD funding body said I could do both internships, Amazon were flexible with the start date, and I just had a three-month window coming up before starting the second internship after presenting at a conference in Liverpool. I was going to be an SDE intern at Amazon!

Photo by Andre Hunter on Unsplash

Key takeaways

While I don’t claim to have all the answers, and indeed each interview and application is unique, I think there were a few things that helped me land the offer:

  • I had a portfolio of projects in a variety of different areas. This showcased that I could create a project from scratch and go through the complete software development cycle, although admittedly on a much smaller scale. I would advice anyone who doesn’t have a CS degree to do something similar to show that they haven’t just completed certifications.
  • I learnt the complete fundamentals of a single language. This meant that I was confident coding in one language and wasn’t confused about syntax issues. In most cases firms don’t care too much about the languages that you can use for internships, only that you can code and can solve problems. Trying to learn too many languages at the beginning can lead to confusion or overall lack of understanding which can hinder being able to complete coding challenges which is vital to the interview process. I would advice someone starting out to learn the ins and outs of one language before trying to learn another.
  • I didn’t panic and explained my logic. Although I probably didn’t develop the best solution to the problem, I explained my thought process, how best I would tackle the problem with my limited knowledge, and broke down the problem. This showed that with limited knowledge, I could still come up with a reasonable solution and break down problems. In software engineering this is a vital skill that if I didn’t showcase and came up with just a solution, I may not have received the offer. Don’t panic if you can’t solve something, just try your best and break it down into manageable chunks!

There are also a few things that I would have changed as well to improve my chances of securing an offer next time:

  • I would have created projects that were in the Amazon’s preferred language (Java) and ones that were part of Amazon’s business (such as a website or application). Most companies have a language that they tend to use for most things, even though you do have some freedom, and knowing that language can give you a boost in your application.
  • I would have brushed up more on Data Structures and Algorithms. This is something that certainly let me down and I was lucky enough to get a question that could be solved with basic data structures that are a a built in part of Python. This could have certainly tripped me up otherwise and is something that I will look to brush up on in the future.

Which are all lessons that anyone in a similar situation, whether interviewing for Amazon or another large tech company, could learn from.

Conclusions

This all meant that I was able to land an Amazon SDE internship without a computer science degree. I think some of that was to do with luck with getting the right questions at the right time. At the same time however I think a lot of it was also to do with having practical experience and projects that I did in my own spare time that demonstrated that I could code and solve complex problems in a real-world software engineering environment. This was despite not having a CS degree. I would suggest that anyone who is in a similar situation, who wants an SDE/SWE internship at a FAANG company but doesn’t have a CS degree, to do, document and publish. Do start building your own projects, document the process while you are doing it, and publish the results or the process somewhere such as here on Medium. Best of luck!


Or Solving hundreds of HackerRank questions…

Photo by Piotr Cichosz on Unsplash

Last week I had my final day as a Software Dev Engineer Intern at Amazon after an almost 3-month Internship. It was a great experience and I learned a lot while working with some great people in an exciting department. I can’t speak too much of what I did, due to a number of NDAs being signed, but I can say that I built a new tool that I hope my team continues to use in the future. And I managed to do all of this without having a CS Degree or even attending a single coding BootCamp!

So how did I get this internship? Did I solve 500 HackeRank or Leetcode questions before my application? No! In fact in the year leading up to the internship I only solved 6 HackeRank questions in total. Did I spend all my spare time learning Data Structures and Algorithms prior to the interviews? No! I did touch on some data structures, including the basic ones in Python and some abstract data types prior to the interview, but I don’t know them all nor do I know many Algorithms in depth. Did I have a previous contact in Amazon who could have put in a good word for me? No! I didn’t even know anyone who worked at Amazon, at least as far as I’m aware, so I didn’t already have an ‘in’. So let me tell you how I did actually get the internship.

The application

I have to admit that the application to Amazon was based on the premise of “what do I have to lose”. I don’t have a traditional CS background as I didn’t do a CS degree and I hadn’t even done a coding BootCamp. My undergraduate degree was in Land Economy (a mix between economics, geography, and law) and was so far away from computer science that I didn’t even touch macros in excel at that time. However, since then I went on to complete a Masters’s degree in Smart Cities and Urban Analytics where I learnt the basics of Python, SQL, and Javascript for Geographical Data Science, and I started a PhD in Advanced Spatial Analysis building gravity models for grocery retailers in the UK using Python. This meant I was able to develop some coding and software engineering skills during my education, but I didn’t think that it would have been enough to land me a role at Amazon.

With this in mind, in the application, while I touched on my education and showed I had learned some programming concepts, I had to emphasise my extracurricular activities and some of my “softer” skills. This included a website that I had built as part of a group for one of my Masters projects, which after the submission I transferred over to AWS. I then linked this to a subsequent freelance job that I did with a friend to build the back-end workflow for a university department’s alumni website. I also emphasised a lot of the work that I do on here, as part of my Data Science blog, along with my work as a First-Year Rep and then Head of Science for the UCL Data Science Society last year. This meant that I had a lot of practical applications and projects that I could point to, to show that I could actually do the work of a software engineer, or at least I hoped.

The coding challenge

After a month of not hearing anything from Amazon I had given up and moved on to looking at other internship opportunities. Another month later however I received an email saying that I had been invited to complete a coding challenge if I wanted to. I was surprised to receive this email but thought again that I had nothing to lose, so I set aside two hours to complete it, with admittedly little preparation, and tried my best.

The Coding challenge itself consisted of two short challenges, which could be solved in less than 20 minutes, and one longer challenge that was meant to be solved in 40 minutes or so. The first two were relatively easy HackerRank challenges that still had to have some thought put into them to ensure that all edge cases were caught. At this point they stated that they didn’t care too much about code quality, as long as it worked, and that’s what I tried my best to achieve, passing all the given and hidden cases provided. The larger question however was much more difficult. I doubt it was the cleanest code of all time and I’m sure it could have been done in a much more computationally efficient manner. I managed to pass all the given cases but failed some of the hidden ones as I was running out of time to finish the challenge. I submitted my solutions on time, thinking that while I had done okay I probably did not achieve the high bar that would have been required, and so I waited. Could I have done better if I had practiced more and had known more? Probably yes, but I couldn’t do anything more about it now. I just had to wait.

Photo by Matthew Henry on Unsplash

The interview

Like with the coding challenge, I waited another month with no contact and so I thought I had failed. Again, I moved on and looked at other opportunities, even accepting another internship over that period. Another month later however (two months in total) I received an email inviting me to an interview and to select a time in the next week. The next week! I wasn’t prepared for that, and I certainly wasn’t going to be fully prepared in a week while I was still doing my PhD full time. So I set a date, did a few HackeRank questions, read up on some of the Leadership Principles, and did the interview.

The interview itself took on, what I now believe, was the typical Amazon structure of asking about leadership principles first and then performing a coding task. I thought I did reasonably well at answering the leadership principle questions, I gave my answers in a STAR format, and talked for about 15 minutes, with questions, on each. The coding question was a bit more difficult however. When I first heard what I was so supposed to do I had no idea where to start. I didn’t panic, as I knew that would be the end of that, so I broke the task down into what would be required while typing notes on the different stages, all the while explaining to the interviewer what I thought I had to do. I made sure to ask some clarifying questions on things I wasn’t too certain of, double-checked my logic, and then began to code.

As I started, I explained every line as I went and went through my thought process out loud. My interviewer was mostly quiet during this time, sometimes asking why I was doing what I was doing, but not influencing the code too much. Once I thought I had finished the interviewer asked me a few questions about the code or different scenarios, which then led to some minor improvements and tweaks to get to the final product. At this point I was confident I came up with a valid solution that would work, but not confident that it was the right one, so I finished thinking that I wouldn’t get an offer and that the next contact would be a rejection.

The offer

One week later I received a call from the recruiter saying that I was receiving an offer for an internship! I was surprised! At most stages I thought I had failed but I was very happy to receive the offer. I was even told that the interviewer was wondering whether I wanted to join their team in another city! I was intrigued, but as I had set down roots in London, along with the aim of wanting to stay in London long term, I said I hoped to stay in London for the internship this time, but that I was flattered by the offer. They said it was fine that I wanted to stay in London and that they could find a department there that would suit my skills. The next issue was then when would I start, as I already had an internship lined up, my PhD funding partner had only said yes to the one internship, and I had to do the internship for 3 months straight. I got lucky as my PhD funding body said I could do both internships, Amazon were flexible with the start date, and I just had a three-month window coming up before starting the second internship after presenting at a conference in Liverpool. I was going to be an SDE intern at Amazon!

Photo by Andre Hunter on Unsplash

Key takeaways

While I don’t claim to have all the answers, and indeed each interview and application is unique, I think there were a few things that helped me land the offer:

  • I had a portfolio of projects in a variety of different areas. This showcased that I could create a project from scratch and go through the complete software development cycle, although admittedly on a much smaller scale. I would advice anyone who doesn’t have a CS degree to do something similar to show that they haven’t just completed certifications.
  • I learnt the complete fundamentals of a single language. This meant that I was confident coding in one language and wasn’t confused about syntax issues. In most cases firms don’t care too much about the languages that you can use for internships, only that you can code and can solve problems. Trying to learn too many languages at the beginning can lead to confusion or overall lack of understanding which can hinder being able to complete coding challenges which is vital to the interview process. I would advice someone starting out to learn the ins and outs of one language before trying to learn another.
  • I didn’t panic and explained my logic. Although I probably didn’t develop the best solution to the problem, I explained my thought process, how best I would tackle the problem with my limited knowledge, and broke down the problem. This showed that with limited knowledge, I could still come up with a reasonable solution and break down problems. In software engineering this is a vital skill that if I didn’t showcase and came up with just a solution, I may not have received the offer. Don’t panic if you can’t solve something, just try your best and break it down into manageable chunks!

There are also a few things that I would have changed as well to improve my chances of securing an offer next time:

  • I would have created projects that were in the Amazon’s preferred language (Java) and ones that were part of Amazon’s business (such as a website or application). Most companies have a language that they tend to use for most things, even though you do have some freedom, and knowing that language can give you a boost in your application.
  • I would have brushed up more on Data Structures and Algorithms. This is something that certainly let me down and I was lucky enough to get a question that could be solved with basic data structures that are a a built in part of Python. This could have certainly tripped me up otherwise and is something that I will look to brush up on in the future.

Which are all lessons that anyone in a similar situation, whether interviewing for Amazon or another large tech company, could learn from.

Conclusions

This all meant that I was able to land an Amazon SDE internship without a computer science degree. I think some of that was to do with luck with getting the right questions at the right time. At the same time however I think a lot of it was also to do with having practical experience and projects that I did in my own spare time that demonstrated that I could code and solve complex problems in a real-world software engineering environment. This was despite not having a CS degree. I would suggest that anyone who is in a similar situation, who wants an SDE/SWE internship at a FAANG company but doesn’t have a CS degree, to do, document and publish. Do start building your own projects, document the process while you are doing it, and publish the results or the process somewhere such as here on Medium. Best of luck!

FOLLOW US ON GOOGLE NEWS

Read original article here

Denial of responsibility! Techno Blender is an automatic aggregator of the all world’s media. In each content, the hyperlink to the primary source is specified. All trademarks belong to their rightful owners, all materials to their authors. If you are the owner of the content and do not want us to publish your materials, please contact us by email – [email protected]. The content will be deleted within 24 hours.

Leave a comment