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.

47 comments:

  1. I kinda agree with the most of it, except for the last point. It seems more oriented towards design than actual web development.
    All in all its a good bunch of observations ... its just that it seems more on the design/graphic side of web ....
    2cents from my personal experience,
    a good front-end guy hand-codes his html/js/css, keeping it precise n light-weight.

    ReplyDelete
  2. Yooohooo... I scored 4 out of 5. I have an Economics Master Degree, I play and sing in a band, I was NOT forged by back-end engineers, I knew Javascript before learning jQuery.

    ReplyDelete
  3. Thank you, this quite covers my experience. I just wrote a long article on RWW about the mistakes large web companies are making when trying to hire developers:

    ReplyDelete
  4. Me too:

    1. I don't have a degree. Web development is currently only my hobby.
    2. I learned front-end before I learned back-end.
    3. I only recently started using a framework (jQuery - it *is* nice).
    4. I used to draw comics (still want to but haven't done it lately), and I want to learn how to make music.

    So where do I find someone sensible enough to hire me? ;)

    ReplyDelete
  5. Bravo! I think you've really nailed it. I'm going to use this as a reference next time I get asked why we don't hire a X Y Z dev and put him to work on our interface.

    The question is... there is a shortage of us, how do we go about making more?

    ReplyDelete
  6. Came to you via ppk. I had a blast doing your problem, 5 minutes. 21 lines of code, 10 of which are JavaScript. I would love it if got tested like that.

    ReplyDelete
  7. ya'll still hiring at YouTube? ;)

    Seriously though, I might be biased because I am the kind of person you describe, and now in a position to decide who gets hired and who does not... can't count number of times I would get my hopes up for a CS major to come in and fail some simple js/css question, the position is clearly advertised as Front-End SDE. Then a guy would come in, and has no degree, or a 2yr one from a local community college or technical school, and he makes me look retarded! Go figure, always thought It was just my bad luck.

    Thanks!

    ReplyDelete
  8. Looking for a front-end job? Send your resume/portfolio, plus Javascript, HTML, and CSS code samples, to chris@zestylogos.com

    ReplyDelete
  9. I'm hiring frontend engineers at Mixpanel, a funded analytics startup in San Francisco. tim@mixpanel.com

    ReplyDelete
  10. #1. I can see where u are coming from, but I would be an exception to this rule. Although I started doing html/JS before any programming, I have interested in the web space and CS give me a better overview of the internet.

    #2. I disagree because I am all for that people can learn and change their mind set to adapt to new situation. Had I been in back-end, I would take some time, but will eventually be able to learn front-end because of my curiosity.

    #3. I just checked and I don't have JQuery on my Resume. I should add it in because when I talk to recruiters, they always ask if I know JQuery. One of the reason to have it on your resume is because most people are looking for keywords.
    I would say that I have already written a JavaScript function to do that slideshow, wanna see the code? :p

    #4. more or less. While I do like do artistic things like doodling and playing on piano when I took those courses, but it is not something I do on free time, primarily because I rather spend time coding.

    #5. You won't find me in that industry.

    ReplyDelete
  11. Wow, thanks for all of the comments. Where was this posted? I was holding off on pushing it out there until I had updated my blog design, but now that it's out, awesome!

    ReplyDelete
  12. Hm...not sure I agree w/ your assessment, and I'm currently a Front-End SWE @ Google. I think what you're describing is a "web developer" or a "webmaster" role at Google, which is a bit different than a software engineer specialized in front-end. I guess the difference is in FE developer versus engineer, but during my interview process I was asked fundamental CS questions that people w/o a traditional CS background would be hard-pressed to answer.

    ReplyDelete
  13. So you're saying there's a chance...

    ReplyDelete
  14. #3 "scrapped nearly all of my interview questions for just one Javascript problem...A div with an id of 'slideshow' contains five images...You cannot use jQuery or any other library....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."

    This is hardly knowing JavaScript inside and out, though I think your interview styling for front-end devs is quite refreshing. I've been in the valley (at Yahoo) and have a bit of front-end interview experience down there. Some of the questions leave you going "wow, just wow" in your head.

    ReplyDelete
  15. @Allen - Front-End SWE's at Google are engineers for sure... and they build tools like GWT and Closure, which tend to work well for Google-style singe-page web apps. The environment at YouTube is very different. They are focused on making many singular pages display very fast, which means GWT is not really possible and Closure has to be reduced to bare essentials. You have to write a lot of unabstracted JS and CSS in order to stay fast many times. Thus, it is far more important for a potential candidate to know, for instance, that using an attribute selector on a button tag will crash IE7 rather than how fast certain search algorithms are.

    ReplyDelete
  16. @cancelbubble It is worded poorly, but I would of course go on to ask more advanced questions. It was just rare to get to that point. I could usually figure out if someone was going to be decent by the ease at which they answered the problem I highlighted.

    ReplyDelete
  17. Had some fun and wanted to make sure I really did know JavaScript, so I wrote an answer to #3 in a few minutes without referencing anything online: https://gist.github.com/789194

    ReplyDelete
  18. Learning how Sizzle works is highly recommended if you want to learn about how to traverse the dom without using Sizzle (the selector engine used in jQuery).

    ReplyDelete
  19. Chris, Frontend guru PPK (Peter-Paul Koch) of Quirksmode posted it to his blog. It's also getting tweeted a bit recently.

    ReplyDelete
  20. First of all, great article! loved it :D. Now to my rambling:

    Front-End ENGINEER!? You say I can now instead of saying I'm a designer and front end developer, that I'm a front end ENGINEER? lolz, I feel like I'm gonna make much more money by saying that, thanks!

    Ok, I've read about google and their relationship to designers. I've seen designers quit from google because they (google) don't really understand how design works, like questioning the chosen hue of blue 47 times. And by reading this it is apparent they don't really get how the front end development AKA web designer works (I sound like an asshole saying that, sorry)

    Yes, people good at making websites, the "front end" part, should be designers. And the spot where you really nailed it is #4, not because of being an artist, but because ´These types of web developers are nearly incapable of "phoning it in" or letting something subpar slip through the cracks´ YES, that is what you need. A guy that loves what he does so much that he CANNOT let some second hand code go to production, even if he KNOWS that nobody will notice. It is that commitment to beautiful and semantic code that makes you do what you do well.

    AAAaand I'm not so sure about #5. MMMmhh... not at all sure. Perhaps some guy who just started at print and is willing to keep learning, that is good. The real good thing about #5 is that the guy/gal is a designer, and also that he is willing/capable of keep on learning. Because there are a lot of differences between web and paper, you have to avoid people who just translate paper presentation to the web the same way you have to avoid people that make websites with "divs" thinking in the tables way (I've seen it and it's ugly)

    Ok, bye bye now :) I am DrummerHead, you can google me and hire me if you want, reader; I'm freelancing by now :)

    ReplyDelete
  21. I actually went and did the slideshow with stopper at hand and managed to nail it in 5 minutes and 14 lines of code (with whitespace).
    My favorite line:
    idxToShow = counter++ % photos.length

    BUT, I made serious mistakes and wouldn't ever have solved this without testing in browser and without error console.

    So, still a lot more work for me, despite programming 12years now in pure js and only 1y in jQuery.
    I guess I've never tried javascript programming with chalk. Thanks for this precious lesson!

    ReplyDelete
  22. I agree with most of it, accept that you maybe shouldn't dismiss people that started using jQuery and not pure js.
    My reason for this is that you yourself say that the place to look is people that came from other areas, and to transfer, they might have started using an Ajax library because it's simpler to get started with(while working on a family website before college).

    It is important however FOR THE CANDIDATE to understand the difference between jQuery and JS and here youre totally right.

    I'm just saying that if you take the time to see between the dude who says "there's a plugin for that in jquery" and the dude who writes the same exact code, but uses $ for getElementByID and getElementByTagName, because that second dude might have potentital even though he never learned "proper" js syntax

    ReplyDelete
  23. Went trhu the youtube hiring process a while ago.

    recruiter told me the interview would be just like google's. And i should study classical algos and python/java/C++
    Studied it for 4 weeks until the day they wanted to call me. first question was a javascript one where the interviewer wanted me to remember the getElementsByTagName(*) solution. Heck, 4 weeks watching MIT algo classes and reading TOC and doing the exercises in python or C, i couldn't even remember proper JS syntax on the spot!

    Think that was one of the most awful interviews i had. got so nervous on that 1st question that i blanked out trhu all the rest :)

    back on topic, i got 5/5 on this list :)
    1. degree in design related area
    2. learned FE before BE (could do a little desktop and embeded before the web tough)
    3. Still prefer pure JS for my personal projects (at work it's YUI, and open source contributions are mostly jquery nowadays)
    4. Who aren't? :)
    5. first job was at a newspaper

    ReplyDelete
  24. I'd take the amazing designer with jquery over the good designer with javascript any day. Is knowing 'pure' javascript really that important today?

    ReplyDelete
  25. Great article. I came in from an art/technology background... I started some 13 years old messing about on my computer like a little geek and just never stopped.

    Then when I joined the industry I met real geeks who have taught me how to expand my world and learn how to learn for myself about improving as a front-end.

    I often wonder... do people believe the best front-end developers are totally anti-microsoft and sticking to Linux/OSX?

    I myself prefer working on my Mac with RoR... yet during the day I'm on a Windows box with ASP.NET MVC

    I consider MVC and RoR very closely knit so that isn't my main beef with MVC. I just wanna build on my mac ;)

    PS. We're looking for a great front-end at JustGiving.com

    http://www.justgiving.com/about-us/who-we-are/jobs-at-justgiving?utm_source=JG&utm_medium=footerlink&utm_campaign=JobsAtJustGiving

    Come join me and help me rid the world of ****ing pdf files.

    ReplyDelete
  26. I did the javascript problem, but the first thing I typed out in about 5 minutes had some silly mistakes.

    After about another 20 minutes of optimising and refactoring it's a bit nicer.

    At least the main DOM manipulation stuff was the same as my original I guess!

    http://pastie.org/1483797

    ReplyDelete
  27. I remember you wrongfully assessing my dependence on jQuery..I'm still bitter ;)

    ReplyDelete
  28. Of course the better Front end dev will have JS on their resume, but surely the better solution - in the real clients and deadlines world - would be to use a framework. A re-usable piece of code you can adapt to any project that saves time and money I would have thought would be worth more to a business rather than someone who wants to create everything from scratch every time.

    Don't get me wrong though, I completely agree that the JS question is a better way of identifying the cream of the crop... I think I've probably answered my own question/point. I'll be quiet now.

    ReplyDelete
  29. "We've got a great front-end job at a RoR start-up in Portland OR -- find out more and apply at http://bit.ly/gsAFaF "

    ReplyDelete
  30. This is really insightful - and honest about the limitations of most back-end developers and the link between good front-end engineering and artistic / design sense. Thanks for the insight.

    ReplyDelete
  31. Chris,

    Thanks for this piece— it rang so very true after so many years of hiring front-end folks and screening them with the old tools.

    Engineering is being democratized and it's great to have folks pointing out that algorithm porn is not the only way to test for it. More here on this very issue.

    ReplyDelete
  32. Agree with all but last.

    When job application specifically mentions "familiarity with jquery or prototype is required / bonus" and if you don't mention it on your resume in spite of being familiar you are taking a risk.

    No?

    ReplyDelete
  33. Good post. I not only agree b/c I neatly fit most of your points, but now that I'm screening others, I find I agree from that perspective.

    Also, it's kinda funny, my slideshow quiz is kinda like yours, except I make them add tabs, rather than rotating every 3 seconds. We moved to letting people use libraries, but in doing so, they relied on the library features to avoid a true code structure. Looking at that code structure is typically where people make the biggest messes. We quickly went back to asking for a pure-javascript version.

    ReplyDelete
  34. 4 out of 5. You've inspired me to keep pressing onward with my JavaScript studies.

    My artistic outlet? Comics. I draw comics.

    ReplyDelete
  35. Hi Chris,

    #3) Seems that the post turned out a js vs. jQuery argument.
    As I understand it, you are assigning priority to the more generic knowledge (js), a wider domain where jQuery (and prototype, and ...) belong.
    It´s not about using barebones js but about what to put in the CV. Like a copy writer that puts MS Word instead of English.

    #5) I strongly disagree. I still remember when, in the nineties the web was all about being beautiful, and many graphics designers were hired for this purpose. These guys created designs choke full of 1px transparent spacer.gif images, designs that looked great but broke miserabily when you enlarged the font a bit.

    Overall, your hiring history still happens, as business are learning about the different roles they need.
    One step forward would be recognizing "graphics design" and "development" as different roles. The kid that does web sites for his aunts can do both, but not YouTube.

    Further steps are separating the overall design from its implementation.
    This is not design of the aesthetic kind. It´s interaction design, and software design. The deliverable is a specifications document that the graphics designer and the developer can follow in their way to UAT and success.
    The key pro is the functional analyst, aided by an IxD type.

    I work for a company that develops for huge clients like Google, LinkedIn, JWT, LastMinute and hundreds of others, and we are slowly drifting into this direction.

    And a CS degree usually damages the UI capablities. Think of Sheldon-Cooper-like, or Dilbert-like people doing UI.

    ReplyDelete
  36. Just wanna thank you for an excellent article!

    ReplyDelete
  37. Wrote mine as a class just for the hell of it and because that's how I write JS typically. https://gist.github.com/829554

    Thanks for posting this. I do a lot of front end dev interviews too and have come to a lot of the same conclusions.

    ReplyDelete
  38. UW in Seattle is looking for a Front End Engineer. Apply at http://bit.ly/fqQr97 Job req #71630.

    ReplyDelete
  39. I don't think the word Engineer means what you think it means.

    ReplyDelete
  40. There is more to the Arts & Music bit than you think.

    The architecture of our brains are formed in utero based on the hormones of our mother. When there is a slight tip in one testosterone direction, the section of the brain that regulates music, art, & math (representational & 3D) gets a boost over the side of the brain that regulates spelling and communication (language & social.) This also, interesting, has an impact on the development of the immune system.

    The result is you have engineers, musicians, and artists who tend to be perhaps a little less social, focusing their energies on their muse rather than relationships... and they are more likely to have allergies or asthma.

    The bottom line is engineers, musicians & artists communicate through alternatives to spoken & written language.

    ReplyDelete
  41. It also hard for a good front end developer like myself to find good positions. Great post, thanks for sharing.

    ReplyDelete
  42. This comment has been removed by the author.

    ReplyDelete
  43. It's a great idea to hire such engineers because they can help you in a lot of ways. I'm in the mining industry and mining engineers are good in organizing things.

    green light laser

    ReplyDelete
  44. At Google Ventures, we are looking for Front end developers (JavaScript, CSS3, HTML5) in the Bay Area, NYC, or Boston area. Please email me your resume uraghavan@google.com

    ReplyDelete
  45. Problem you ask #3 is really simple but interesting. Maybe problem is in your selection process. You call wrong people on interview.

    I am junior backend-developer and solved under 30 minutes.

    https://gist.github.com/3186850/6c282f9a0ca7c1077ea69d39f83944a2e769f31d

    #5 I really doubt that someone from print industry without experience in programming would fit to front end development or any other kind of programming.

    ReplyDelete
  46. I agree. A good front end engineer is born not trained like a singer or artist.

    ReplyDelete
  47. Bravo! that is really amazing i liked it! check this one hire web developers thanks for sharing..

    ReplyDelete