Monday, December 13, 2010

Hiring Front-End Engineers

When I started at YouTube nearly three and a half years ago, there was only one full-time web developer (and one other web developer who, shortly before I started, transitioned into product management). Needless to say, there were plenty of things to work on the moment I walked through the door. In fact, the first order of business was to set to work recruiting our third full-time web developer.

By the time I left YouTube in August, 2010, I had been introduced to hundreds of potential candidates. I reviewed resumes, held phone screens, gave onsite interviews, worked with potential acquisitions, recruited at conferences, and generally socialized with a wide assortment of technology geeks. Despite all of this work and our desperate need for front-end engineers, I would estimate that only 3-5% of the candidates I interacted with ever made it to an offer letter.

It would be easy to blame this situation on an overly selective hiring process, but I do not believe this to be the case. Rather, the problem it seemed was a systemic misunderstanding as to what characteristics make for a top-level web developer and where to look for those types of candidates. The types of candidates that we would be asked to evaluate were most often excellent engineers, but simply the wrong people for the job.

Here are my observations on what to look for in potential candidates. These are generalizations based on experiences I have had. Of course there will be plenty of exceptions out there.

1.) Good front-end engineers rarely have a computer science degree. It certainly does not hurt to have one, but it just does not happen that often. Some of the best web developers I interviewed, and helped hire, barely had a degree that resembled anything close to computer science. Most of them were self-taught, building websites for family members and friends, long before they ever entered college. It was a hobby they did in their spare time and then realized somewhere early on that they could build a career out of it. A lot of them came from other disciplines, such as computer graphics, electrical engineering, mechanical engineering, information systems, graphic design, printing, and even packaging science.

2.) Good front-end engineers cannot be forged from back-end engineers. A prevailing sentiment for quite some time was "why hire a specialist front-end engineer when we can hire a generalist back-end engineer and train them in front-end technologies?" Unfortunately, it proved not so simple. While back-end engineers can quite easily pick up the languages and semantics, their talents tend to work against them when it comes to the front-end. Good back-end engineers work to create solutions that are definitive, measurable, testable, predictable, reproducible and stable. The consumer web rarely affords you any of these noble aims and any lofty attempts to ignore this fact will only lead to eventual insanity. The back-end engineers that break the mold and do eventually transition into becoming good front-end engineers usually have some kind of alternate background that facilitates the jump.

3.) Good front-end engineers list Javascript on their resume, not jQuery. I do not mean to pick on jQuery, but it certainly was the most popular Javascript library referenced on resumes from my experiences. Bad front-end engineers are dependent on jQuery and other libraries. Good front-end engineers make use of libraries like jQuery to empower themselves, but are not beholden to them. About a month in, I scrapped nearly all of my interview questions for just one Javascript problem:

A div with an id of 'slideshow' contains five images, the first of which is shown and the others are hidden using a display style of none. Using Javascript, create a simple slideshow that cycles through the images, displaying each image for three seconds at a time, looping back to the first image when the end is reached. You cannot use jQuery or any other library.

I had to add that last stipulation because far too often, a candidate would gleefully exclaim that there was some jQuery plugin for that, scribble three lines of code on the whiteboard, and then sit down triumphantly. When I would explain that we only used proprietary libraries (at the time Closure, which is now open source) and that jQuery plugins were not an option, the candidate would end up spending the next 30 minutes sweating through an often regrettable solution.

The good front-end engineers would solve that problem in about 5 minutes and 15 lines of code, then sit down nervously wondering what the catch was. What made it worse was that someone actually solving that problem, given the constraints I provided, was so inexplicably rare that I never bothered to have any real follow up questions and often sat in shell-shocked silence trying to invent a next question. Once I collected myself, it would quickly follow that these candidates knew Javascript inside and out, regardless of whether they used a library or not.

4.) Good front-end engineers are artists. Nearly every first rate web developer I have worked with had some kind of extracurricular, no matter how casual, that focused around some form of art. I have worked with painters, photographers, singers, writers, actors, musicians, sculptors, printmakers, and graffiti artists. One question I started to ask candidates was "Do you play an instrument?" If they did, it was usually a good sign. (Disclosure: I do not play any instruments and was not looking to start a band) My thought on this is that artistically-minded individuals derive personal value from expressing themselves through their work. Consequently, they become much more entwined in what they create and its success. They are often emotionally tethered to the product and will surface gripes long before they echo back from your users. These types of web developers are nearly incapable of "phoning it in" or letting something subpar slip through the cracks.

5.) If you want to find good front-end engineers, look to the newspaper and print industry. People who work in print media make excellent potential web developers as long as they have at least some technical skill to expand on. Consider the general environment of the print world and what is required of its workers. Workers often work on tight schedules, with very sharp deadlines that mean last-minute cuts may have to be made in order to ship their product. They have to construct and layout items within grid systems. They have to know typography fundamentals like fonts, leading, and kerning. They often have to work within color constraints and style guides. They value things like legibility, copywriting, and visual hierarchy. If they know Quark or InDesign, they probably understand many of the concepts behind stylesheets. These components are extremely desirable in a front-end engineer and difficult to transfer to someone brought up in traditional engineering habits. The best part is that the best potential candidates from the print world are relatively easy to spot. Just ask them to send you a printed copy of their resume. It will look so good you will want to have it framed.