Settings

Theme

We Prefer Coding Challenges

gravitational.com

76 points by ddispaltro 6 years ago · 109 comments

Reader

tptacek 6 years ago

Unfortunately, the idea behind coding challenges has been cargo culted into a lot of weak hiring cultures:

* The challenges often don't actually matter, and are simply part of the recruiting hazing ritual.

* They're totally subjective and just a proxy for the same bullshit friends-and-resumes process people were using already.

* No consideration is given to the amount of time the entire recruiting process is taking.

* The challenges themselves are totally divorced from the day-to-day expectations of the job, so people are doing CS102 algorithms problems for jobs that will mostly be about moving bits from one place to another.

I understand why people don't like them. But that doesn't really matter, because code challenges are so much more effective at qualifying people that it would be crazy for any competent shop to stop using them.

For a couple years (and, of course, for many years before at Matasano) we've been hiring resume-blind and with almost no interviewing (we do a final on-site, but it's a formality with no tech-out, which is something we tell candidates). We calibrate our challenges so that they'd ideally, for a qualified candidate, take less time than interviews and phone screens would, and have the advantage of being scheduled at the candidate's convenience (all in one night, spread out over a couple weekends, whatever).

We have candidates coming out of our ears (volume has been the single biggest problem with our recruiting practice), and the quality of those candidates is just as good as anyone else's comparable funnel.

This is the right way to hire technical staff.

  • cdavid 6 years ago

    Since I have been in a position to do so, I tried to push for coding challenges, and base tech IV on the assignment itself. Your blog post about hiring has been my biggest inspiration on doing hiring. I hired 10+ people in 1.5 years this way, and I would rehire 90+% of them for most roles. I do see difficulties about practicing it though:

    1. When you don't control all the HR process, you can't guarantee that the tech assignment is the main filter.

    2. Because resume are generally so useless, if you look for a lot of people, you need to be able to review assignments very quickly. Also, to convince people to do the assignment, I make sure to have a phone call before the assignment, which is time consuming since there is no filter.

    3. Writing good assignments is hard. You want something that does not take much time (half a day max), is quick to review, interesting enough for the candidate.

    I have also not been able to make sure the assignment is the sole filter. I still filter at the (single, < 90 mins) tech IV. But that is at least partially because of my domain (ML engineering), where profiles are more diverse than pure software engineering.

    • tptacek 6 years ago

      We did a company based on this approach, and problem (1) is the main reason it failed.

  • SavageBeast 6 years ago

    Have an up vote for calling out this practice as what it is: "recruiting hazing ritual".

    My personal favorite is when interviewing for a standard full stack web development role I'm asked to more or less re-implement some feature of an existing standard library rather than, for example, build a minimal slice of functionality that requires touching each layer of the stack in question.

    My finding on this is that companies in general tend to hire for traits and skills that will never be used in the role they're hiring for. In fact, if I'm a dev lead and a dev on my team reimplements a hand rolled version of java.util.concurrent.LinkedBlockingQueue rather than use the one that Java provides then we're going to have a problem.

    I'm sympathetic to the hiring manager here and I do understand that some people cant code a lick despite being able to talk reasonably well about it in an interview. I want to test drive a car before I buy it. I like to try on pants before buying them. Believe me I get it.

    Its been my experience that the coding challenge companies want to use is often a self aggrandizing, chest pounding kind of virtue signal about How Smart We Are Here. I suppose that if I had ever been given a reasonable assignment related to the actual job problem domain I might feel differently but this has never been the case.

    I also feel that coding challenges are just another manifestation of Analysis Paralysis where the ole "if I just had A LITTLE MORE INFORMATION" kicks in. An experienced interviewer (note I didn't say experienced developer) can smoke out 90% of this stuff in the space of a 2 hour interview.

    To be fair to the author here I found his write up to be an excellent effort to solve the ongoing problem that is hiring in general. An honest attempt to improve the situation.

    But consider the following:

    Hello Candidate, we need a [your problem domain here]. Verbally tell me how to build it while I ask you open ended questions about each step in the process. Once you get through telling me about each major component, responding to my questions along the way, we'll review and discuss the workability/pros/cons/compromises of the solution you describe. You may resolve any issues that arise in this process here.

    They either know the answers from the experience of having done it or something like it before or they don't. Call me names if you must but personally I've never understood whats so hard about this. Every Good Job I've ever had has hired me by this method.

  • busterarm 6 years ago

    I mean, sure, but also, of course you would say this: You run a recruiting practice.

    Everyone has secret sauce that works. Whether it's you or leeny or any of the other well-known industry blogger-veterans offering some fix for this problem. What a great way to cash in on name recognition!

    Maybe the reality is that any process that has sufficient buy-in from both sides of the hiring pipeline works. That all that matters is aligned expectations and the means for all parties to deliver on them. Forgive my cynicism but maybe all we have to do is get everyone involved to be honest with themselves and each other.

    Everyone is saying something different and has the data to back it up, but maybe it's all just fluff.

    • tptacek 6 years ago

      How could it be otherwise? Would my opinion be more credible if I hadn't put my advice into action?

  • hyperpape 6 years ago

    Do you think it matters that you're unusually outspoken and/or prominent?

    The cargo-culting actually seems like a problem for both employers and applicants, because it poisons the market. You have to know whether the company is treating coding challenges seriously. Because a company that will ghost you or decline you for unclear reasons after giving you a coding challenge has wasted a lot of time.

    Or put another way, if it's a hoop to jump through for candidates, coding challenges are awful. If it really means a good chance at that $10k+ raise, coding challenges are a great investment.

    • tptacek 6 years ago

      I'm sure it matters a lot that I'm loud. But that's not a superpower; in fact, my friends and many of my coworkers would say it's the opposite. Nothing stops other hiring managers from doing the same thing.

  • be1pdub 6 years ago

    " the quality of those candidates is just as good as anyone else's comparable funnel."

    This is an irrational statement and empty claim. You can't analyze something you can't see nor have data on.

    - Do you have a view into "anyone else's comparable funnel?"

    I doubt it. Therefore your claim is dubious and empty.

nscalf 6 years ago

I don’t do code challenges anymore. I have a full time job, I’m working on a startup on the side, I do some extra contracting, and I have an ever growing list of potentially profitable opportunities that I want to build. I would love to get paid more for my full time gig, and I should. I’m solidly a senior engineer, but I lack the title or pay. But I don’t have the time to actually spend 8 hours doing some silly app. I get that it makes sense for the hiring manager to give a coding challenge, but I don’t care. And the reality of our world right now is that I don’t need to care. There are plenty of other companies desperate to bring on good people.

My skills give companies extreme multiples of ROI, and no other fields have nearly as ridiculous a hiring process. Have someone come onsite for a day and pay them, we can both decide if it’s a decent fit. But I don’t know you, your company, your team, the work process, the supporting teams, your funding, etc... honestly, one of those things are probably really awful. I’m not jumping through hoops for free. You’re not google, you won’t pay me $150,000+. Pass.

  • tptacek 6 years ago

    Spending a week doing off-and-on phone screens and then a day on-site doing an interview loop is a bigger hoop to jump through than banging out some code on your couch. But, I mean, people have all sorts of reasons not to apply to a job. Some people don't want to touch Java code. Some people don't want to work for a company in Santa Clara. You don't want to work anywhere that asks you to complete a code challenge. That's totally fine.

    • runT1ME 6 years ago

      If I am doing a phone screen + an all day onsite, sure it sucks but at the very least I know I'm a serious enough candidate that the company is willing to burn one engineer day to evaluate me. With a coding challenge, I have no way of knowing! Maybe they sent the challenge to ten other candidates, maybe twenty, etc? I don't even know if the code will be reviewed. Make me jump through as many in person hoops as you want, I refuse to do take home coding challenges. shrug

      • nscalf 6 years ago

        I think ultimately the problem I haven’t isn’t that I have been assigned a problem to see my code skill. I think that’s pretty fair. The problem is that it’s not a great indicator if your beyond a staff level, it offloads all of the cost of finding and filtering an employee to the applicant, and like you said, it has no indication of their commitment to the code challenge while demanding an open ended commitment from the applicant.

        • wildrhythms 6 years ago

          I actually turned down a job, whose hiring manager was very excited (or desperate) to have me, after the recruiter sent me a link to a coding challenge. I felt devalued, that they didn't value my time, and I felt turned off realizing that this coding challenge was the only hurdle for engineers on that team. Note that I wasn't a fresh grad or anything, I had years of experience at this point from, what I assume was at the time, one of their big competitors.

          Since the company can't make time for a potential "experienced candidate" (their words) during the hiring process, I wonder what else they can't make time for? Red flag for me.

          • busterarm 6 years ago

            You're in the rare camp that realized this. Thanks for doing me and everyone else in this industry a solid.

            Companies won't change until this is enough of a negative signal for them.

          • tptacek 6 years ago

            The recruiter sent you a coding challenge? How far into the process could you have been?

      • tptacek 6 years ago

        That's totally fair, one of a million criteria you can legitimately use to determine whether you want to talk to a potential employer.

    • bryanrasmussen 6 years ago

      Every place I've seen over the last couple years (other than where I am right now, and the consulting I do) has on and off phone screens and then several hours interview loop as well as at least 6 hours code that they swore was only 3 hours.

      So I am currently only accepting interviews that give a 20% raise - and I am already quite high priced for my region.

      • tptacek 6 years ago

        I don't disagree that there is a cohort of developers who will command their highest compensation packages at companies that either don't hire rigorously, or hire very rigorously and painfully but have their choice among top developers. I'm happy for them! I just don't see why a shop that isn't Google or Facebook would hire that way, or target those developers in particular.

  • cryptozeus 6 years ago

    Yeh exactly...their idea sounds good and all but are they paying these “hidden gems” and 10x engineers 500k packages ? Asking people to do 10ht take home challenge without pay is not fair. They will just go somewhere else. From their own example, are they going to ask the juggler to go home and juggle for 10hr and send a video recording ?

  • lasereyes136 6 years ago

    The company I work for does code challenges when interviewing. We also accept code samples from GitHub or something like that. The idea is to talk about your code and the challenges you had creating it.

    I think you might not have seen many other professional hiring processes if you think spending a few hours doing an coding challenge is out of the question. Most professional occupation hiring practices are long and drawn out. That is part of what being a professional means.

    That said, our hiring process leaves a lot to be desired and there aren't really great ways to determine if someone really had the skills they claim on their resumes.

  • IshKebab 6 years ago

    Would you do a 2 hour coding challenge if you had already been through a phone interview?

  • hdhdbdn 6 years ago

    $150k is way the fuck under google money. my last fully remote startup of less than 100 people happily paid me more than that to be a sysadmin...

    Honestly sounds like Gravitational's hiring filter is doing its job...

    • inimino 6 years ago

      Compensation and engineering skill aren't as correlated as you seem to think.

deeg 6 years ago

I do not want to work for a company that does NOT test my technical skills; if they don't verify my skills that means they don't verify others and I'd prefer to work skilled engineers (with exceptions for entry-level or junior engineers).

Most people seem to agree that white-boarding is a poor way to judge technical skills. Coding challenges seem a good compromise, assuming they don't require more than a few hours of time.

  • didibus 6 years ago

    I find as both an interviewer and an interviewee that I prefer whiteboarding.

    But, it depends who you need to hire. If you need someone to just do the job. A coding challenge is fine. If you want someone who's above the rest in their CS knowledge, and problem solving skills, than a whiteboard interview is best.

    Just my opinion. I have no data for this.

    A whiteboard interview is pretty much a coding challenge where I can observe the candidate's methodology and their general approach to tackling problems. That's super valuable information.

    From being a candidate myself, I've found that having someone watch me and being in a room with the stress and all motivates me to show my best. Whereas coding challenges I really lack the motivation and I end up rushing them, doing them last minute, and really not showing my best.

    Ultimately, I think they both aren't ideal, but we don't have anything better short of an internship (and even those don't always pan out, since interns are treated differently and provided more hand holding).

    In the end, it's just hard to reduce work that in practice spans multiple weeks per project, and involve all kinds of side process, to something you can test for in under a day.

    • shantly 6 years ago

      > From being a candidate myself, I've found that having someone watch me and being in a room with the stress and all motivates me to show my best. Whereas coding challenges I really lack the motivation and I end up rushing them, doing them last minute, and really not showing my best.

      OTOH, whiteboards or live-coding under interview conditions is a great way to watch me do worse work than I did when I was less than a year out from writing my first hello world. And yeah, I'm cool & collected under normal shit's-broken pressure, or client's-pissed-off pressure, on the actual job, which is totally different.

      • gremlinsinc 6 years ago

        Same, I can't code while being watched, but I can do a take home assessment. My favorites have been real world stuff like ... build x by creating your own MVC w/ x, y, and z as a base... like x router, y templating engine, etc...

        • shantly 6 years ago

          Someone on here posted something about letting candidates pick an open issue on an open-source project and prep a PR for it, to go over. Easily my favorite version of a take-home assignment I've ever heard of—it's not throwaway junk or contrived bullshit, and I get to claim the PR if it gets accepted, whether or not you hire me, so while it's not paid it's also not a complete waste of my time if the job doesn't work out—but it's not repeatable the same way for every candidate (which is kind of the point? I mean selecting the issue to tackle is part of the assessment, which, as long as there's a little guidance about the sort of thing that's considered good-enough so you're not entirely in the dark re: expectations, seems ideal) so a certain kind of hiring manager or interviewer will think it's necessarily crap.

          • gremlinsinc 6 years ago

            That's genius. Almost sounds like something that could be it's own Startup/SaaS. A marketplace of code 'assignments' that OSS projects need done, employer can 'tag' assignments that they approve of, then you submit your work to the employer/oss project simultaneously so both can do a code review of it, if you lose the job but it gets accepted by the OSS then at least there's that. -- The employer would be the only part paying $$ for the platform, but it could be tax deductible as a 'donation' to OSS perhaps.

  • jjav 6 years ago

    > I do not want to work for a company that does NOT test my technical skills; if they don't verify my skills that means they don't verify others and I'd prefer to work skilled engineers (with exceptions for entry-level or junior engineers).

    This statement is assuming that short coding challenges measure something relevant to job performance. If everyone agreed that is true, this debate would not exist. We'd all agree it is filtering for the correct skills, we'd all hire the right people.

    But the fact that it is such a perpetual debate is because a substantial percentage of developers disagree. I have certainly never seen any coding challenge (whether whiteboard or not) that has any relevance to the job. So as an interviewer I don't subject people to it.

  • kevin_nisbet 6 years ago

    I agree.

    I kind of wish https://www.kalzumeus.com/2015/03/09/announcing-starfighter/ had taken off, as instead of doing a coding challenge for every company, you can do one really well designed challenge, and use that challenge with multiple companies.

    Note: I'm an employee of gravitational.

  • noirbot 6 years ago

    I had a similar process recently. Went from recruiter through to offer with only a couple design problems and generally talking about projects I'd worked on, no code whatsoever. If anything, it made me want to work for the company less. I didn't feel like they had a great idea if I was actually good at my job, since almost everything I'd shown in interviews was things I could have easily made up to make myself look good.

    That's especially worrying to me because it was a company that was still building out the team I'd be working for, so it would be hard for me to be really confident in the skills of my coworkers. Maybe the interviewers were just really good judges of character and skill (I think I probably was a good fit for the position), but it was hard to look past the fact that I didn't think I'd proven that I fit the role to them.

    Not doing any technical/coding problems makes me worry that the company doesn't see technical skill as important at all. Maybe they could preface the process with an explanation of why they don't, and that could be persuasive, but outside that, even a basic FizzBuzz makes me feel like their hiring philosophy is considering those skills.

    • inimino 6 years ago

      > Maybe the interviewers were just really good judges of character and skill (I think I probably was a good fit for the position), but it was hard to look past the fact that I didn't think I'd proven that I fit the role to them.

      It's also possible that they are simply willing to fire people who are incompetent and prove to have lied about their accomplishments. If that's the case, it shouldn't be necessary for you to "prove" your skill, which is much, much harder to evaluate than most interviewers think.

  • kemiller2002 6 years ago

    I do get what you're saying, but what I'm really interested in is what are their skills? Any moron can tell me I'm good whether I am or not.

    • recursive 6 years ago

      But the chance of getting it right goes down if they don't have direct evidence of their conclusion.

0xDEFC0DE 6 years ago

Unlike the other code-slinging gods who walk amongst us in this thread, I prefer coding challenges because I'm pretty mid-level and average and I do actually need a job. And I hate whiteboarding. No one should do whiteboarding for code.

  • shantly 6 years ago

    Agreed. Make me whiteboard or live-code if you wanna make me look and feel like I've not actually had over a dozen years of productive experience designing systems and shipping code and fixing other people's broken crap, and you'd love to watch me stress out and forget how to write a damn loop so you can complain on HN about how I was clearly lying about my experience & abilities and that's why you have to make people live-code or whiteboard. Challenges are, at least, preferable to that, for sure.

  • lfowles 6 years ago

    Same, I've found that I get further in the interview process when dealing with companies that screen with a coding challenge.

  • traderjane 6 years ago

    Whiteboarding is like coding except you don’t need to get the syntactical details of your loop right. It’s writing out your thoughts not just in pseudo code, but perhaps also in freehand visualizations. This makes it the most ergonomic and beginner friendly programming language ever.

vorpalhex 6 years ago

> They have so many offers that writing code for 4-8 hours is just not going to work for them.

Yeah, I don't typically work for free either. Are you paying candidates for this time?

"Hey, I need you to come in and stock shelves for four hours, you know, just to see if you're a hidden gem for shelf stocking"

  • tombert 6 years ago

    I've told this story before here, but I actually did have a job interview for a company, where they had me work on site for four hours, doing "real" work, and they actually paid me. Granted, it was only like $35/hour, which is pretty low for an engineer in NYC, but it was still a welcome change of pace.

    • bitL 6 years ago

      Usually companies that advertise paid interviews ghost the candidate in case of either unsuccessful interview or candidate opting for somebody else. OTOH if you want to work in some bleeding edge team that would catapult you to elite status, like AI autopilot at Tesla/SpaceX, you would be fine with an unpaid crazy project to pick you out/weed you out in the first phase.

      • tombert 6 years ago

        Well, in this particular case they actually made me an offer, which I accepted but then they rescinded because I stupidly lied about having a degree.

        I can't speak to any other companies, but at least this one did pay me, like they said they would.

  • macintux 6 years ago

    On the other hand, I’ll spend 4-8 hours on a coding challenge for free. Give me an interesting problem and why not?

    I was asked to write an AWS integration tool once, and I declined to proceed with the interview process, because I didn’t feel like spending hours learning the Amazon API and re-learning a language with a useful library (I’ve since come to appreciate Python and Boto3, even if I’d rather be Erlanging).

    It also wasn’t a sufficiently interesting problem to make the time worthwhile.

    • tptacek 6 years ago

      Which, for the right job, can be a perfect example of the system working: the firm wants to hire someone super comfortable with AWS, for that person, the tool might just take 30 minutes to bang out, and so it works as a filter.

    • shantly 6 years ago

      I think I'd only be willing to do that if I were unemployed. Otherwise I'm already collecting a paycheck for doing tens of hours of software development a week—the last thing I'm interested in doing is more of that, for free, on a project not of my choosing, so someone else will maybe start giving me a paycheck instead of whoever is now.

  • shantly 6 years ago

    There are so many mid-tier companies in my mediocre city paying (for the area) absolutely stupid money and so desperate for developers that they wouldn't dare ask that much time of a promising candidate for fear of losing them to somewhere else. It is, to an incredible degree, a seller's market for software development. There are two whole different worlds of software interviewing, as far as I can tell, and outside of FAANG and friends the pay difference is just about non-existent so it's not worth putting up with humiliating or time-wasting games.

    • Zimahl 6 years ago

      Yup. If a developer wants to have a FAANG company on their resume they're obviously going to have to jump through some hoops and do what's necessary. Non-FAANG companies are going to have to take what they can get and hope it works out because they aren't worth a long drawn-out hiring process.

      • shantly 6 years ago

        Yeah, I can get a bunch of phone screens for opportunities with nearly no effort. If comp's high across the board and I have, say, three or four promising calls within 36hrs of flying my "I'm looking" flag, and one says "we'd like you to come in for a whole day for a half-dozen one-hour interviews" or "we'll give you a 4-hour coding challenge" and the others don't, guess which one's not getting a second conversation? And they know that, so most places aren't pulling that crap. Economy turns around, who knows, probably swing back the other way, but right now? No.

    • nickpsecurity 6 years ago

      There might be people here interested in what area that is to scoop up some of that stupid money or get contracts. ;)

  • hogFeast 6 years ago

    I don't know where you live, maybe it is different there but the majority of jobs that I have worked - from stacking shelves to financial services - usually required a morning or afternoon in the office to see how everything works. If you are a developer or a mechanic, maybe this isn't necessary...but in a lot of service jobs it is very useful. I have chosen not to work places based on spending time there...nothing was wrong with that place, just a bad culture fit and it wouldn't have worked. It is definitely a very cheap way to derisk the decision if you are an employee.

  • Fellshard 6 years ago

    That argument falls apart utterly, since software writing requires you to demonstrate a vastly more technical and nuanced suite of skills than manual labor requiring a minor amount of mental overhead.

    • vorpalhex 6 years ago

      Hi, I need you to come in and work on proving Fermat's last theorem for four hours, just to see if you're a hidden gem.

iliaznk 6 years ago

I’ve passed through a screening procedure recently that consisted of three steps:

1) They asked for some publicly available samples of my code «I’m proud of». Okay, I prepared three samples from different areas with detailed descriptions and comments, explaining what that code did and why it was good.

2) After that, as a coding challenge, they asked me to write a simple app using the Unsplash API.

3) Finally we had an over an hour long interview during which I was again given three simple coding problems.

And then they rejected me. The question I have after all that is do you really need a multi-staged procedure like that to determine a candidate is not a good fit?! When exactly did they decide I wouldn’t fit? If that was after step 1 or 2, why didn’t they stop right there? If that was only after step 3, then what’s the purpose of steps 1 and 2? They don’t mean anything if step 3 can just cancel them out. Then why didn’t they start with step 3 not to waste my and their time?

etxm 6 years ago

I’ve posted on here before about when I’m in a hiring role how I prefer to do code challenges. I enjoy doing BYOC challenges.

Let a candidate pick a ticket from an open source project and come in to pair on it (or shoulder surf if uncomfortable with pairing). I don’t see the issue until the day we are pairing. Goal is to let them be the expert and as comfortable as possible.

They get some code on their GitHub, open source benefits, and I get a peak into their engineering skills.

If you’re thinking, “hey that’s not apples to apples,” well people aren’t fucking apples.

I had someone come in once that didn’t have an “issue.” She had been working with a library that had poor docs and wanted to work through the library and document it. THAT! That was an awesome experience. Best engineer? I had no idea. Willing to bang her head against a wall to make the experience better for others. Yes. Fuck yes, get on my team.

deedubaya 6 years ago

Coding challenges as your barrier to entry are an optimization for a certain type of employee - low demand workers who don't have the leverage to by-pass who start hiring funnels that start with coding challenges and recruiter calls.

You may be gaining access to hidden gems, but you're definitely turning away proven and experienced developers from even entering your hiring funnel.

It all depends on what type of employee you're wanting to hire.

  • alexk 6 years ago

    Author here. Even seasoned developers have to go onsite and spend 1-2 days doing interview.

    In this scenario, we are asking for similar amount of time, but with no travel, time that works for everyone and has low stress with an interesting task folks can review beforehand.

    Besides, before even going through this challenge, any engineer can make up their own mind whether it's worth for them because we present compensation brackets upfront on the call.

    • jakebasile 6 years ago

      > Even seasoned developers have to go onsite and spend 1-2 days doing interview.

      No, they don't. Like most people that champion these types of nonsense "code challenge" interviews you present a false dichotomy of "you have to either torture someone in person for multiple days, or torture them with a bullshit made up test for hours!"

      You can talk to them for a while over the phone (or video chat), split up over a few days, and get to know them just fine.

      • tptacek 6 years ago

        Yes, this much is true: in weak hiring cultures, which are very common, people get their friends (or people with dazzling resumes) hired without any real rigor. What's more, in that culture, it's straightforward to generate a dazzling resume: you "fail up", because it takes longer to get fired (or for it to become clear that it's time to get a new job) than it does to get enough time on the job to look good on a resume.

        • jakebasile 6 years ago

          I really don't think this issue is as widespread as commonly held, and I think it is used to perpetuate the horrible hiring culture that is common in our industry.

          I think it's perfectly reasonable to hire people based on resume, references, and conversation. If they can't handle the job once hired then they should be let go.

          I do not think that the idea that all candidates are complete idiots unless they can be "proven" to be good engineers (by faked tests that rarely cover the actual job requirements but do have a way of discriminating against those who don't enjoy brainteasers, didn't go to college, or are older) is good or healthy.

          • shantly 6 years ago

            I wanna know who the people are who can talk confidently and intelligently about the details, decisions, and purposes in the systems, technologies, and workflows they've worked with or built, to essentially arbitrary depth, but can't actually do the job, and also actually manage to hold down jobs without huge gaps in their work history. I find it hard to believe there are so many of them that it's worth defending against. Smooth talkers exist, sure, but c'mon, they can handle a friendly but detailed discussion about stuff on their résumé but can't write code? God, learning to write code would be easier than prepping for that kind of thing without actually knowing how to do the work, surely.

            • jjav 6 years ago

              Precisely. It can't be done.

              This does assume that the interviewer is an expert in the area and can take that friendly conversation to the necessary depths.

            • tptacek 6 years ago

              Serious question: have you done much hiring? Because this was a huge component of my lived experience as a hiring manager since the late 1990s, and every hiring manager I've talked with directly since has had similar experiences. If you do a lot of hiring, and you're honestly surprised that there are people who do really well in interviews and turn out not to be good hires, I'm curious to hear more about your experience.

              • shantly 6 years ago

                Yeah, both as just another part of larger hiring panels and in tech lead roles with the biggest say in who gets in. Maybe I've been rejecting people who'd be fine and am committing the same sin but it seems pretty easy to get a sense of "this person has been working 5 years but is incredibly junior and barely understands the stuff they're working with" or "this person has been working 5 years and really knows their shit" from like 20 minutes of conversation, and I've not seen a true bullshitter get through hiring despite a lack of heavy, time-intensive tech-challenge-based interviews anywhere I've worked. Closest we had one place was a really easy screening project, which we didn't make anyone not-obviously-junior bother with, and I bet a few minutes on the phone with the right person could have replaced that with no real harm to the process.

                I have, however, on two occasions probably personally convinced someone they had dodged a bullet by passing on me when I bombed that sort of quizzy interview—they were, I am entirely confident given the job descriptions, my work history, and actual feedback I've received from managers and peers, quite wrong, but I bet they were very sure I was useless and nowhere near being fit for the job.

                [EDIT] I guess I should add that I have a history of not realizing that something I'm good at is not actually easy or obvious to others, so possibly I'm just unusually awesome at assessing developer suitability through conversation—I really doubt it, but maybe that's what's going on. I've also not found a way to make this fit with any sort of "we ask everyone the same set of questions because we want spreadsheets at the end" process, as you've got to tailor the interview to both the position and to the candidate, as presented on their résumé and related material. So if you want spreadsheets and quantifiable-everything then I'm not sure how you match that up with my preferred style.

      • alexk 6 years ago

        Makes, sense, however video conference interviews usually take up full day from a candidate, as you have to free up your day (and your mind), stay at home and be ready to answer a rapid succession of questions/perform live coding acts.

        At least that what my experience when I was a job candidate.

        • jakebasile 6 years ago

          Who says video/phone interviews need to take up an entire day or have "live coding" (which will be super high stress and don't indicate in any way if someone is a good candidate)?

          • alexk 6 years ago

            What would happen on those interview calls then?

            • jakebasile 6 years ago

              Talk with the person, get to know them. Ask about previous projects, get into details about what went wrong and what went right and how they'd change things. Get into technology details.

    • harshalizee 6 years ago

      No, if someone expects me to waste two days of my time on a nonsensical code challenge or interview, I tell them to shove it. Google was the only place I worked at where I remotely put up with that. Any non FANG company that pulls that crap isn't going to get any attention from none of the good engineers I've worked with.

      You've effectively filtered for people who are malleable and desperate for jobs.

    • hogFeast 6 years ago

      I know boards that don't take 1-2 days to hire the CEO. If you need that long, you are either asking the wrong questions or you have the wrong people hiring (the chances of the latter occurring in tech, where business skills are generally lacking, is high).

      But yeah...people in tech seem to believe all kinds of weird stuff about hiring...if you are asking someone to come in for 2 days for a non-executive position, you are lighting bags of cash on fire.

      • shantly 6 years ago

        When I've described the typical SV-cargo-cult tech hiring process to people outside this world, they've universally thought it's batshit crazy, and usually also insulting and demeaning. Lots of "WTF, seriously?" sorts of reactions. Luckily there's a ton of opportunities not infected by it, but it's still there. At least the rest of the experience of working in software's mostly not that bad.

    • deedubaya 6 years ago

      Firstly, I applaud that you are upfront about compensation early. I think that definitely deserves an accolade.

      However, asking that candidates donate 1-2 days of their time (probably burning PTO at their current gig) just to have a chance at an offer? That's a very unbalanced risk/reward for the company vs the candidate.

      Maybe you pay candidates for their 1-2 days of interview time + comp PTO for time spent if they get the gig?

  • tptacek 6 years ago

    That has not been our experience.

    • inimino 6 years ago

      And it won't, because you're internet famous. Most people cargo-culting your practices aren't getting good results, just like most people cargo-culting FAANG interview practices aren't getting good results.

      • wglb 6 years ago

        I am very not internet famous. I was able to implement this for a company past the startup stage for the security team. To my surprise when I also tried it for compliance manager and project manager. Both turned out to be major contributors. And told me after they were hired that they were passed over by other companies with traditional hiring practices.

        • inimino 6 years ago

          To be clear, this is what we're discussing:

          > You may be gaining access to hidden gems, but you're definitely turning away proven and experienced developers from even entering your hiring funnel.

          You're describing hidden gems.

          My point was that for someone who is internet famous, more people will be willing to jump through hiring hoops, whatever they may be, just as they are for FAANG, but that doesn't work for most hiring companies, because most companies are small and you've also never heard of them.

          Also, no amount of "works for me" argues against your process turning qualified people away unless you have some out of band way of knowing that that isn't happening.

kemiller2002 6 years ago

I get why companies like them, and there is nothing wrong with them. The truth is that I probably don't want the job enough to actually do it. It takes time away from my family, and my friends and most of the time, it's not that stellar of a place to work anyway. If I'm desperate for a job, I could feasibly see doing it, or if I thought it was a really amazing opportunity. The truth is that I'm probably not going to be in either of those positions. What really does irk me is when a company says you have to do it before they'll even talk to me. I'm definitely not going to spend several hours on something without even knowing anything about the company.

  • rdelval 6 years ago

    The asymmetric time investment required from candidates is what bothers me the most about these coding challenges.

    My personal experience has been that it's a lopsided process with the candidate putting in hours of unpaid work and the company spending one, maybe two engineering hours if we're being generous, reviewing the submission.

    If the reviewer decides to reject the challenge, the loop closes, HR sends a nice e-mail, and the candidate has nothing to show for it.

UweSchmidt 6 years ago

Another one of those, huh?

The only way to find out what kind of salary is possible is to ask for numbers that get rejected a few times. Additionally, there are many companies out there, with a surprising variety of job parameters. Finally, many people are not good or comfortable with the application process, so you need to practice.

This means you have to apply to many companies and have to have many job interviews. Long, multi-round interview processes and take-home assignments - reasonable or not - make this very difficult and expensive for the employee.

These regular company blogposts seem to respond to the pushback of applicants and try and establish this kind of application process as a norm. Unfortunately this would decrease the market transparency for employees even more - many people go through their working lives underpaid and in subobtimal working conditions without knowing any better. This procedure also feels asymetric - in a time where software people are supposedly in demand, it's the employee who is supposed to jump through hoops to get a job.

  • tptacek 6 years ago

    If you reached out at Latacora and asked "is there any way you'd be able to pay $X" before you did any of our challenges, we'd get you a quick, straight answer. Why wouldn't we? If you're outside the ballpark for us, working to recruit you isn't a good use of our time.

jgwil2 6 years ago

The process outlined in the article shows respect for candidates in many ways, but especially by providing feedback. I have no problem going through an in-depth interview process, because I can always look at it as a learning experience, but it can be very frustrating to go through a process and then not receive feedback, positive or negative, on your performance. I understand that all employers are busy, engineers' time is valuable, and that often communication is managed by HR people who don't have in-depth knowledge of the reasoning behind decision-making, but I think that making constructive feedback an expectation for the hiring process would improve the experience for candidates manifold, and ultimately would result in less arbitrariness in hiring decisions.

mooreds 6 years ago

I didn't see "pay candidates for their time" as a section even though I saw several mentions of how invested the company was (CEO commenting on PRs, team investment).

Saying "We will pay you to do this exercise" is a simple (and cheap!) way to show you value candidate's time.

jonfw 6 years ago

> “I’ve been hiring people for 10 years, and I still swear by a simple rule: If someone doesn’t send a thank-you email, don’t hire them.”

I was contacted by a recruiter a short while ago asking my availability for a phone screen- and I replied simply with my availability. The recruiter still hasn't gotten back to me, and I think that it may be because I didn't go out of my way to thank them for reaching out to me.

Are all of the niceties in your email inbox really that important to people? It seems pretty manufactured and boilerplate when people send me emails that they "hope find me well".

I may just have to get over it and start letting people know how "excited I am to speak with you and learn more about this opportunity!"

  • alexk 6 years ago

    Just to make it clear - I posted this as an example of anti-pattern, not the actual advice to follow :)

  • olooney 6 years ago

    Yes. They're not testing your knowledge of etiquette, people skills, or friendliness though. They're looking for a more basic and far more widely applicable skill: following best practices. If you were configuring Apache for the first time, wouldn't you google for a list of do's and don'ts and spend a few minutes implementing the low-hanging fruit? Not doing that puts you at a huge risk of leaving a huge security hole or massive performance hit, right? It would be amateurish, and if a problem occurred because you didn't take even a few minutes to do the most basic and widely known stuff, you would have no excuse.

    Likewise, while nobody really cares about thank you emails, not doing that suggests you didn't even bother to Google "Interview Tips" and implement the ones that took less than a few minutes. That's not a good signal to send to people that are going to have to rely on your professionalism and quality of work for the next few years.

    • jgwil2 6 years ago

      This would make sense except that the job isn't interviewing for jobs. You shouldn't hold people to the expectation that they're going to approach communicating with recruiters in the same way they would approach actual work they were actually getting paid for. This is a great way to filter good candidates out based on something that has nothing to do with the work you are hiring for.

      • jonfw 6 years ago

        This doesn't just have nothing to do with the work you are hiring for, this is testing for something that's actually a negative trait in your work.

        Technical writing should be as concise and clear as possible

  • sifer 6 years ago

    It's my understanding that if you are a talented engineer who is socially competent and interviews well, no, you don't have to don't have to do this.

kureikain 6 years ago

This seems got some negative review.

Let me shared my experience.

Alexander is fantastic as an interviewer and co-worker. I was interview by ALEXANDER a few years ago. I ended up not getting an offer. It was my fault.

The challenge is the hardest thing I have to research on my own to implement because google found no result for me at the time. I learned a lot when working on his challenge and the idea of being able to solve it is more imporant than passing to interview to me.

The way they conduct interview is really great. You are given help by their team.

All I can say is Gravitational takes hiring to their heart and setup for success of candidate.

TO Alex, I'm Vinh if you remember me :-).

  • alexk 6 years ago

    Hey Vinh, thank you for the kind words and I'm glad that you got a positive experience with our challenge and the process!

sandGorgon 6 years ago

>Split your code submission using pull requests and give the team an opportunity to review the PRs

> Not communicating. Candidates who submitted all the code to master branch, which does not give us the ability to provide feedback on the various implementation phases. Because we are a distributed team, structured communication is critical to us.

how do you ask your candidate to split your answer using PR ? We would like this during interviewing but it ends up being a single PR. I dont want to impose create separate branches and a PR for each small incremental feature thing.

I'm assuming you are using Github

  • alexk 6 years ago

    Good question! We usually recommend to submit a fully complete logical part, e.g. auth middleware, client, server. We recommend against submitting incomplete functionality in a PR because it is hard for our interview team to understand whether it's incomplete or complete and has defects.

    • sandGorgon 6 years ago

      so would each complete logical part be a separate branch with its PR ? and then branch from the previous branch to create the next PR?

      I'm just wondering if you found there to be any cognitive overhead here.

pickle-wizard 6 years ago

My current job had a coding challenge and I felt they handled it pretty well.

It was done one site as part of the interview process. It was related to the work I'd be doing, however it wasn't super complicated. They expected that you'd be able to finish it in about 30 minutes, but you had as much time as you needed. I finished it in about 20 minutes. Since it was over lunch time, they bought me lunch. I figure lunch for 20 minutes of work was a fair reimbursement.

etxm 6 years ago

They’re bull’s excrement, this industry’s interview process is broken and arbitrary.

I don’t know if we’ll ever fix it, but code challenges certainly aren’t the answer.

I’ve been developing professionally for 20 years.

I take about 4 interviews a year when _not_ looking for a job to stay practiced. Held DoE, Staff, and Principle roles.

Anecdotal evidence from this year:

- given a decent sized MVC app with bugs and missing features. Tasked to green the test suite. PR comment from a pretty established engineer was “this is perfect, I wouldnt change anything.” I used 1 of my 4 hours and thought my work was poor

- given a “simple”[1] sort and map/reduce a large log file and didn’t finish after 2 hours because the interviewer kept interrupting to ask me about the details of how internals of the language and GC worked - things I was familiar with, but I can’t focus on code and answering questions at the same time. I was ranked as “junior” and not a fit for the role, cute.

This last one rolls up into one of the problems I have (and assume others have) in interviews: “work through the problem as you would, but talk out loud about your process”

If I’m talking, I’m not in my zone. Let me shut the fuck up and solve the problem and we can talk about it afterwards.

[1] “simply” parse this 500k line CSV file and aggregate some results, no dependencies. CSV file was actually a STDOUT log file that multiple containers were writing to with different formats, JSON, CSV, TSV, SSV, and random ass unstructured logs from a prod system.

rileymat2 6 years ago

I do not mind a coding challenge in the hiring process if it is the last step, not the first step.

rajacombinator 6 years ago

I’ll only do these if 1) company pays me or 2) I’m exceptionally interested and think the comp will justify it. (ie. Almost never.) Spending several hours on something that might not even get reviewed - no thanks.

IshKebab 6 years ago

Great article, although 4-8 hours is clearly way too long. 2 hours is much more reasonable.

a0zU 6 years ago

Coding challanges are used pretty often to scam programmers to do work for free before the company rejects them.

  • twic 6 years ago

    I don't believe this actually happens. Do you have any concrete examples?

    • mamon 6 years ago

      There's this infamous company from Austin, Texas, which hires programmers for remote work, and they typically give you coding "challenges" that require a week to complete, and are complete (although not very complex) applications.

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection