Tuesday, November 9, 2010

Start hiring interns, today!

If you're an engineering manager at a startup any company anywhere, you need to start hiring interns immediately. Here are the most common reasons I hear for not hiring interns:
  1. I don't have the time to manage/mentor them

    You have some set of work you need to get done, probably more work than you have people to do the work. The question you need to answer is whether or not the work that interns will help get done will be worth the time investment in the interns. I'd say about only 1/4 of the interns I've hired need more management or mentoring than any other new hire we bring on. Usually, this is a problem with confidence and can quickly be remedied by pointing the intern toward the right places to find solutions to their problems before asking for help. This does not mean that you do not need to structure projects for the interns, but certainly not more so than for any of your other engineers. The overall complexity of the projects you give them may be lower than the problems you give your most senior engineers, but the projects themselves should not require more structure.

  2. I don't have time to sift through all those resumes

    This is a problem common in all hiring and an extension of the 1st excuse. Set up a simple set of criteria to strongly filter your set of resumes. We look for interns with a website, high GPAs, and some set of achievements and extracurriculars. Read Joel Spolsky's sorting resumes article for more on how to do this well for any job. When using the right process, reviewing resumes takes way less time than you think it will.

  3. I need people with more experience

    You probably need some people with more experience, but more likely than not, you have a lot of things you do every day that could be effectively completed by an intern. Furthermore, I am consistently floored by the experience level that most interns come in with. They have grown up with technology starting at younger ages than all of the more senior engineers have. They can't remember a time before computers. They know more than you might think. More importantly, if you're getting interns from great schools with great programs in their junior or senior years, they are likely learning skills and techniques that aren't even in common practice yet.
Once you've accepted these 3 reasons for not hiring interns as fallacies. Here's what you need to do:
  1. Choose which schools you want to focus on. The more selective the school, the earlier you'll need to get started.
  2. Post your internship position with those schools' career centers. The ideal time to do this is in September, but I've hired great interns as late as March/April. If you're in NYC, you need to apply with hackny and NYC Turing Fellows. At Knewton, we managed to land a hackny fellow last year. Check out Knewton's very own Stuart Partin at http://hackny.org/a/2010/08/video-of-the-hackny-summer-2010-demofest/. This summer will be our first sponsoring a NYC Turing Fellow.
  3. If you're interviewing remotely, use a remote screen sharing tool to do the rough equivalent of a face-to-face interview. Dim dim or WebEx are great tools for this. These tools allow you to speak with the internship candidate and white board in real-time - Skype with Etherpad work great, too.
  4. Pay your interns! You will get real value from them, you should give them some back - outside of experience.
  5. Get them releasing production-level code early. This is probably the most important process to demystify for a new engineer. Most have never even heard of a release or deployment procedure. Show them it's not that hard.
  6. If they're really good, hire them full-time.
Once you've hired your interns, here is a sampling of the type of things you can expect based on what I've seen our interns accomplish:
  • Significant free trial conversion improvements.
  • My first hire at Knewton (from a previous company internship).
  • Faster loading web pages, thanks to some smart SQL tuning and rewriting and a pretty kickass performance report.
  • More user-friendly administrative interfaces. 
  • Expanded functional testing coverage through Selenium.
  • Chat integration with Trac.
  • Movement of large sections of code to a single build process.
  • User research.
  • iPhone app specs.

At the end of the day, the excuses most people come up with for not hiring interns are easily outweighed by the production you can expect. Even when paying interns, the value outweighs the cost. If you get really good at hiring interns, you will not only get greater output from your team, you will also create an incredibly valuable recruiting channel.

Please feel free to drop me any questions or comments below. If you're interested in interning at Knewton, email your resume to techjobs@knewton.com.