Saturday, November 24, 2012

Book Notes: Moonwalking with Einstein

Since my time working on education software and thinking about the best ways to educate my daughters, I've been curious about the role of memory and memorization drills. A couple months ago, I read Bill Gates's recommendation of Moonwalking with Einstein, the topic again piqued my interest.

The story tracks journalist Joshua Foer on his quest to move from covering memory championships to becoming a memory champion himself. The book provides a great source of information regarding history and methods of memory training from the Rhetorica Ad Herrenium's few passages on memory to modern day commercial memory training master, Tony Buzan.

While Moonwalking reminds me that I need to work on furnishing my Memory Palace and increasing my working memory, I find it's utility as a reminder that becoming an expert relies on "deliberate practice." Experts "develop strategies for consciously keeping out of the autonomous stage while they practice by doing three things: focusing on their technique, staying goal-oriented, and getting constant and immediate feedback on their performance." These three things are incredibly important for me as a manager of a team, a programmer, an amateur runner and an extremely amateur classical guitarist. What am I doing every time I spend time on an activity to actually get better at that activity? Running (run faster or longer every time I run) and guitar (progressively harder studies moving from 1/2 speed to full speed) are actually pretty straightforward.

As for managing a team, what am I doing every day to make sure I am becoming a more effective manager and leader? How am I getting feedback every day? Much to think about here... what are your thoughts?

Wednesday, September 5, 2012

I'm probably not running the marathon in 2012.

But, if you'd like to, you should sign up here. It's for the the team I raised money with last year, Camp Interactive, who works to teach kids from the Bronx leadership skills and technology through a unique blend of outdoor activities and technical training.

I'm pretty sure you can better my time of 5:40. Seriously, how many opportunities do you have to come in 42,759th place in a foot race and still beat 4,421 people?

I'm not going to lie, I'm very, very tempted to run again to try to beat that time, but this year is probably not the year for me. Maybe 2013 is the year for me to have a Paul Ryan-esque marathon pace.

Monday, September 3, 2012

Where to find all the great recruits?

Engineers I'd love to work with again

I've recently begun the recruiting process at bitly (where I'm looking for just about every type of engineer). To help focus my recruiting efforts, I decided to go through the top 25 engineers I've worked with in the past that I'd be most likely ask to work with me again (or that I have actually asked to work with me again).

The data for my top 25 seem to split in half along 2 major categories for inexperienced (< 3 years professionally) hires and experienced hires (> 3 years).

Inexperienced Hires

From the data on my top 25, the majority of inexperienced hires come from college recruiting with the remainder being internally developed. Internally developed hires are folks that were brought into the company to do some other job and later became engineers. Internally developing engineers requires time and effort from your more experienced folks, but I've seen it frequently pay off. For the cost of training time, you get engineers who you trained with your team's habits, and who have deep understanding of the business. We added 50% to the Knewton technology team by internally developing a couple of folks, at a time when the team only consisted of 4 people and we hadn't yet launched. If we could do it then, you can probably do it now. If you consider the time you spend recruiting candidates through most other means, the time spent training people you already know are great for the company is probably a wash.

College recruits mostly came from on-campus recruiting visits, and an email directly from a dean. I've had the most luck with CMU, but have had a surprising number of good engineers come out of the University of Chicago, Harvard and Cornell. The challenges of college recruiting are the schedule. You need to be ready to interview and get on-campus when the school has openings, you also need to be able to wait 3-5 months for your newly hired recruit to start work.

Experienced Hires

The experienced hires showed a similar nearly 50/50 split between referrals and internal recruiters. A referral is a recruit that someone already on your team recommended. The distinction between internal recruiters vs. recruiters or outside recruiters is that they are hired on-site and typically salaried. My top 25 is skewed towards internal recruiters, but that's most likely due to the fact that I primarily used internal recruiters throughout my career.

Experienced hires have the benefit of a track record of delivery and can usually start within 4 weeks of offer. The downside is that you'll often spend a lot more time going through interviews of people that almost meet your criteria.

A pie chart!

as embarrassing as this is ... I've included a pie chart (even better, made in excel).

What's this all mean? 

Here's what I'm recommending for myself:
  1. Ask every member of the team, all the time, if they know any great engineers we should speak with.
  2. Focus on college recruiting and intern hiring to build the pipeline for the spring.
  3. Improve the filtering process with recruiters to minimize time invested.
  4. Look for opportunities to develop team members outside the engineering team. 

How were the people you'd like to work with again recruited on to your team?

I'd love to hear other tips and tricks for finding great folks.

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.