I love hosting engineering interns. They get in early, they work on whatever you ask them to work on, and they usually seem to enjoy it, no matter what it is. More often than not, they write good code, ask good questions, and make a positive contribution to the team culture. They cost relatively little, are easy to hire, and learn quickly.
If you are an engineering manager and not hiring interns year round, you are making a mistake. This is even more important at a startup where top talent is extremely hard to find. If you are at Google, maybe it’s less important because of the abundance of full time talent. But even at Google I found that interns often made outsize contributions.
Why do I like interns so much?
There are a bunch of reasons.
Interns are easy to hire.
The way to do it is establish a relationship directly with the career placement office or computer science department at the schools you want to hire from. When intern season comes, they will reach out to you directly about the hiring process. If you are proactive you should be able to get a bunch of inbound traffic from students looking for summer jobs.
The interview process for interns should be much lighter weight than for full time. I recommend an initial phone screen with a hiring manager to get a feel for culture fit and baseline experience, followed by a short coding test and technical phone screen.
The main things you are looking for are (a) is this person going to fit culturally, (b) is their attitude good, (c) is their general intelligence high and (d) do they have enough baseline CS knowledge that they are not going to be in over their head in a professional setting.
Interns are available year round
Look into schools that have CoOp programs like Waterloo and Northeastern. I cannot recommend highly enough that you hire from Waterloo – we have had 10 excellent interns from there at my current company. They are the same quality that you would find at a top eng school in the US, but are available all year.
Interns will work on anything
Most of what they are learning is how to be productive in a professional software development setting, so the particular tasks matter less. They have not yet developed the sense of entitlement and need to work on particular tasks that ~some~ full time engineers get 🙂
Interns are fun
Most of them are, anyhow. Having a rotating group of students who are learning how to code in the office is just plain fun. They enjoy coding in a way that I remember enjoying it when I took my first CS class and stayed up all night coding my first project. The positivity they bring improves the whole office.
Mentoring interns is a growth opportunity for engineers
Every intern should be managed by an engineer, usually one who is not already a manager. It’s a great opportunity to train engineers to have their first reports. I always have engineers successfully mentor interns before asking them to manage.
Interns are relatively inexpensive
Good interns definitely are not free, and at first you might balk at what you have to pay. At a minimum you will need to pay 50% of the rate you pay a junior engineer. If you are competing against Facebook and Google, you will need to pay more (as of writing this, you might need to pay up to $7k/month).
However, if you are getting high-quality interns it’s worth it. In my experience the best ones quickly become as productive as your junior engineers, for a much lower price.
Internships are a pipeline for full time hiring
I haven’t had quite as much success with this at my startup as we had at Google, but if you bring on interns and they have a great experience it’s definitely a leg up for hiring them post graduation.
How to host an intern
It’s pretty easy, actually, but there are a few things to get right.
- Pair each intern with a dedicated mentor. Every intern should have a host engineer to answer questions and meet with them regularly to check in on progress.
- Start interns on very small tasks. Start with trivial bug fixes, followed by small features.
- Give every intern a “big” project. After a few weeks, interns should get to focus on bigger, more impactful projects.
- DO: Make this project something that your product actually needs. Interns should make a real impact.
- DO: Make it meaty enough that it’s anywhere from a few weeks to a couple months work in total.
- DO NOT: have the intern work on it alone. This is a good way to end up with a project that you have to completely throw away because the code is written wrong. Always have a real engineer working with an intern.
- DO NOT: make this an experimental side project. The best way to get the most out of interns is to have them work like real engineers on real projects that you actually need.
- Give frequent feedback. Like you would for a full-time engineer.
Gotchas
There are a few things to look out for to make sure your interns are net positive contributors.
The biggest risk of hiring interns is that you will throw away their code. I do not recommend that you put them on something that is outside of the main part of your code base, and I can’t emphasize enough that they should not work on their projects alone. The unsuccessful internships I’ve hosted have always followed this pattern.
A second risk is that an intern will unwittingly do something really costly, like bringing down your app. This is on you, as an eng manager or host, to prevent. It’s a real issue; at SelfMade, one of our interns accidentally deleted one of our production databases; another deleted our Facebook app.
Do not let interns work on super-sensitive parts of the code; lock down what actions they are able to take; carefully review their work, make them write tests, etc. But the truth is I have seen senior engineers bring down services far more often than interns.
The final risk is that interns won’t be productive and will be a net negative in terms of the resources needed to manage and train them. This is possible if the interns you hire are too junior or not high caliber. You need to tackle this high up in the funnel by only getting interns from CS programs at good schools. I’ve had some random high-school students intern and it was more work to clean up their code than if they had never written it.
Secret Weapons
We had so much success with interns at my last company that we thought of them as a sort of secret weapon, an advantage over our competitors in the war to get great engineering talent.