Asana Engineering Interview Guide
I appreciate the sentiment behind documents like this, but, Asana, you can do better. When you do, you&#x27;ll find it gets easier to hire people, and, perhaps counterintuitively, the quality of your hires will go up.<p>Specifically:<p>It&#x27;s clear from the tone that you&#x27;re trying to mitigate the hostility and unfriendliness of the conventional programmer interview. Great! But you need to do more than superficially adjust your tone. What this document describes is literally the circa-1999 software developer interview, in almost <i>every</i> detail --- the fuzzily described coding question, the &quot;algorithm and data structures&quot; interview, the design review.<p>Everyone has heard of interviews that pointlessly refuse candidates the opportunity to consult Internet references, <i>like every working programmer does every time they code anything ever</i>. But your process goes a step further: you won&#x27;t even allow candidates to <i>compile their code</i>. How can this possibly be helpful to your process?<p>The most alienating and hostile aspect of the conventional job interview is on-the-spot whiteboard programming. You shouldn&#x27;t have programmers write code in interviews at all, if you can avoid it; instead, take a week or two and design programming questions that candidates can do at home, on their own schedule, in their own surroundings.<p>But if you&#x27;re going to make people code in an environment that is utterly unlike the one professionals actually work in, the onus is on you to do everything you possibly can to mitigate the performance penalty you&#x27;re imposing. Why not, instead of coming up with crazy rules like &quot;no running your own code allowed&quot;, point your creativity in the opposite direction and find ways to get candidates to be more at ease with writing code with someone looking over their shoulder?<p>Here are some things you can do <i>right now</i> to make your interviewing guide actually helpful to candidates:<p>* Provide sample questions. They do not need to be the ones you&#x27;re asking in real interviews (although: if they are truly good questions, they could be!), but they should be close enough that a candidate would have no business being surprised by the real ones.<p>* Provide a detailed breakdown of your interviewing process. Do you phone screen? How many times? Who staffs the phone screens? What kinds of questions get asked on them? Who delivers the in-person interviews? How long do they last? These are some of the questions real candidates have about interview processes. I don&#x27;t understand why more companies don&#x27;t just answer them up front.<p>* Provide reference material for candidates. Don&#x27;t point them to other people&#x27;s interviewing guides! You know your jobs better than anyone else does... right? How about instead: what are the most popular books on the shelves at your team? (Bonus points: <i>buy those books for candidates</i>). What are some Github repositories you think represent really well-engineered software? What are some examples of really hard problems your team is still grappling with?<p>I hired for years and years with a battery of over-the-top technical questions and a rolodex of personal contacts. Then my team and I had a crazy idea: we opened our whole interview process up, standardized it, and took pains to make it understandable to people with no experience in our field. What we learned was that there is a huge amount of underutilized talent out there that can&#x27;t (because it&#x27;s locked out due to jargon and poorly described requirements) or won&#x27;t (because it&#x27;s denied social permission) apply for jobs unless you go out of your way to bring them in. <i>Many of these people are better than you are</i>. At least, they were for me. Stop bloodying your forehead against the wall competing with Facebook and Google for people who --- if they can navigate the process you describe --- can get an offer from those companies any time they want.