Tuesday, January 10, 2012

Hire Interns

Get real work done and build a recruiting pipeline

Hiring great engineers is really hard. In his book, Smart and Gets Things Done, Joel Spolsky estimates great engineers are actively looking for work 4 times throughout their careers. The only time you're guaranteed that great engineers are actively looking is when they're in college.

By hiring Interns, you're hoping to find the next great engineer before someone else does.

Before we get into the mechanics of hiring interns, let's establish that this is a give and take relationship. There is some work you'll need to do with interns, but you'll also get plenty in return.

You will need to mentor your interns to:

  • work on a team
  • create production quality code
  • be self sufficient. Show them that all the answers are in the machine sitting in front of them

In return, you get:

  • a pipeline for filling future engineering positions
  • practice for yours and your team's mentoring skills
  • some work done by a fresh, eager engineer
  • to learn a few things yourself

How to recruit

There are 3 common ways to recruit interns: setting up or using an internship program, going through campus career centers or going through faculty to find their best students.
  1. Setup or use an internship program

    Interns that came through internship programs helped drop all of our base page load times under 1 second through instrumentation and MySQL configuration improvements. We've also had interns help drastically reduce administrative times for our content developers by improving page load through SQL query optimization and adding bulk update features.
    Internship programs typically use some prestige to attract top students to apply.

    Some NYC specific examples of internship programs are the NYC Turing Fellows and Hack NY.
    You can also setup your own, like FogCreek has done and pointing listings on Craigslist to your internship program.
  2. Go to the career center

    We found one intern through an on-campus recruiting trip up to Harvard. He setup a state-of-the-art code, build and release system using GIT, Gerrit and Jenkins, which we’ve subsequently ported our code to.

    Pick the top schools that you’re interested in recruiting from. If you’re not sure, look at the US News & World Reports rankings, or where most of your team is from.

    Post your open engineering internships to the career center, schedule on-campus interviews and infosessions, or attend a career fair.

    Over time, you’ll begin to develop a taste for how hard it is to recruit interns from certain schools and which schools seem to attract the interns that end up being the most productive for your needs.

    I’ve had mixed results with career fairs. Generally, my return has been better at on-campus interviews and through job postings than at career fairs.
  3. Contact Faculty

    I hired an intern who designed and implemented our highest converting trial to buy flow for nearly 18 months by simply letting an assistant dean know I was looking for interns. He let some of his top students know we were looking.

    To contact faculty, use the list of target schools and your alumni network to locate faculty you're interested in speaking to. Send them an e-mail, tell them what you're working on and ask if they'd be willing to connect you to their top CS students.

Hiring Process

  1. Review and sort resumes as normal

    Your resume sorting process should be the same as the one you use to hire full-time engineers -- unless your normal screening process screens out anyone with fewer than 5 years of experience.
  2. Interview remotely

    Make sure your team is capable of interviewing remotely. We typically use Skype and Etherpad for engineering interviews. Your interviews should be similar to what you use for full-time engineers -- you may want to skip questions about development process (test first, source code management, etc.)
  3. Pay them

    Your interns are going to do real work, you should pay them for it. Most internships seem to pay between $3,500 and $5,000/year.
  4. Close on-site

    Once you've narrowed down your finalists, bring the ones you'd like to make an offer to on-site. Sell them on the company and your location. Make sure they would enjoy spending the summer at your location. Take them out for lunch or dinner with the team. These are valuable resources and the best ones will have multiple offers; convince them your company is right for them.

What to do once they accept

  1. Help them find a place to live

    If your interns don't live in your city, find them a comfortable, affordable place to live. In NYC, NYU housing is a good option.
  2. Give them REAL work to do

    Don't give your interns a side project that you don't care about. Give them something that needs to get done this summer. Give them something that the rest of the team would need to deliver if the intern wasn't there. Assigning an intern unimportant side-projects that the rest of the team doesn't care about will result in an unproductive internship for both you and the intern.
    As a reminder, here are all the things interns at Knewton have completed:
    - upgraded our build and release process
    - produced our top converting landing page
    - improved site performance
    - became my first hire at Knewton (8 years after he interned for me)

Go hire interns ... get tomorrow's great engineers today

Great interns will become great engineers one day. If you find the right interns, take the time to mentor them, and give them an opportunity finish a project that matters. Maybe one day they'll be a valuable full-time engineer.

If you're an intern looking for a job, Knewton is hiring interns! Click here to apply.