Aaron's Lab

I was asked these questions by someone on LinkedIn about my software engineering internship at AMD and about software engineering in general, so I decided to also post the questions and answers here. The questions have been altered slightly for brevity and clarity.

Q: I'm a relatively new programmer and I was wondering how good I need to be to even get considered as a SW engineer intern at AMD?

A: For AMD, or anywhere really, you need to be really good at programming, I'd say at least like 3 years or more of experience. Prior work experience also helps a lot, and prior experience with the technologies the position you're applying for is looking for is also key. There are many different software engineering internships at AMD. For example, there's a GPU driver debugging position, ML engineer position, front end dev position, and much more. So when I say "prior experience with the technologies" I mean like prior experience with Windows and Linux drivers, tools used to debug them like WinDbg, prior experience with machine learning and neural networks, different ML frameworks like PyTorch, Tensorflow/Keras, computer vision experience, and so on.

If that seems like a lot of stuff, I guess it kind of is, but you can split it up into smaller parts, and over a long period of time. I'd recommend applying for positions at AMD after you're done your 3rd year of university (or have 3+ years of experience), because the positions are almost always 12-16 month co-op's. You can start working on projects relating to those topics on the side, if you want, because another thing is you should genuinely want to become a programmer, and actually like it, not just be in it for the money because the positions pay well. So if you actually are passionate about programming, then yeah, side projects are really useful. Also create a GitHub account and dump your projects on there, and then add a link to your GitHub profile on your LinkedIn profile.

Q: What projects should I start on to increase my chances of an internship as a software engineer at AMD?

A: I sort of answered this above, but projects focusing on areas that the jobs are looking for, which gives you experience with them, are really important. Now all your projects don't have to be related to the position, it's good to be well-rounded and have a bit of experience with lots of tools and technologies. So you could create a website and host it, which will give you front end experience (also link it on your LinkedIn profile), and also experience with DNS records and other web-hosting standards.

One definite must-have though, is Python experience, specifically Python 3, because basically all the machine learning code you're going to be writing to start with, will be in Python. You could do it in C++ but personally, I think Python is easier. Also having a good understanding of the hardware is a definite must if you're going to apply for a driver related position, but even still it's good to know about the different parts of a computer, how they work at a high level, and also how an operating system works (you'll probably have an OS course in university, I did in my 3rd year).

Q: How do the interviews work for a software engineer?

A: So for me, I only had 1 interview for positions at AMD. At different companies, it's different. For example, Red Hat was 2 interviews, one to get to know me, as well as standard, generic interview questions (strengths/weaknesses etc.), and then another where I talked to a technical person who asked me questions about my prior experience with things and side projects that I had worked on (which does not include any projects you did in uni courses). Amazon was 3 interviews, though you can double-check that online. They tell you what it's going to be like on their website.

Specifically for the AMD interviews, all of them were a mix of technical and generic questions. There were coding questions, where I had to screenshare and program something on the spot, but that's basically universal across all companies. They each have some programming question, related to algorithms and different programming paradigms, that you have to solve in a certain amount of time. For these questions, you really have to know your data structures and algorithms and when to use specific ones to solve your problem efficiently.

Q: What did you think you did differently compared to your competitors when applying for this internship? In other words, what was your edge that made you stand out?

A: This is a tough question to answer because I don't know what my competitors did, but I'd say that my work experience and experience with programming in general gave me the edge. I also don't think I messed up my interview, though I have with other ones, and you'll get better at them with practice.

Apart from that, just in general, don't be afraid to ask for clarification, in the interview or in your job or wherever. Also, if you've made an attempt to try and figure out a problem yourself, and you can't, then ask a question and provide all the steps you've taken to try and resolve the problem. People are much more willing to help you if you tell them what you've done already, and show them that you've made an attempt to solve the problem yourself before asking them. Google Search is your friend, so use it, and also learn how to google things properly.