Interns and new graduates — Keys to job search and interviewing success
For many students, looking for an internship or graduate employment may be their first time experiencing the interview process and creating resumes, and I’d like to offer some advice for those of you in this position. These guidelines are intended to help you think about how to present your capabilities in the best possible light
What we’re looking for
For new graduate and internship positions, it often surprises students that tech companies are, in general, less focused on them knowing specific technologies or languages. They are more focused on determining whether you have:
- solid fundamentals (data structures, algorithms, etc.)
- passion for problem-solving and software development
- an ability to learn quickly
It is generally expected that you have confidence in at least one programming language, with a solid grip on its syntax and common usage. It is also helpful for you to demonstrate an understanding of object-oriented concepts and design but, again, this can be independent of any specific language.
Your resume is a critical chance to sell the reader on your abilities. While it can be uncomfortable to ‘toot your own horn’ it is important that you use your resume to try to differentiate yourself from the sea of other candidates. A dry list of courses or projects is unlikely to do this, so it really is worth investing a lot of thought in expressing on the resume what was particularly interesting, important, or impressive about what you did.
- Definitely include details of any side projects that you’ve worked on, and don’t be afraid to demo them if you get the chance (mobile apps, websites, etc.). Some students are embarrassed because they are just hobby-projects and not commercial-grade applications — this doesn’t matter!
- Include details of anything that you are proud of, or that you did differently or better than others.
- If you mention group/team projects be sure to make it clear what YOU did, rather than just talking about what the team did. Which bits were you responsible for?
- Don’t emphasize anything on your resume that you are not prepared for a technical discussion on. For example, if you make a point of calling out a multi-threaded, C-programming project, you should be ready to talk about threading, and, ideally, being able to do impromptu coding using threads. We’re not expecting perfection, but are looking for a solid grasp on fundamentals and syntax.
- Leave out cryptic course numbers — it’s unlikely that the person reading your resume knows what ‘CS252’ means, but they will understand ‘Data Structures’.
- Make sure you have good contact info — we do occasionally see resumes with no contact info, or where the contact info had typos.
I’ll also steal this advice from my earlier post on resumes :
…quantifiable impacts (of your work) are harder to document early in your career so you should focus on examples of : learning quickly, taking initiative, taking on more responsibility, demonstrating ownership or leadership
While an interview can be nerve-wracking, interviewers love to see people do well and are there to be supportive.
- Coding on a whiteboard or over Zoom is difficult (but the interviewer knows that) — a large chunk of most technical interviews is problem-solving or coding on a whiteboard. Interviewers are very understanding that coding on a whiteboard is not easy, so don’t worry about building neat code from the outset.
- Don’t rush to code — think about the problem, ask clarifying questions, and maybe jot a few examples down to help you get oriented.
- Talk through what you are thinking — a large part of a technical interview is understanding how the person is thinking, even if you’re running through approaches to eliminate. Getting to an answer is only part of what the interviewer is looking for, and they want to see what your thought process is.
- Ask for help (but not too quickly!) — it’s OK that you don’t know everything, and sometimes get stuck. If you get stuck, explain what you are stuck on and the interviewer will be prepared to guide you.
- Use what you are familiar with — you will likely be asked to code in the language you are most comfortable with. Do it! Some students think the interviewer is ‘expecting’ them to use a certain language because it’s one we used at the hiring company, but that’s not the case.
- Perfection is not required — while no interviewer is ever going to complain if you do everything perfectly, forgetting a little piece of syntax, or a particular library function name is not fatal. It’s more important that you write code that is easy to follow and logically reasoned through. Also remember it’s OK to ask for help if you are truly stuck. At the same time, if your syntax is way off, and you’re asking for help on every line of code then you’re probably not demonstrating the level of mastery that is expected.
- Come prepared with questions for the interviewer — the interview is an opportunity for you to get to know the company in more detail, and see if it’s somewhere you’d like to work. Think about the things that are important to you, and that you’d use to decide between different employment/internship offers.
Over my career I’ve found that these rules of thumb apply well in all technical interview/application processes, and hopefully they are useful guidance for students out there. Any other advice from readers?