top | item 9970844

Take-home interviews

271 points| socmoth | 10 years ago |blog.triplebyte.com

285 comments

order

brianwawok|10 years ago

Seems good, I like the choice.

In discussions on this topic I see a lot of: "Programming on the spot is hard, let people program at home"! But then other people say "Why should I program for free at home, my resume clearly shows I am already a skilled programmer. All this will do is cater to young people without families, or those fresh out of school".

I am not looking to hire devs right now, but I am thinking about the same idea with a tiny tweak when we move to that stage. If the verbal interview goes well, offer 2 choices. Make it clear neither choice is seen as the better choice, and both will be judged equally.

* Sit on a computer with me for an hour, and show me how to code a fairly simple program.

or

* Get a small actual work assignment to take home and code. Would expect it to take maybe 5 hours to code. Offer $500 as a 1099 contractor to complete the assignment within the next 2 weeks or so.

This gives both groups a chance. The too busy to do a big programming assignments can code in front of me for an hour. I should be able to judge their chops pretty fast. For the people more nervous to code in front of me, they can get paid a nominal fee to code some small piece of code.

The only group I exclude is the group that doesn't feel the need to show code to land a job, but not too interested in that group. I have seen too many good talkers and bad coders to want to risk this group.

bjones22|10 years ago

Its good in theory, but it leaves a lot of ambiguity for the interviewee to parse through. For instance, if given a two week window would it look better for me to do it tonight? Would it show ambition? Or would it seem like I'm desperate, and lead to a lower amount of compensation being offered to me? Should I spend far longer then five hours on the assignment, and turn in superior work while making it seem like I only spent 5 hours? What is my competition doing?

As someone who's recently been through the ringer, including one six hour take-home, all I want is a clear demonstration of respect and rationality.

Bring me into your professional office. Let's talk like professionals. Allow me to demonstrate my professional skills. Call me back with a professional yes or a professional no, all within a professional time frame. That's it.

Remote or otherwise less traditional assignments / roles / jobs will deserve and benefit from their own process. But how we strayed from the straight forward formula is beyond me, my guess it was an initiative started by a handful of companies who had trouble hiring.

I don't think hiring devs is the systematic issue everyone makes it out to be. Assessing talent is always hard, be it an artist's, an athlete's or a programmers. I think rather then assume the cost of the investment in hiring, companies chose to blame the system and that's where this absurd roller coaster started.

TranquilMarmot|10 years ago

I recently graduated from college and started looking for my first programming jobs. I ran into a ton of these "take home" interviews and they were some of the most stressful things I've ever done.

The first one, they asked me to solve an incredibly complex math problem that I had no idea about so I struggled with it for 5 or so hours before giving up. Probably good that they didn't give me the job; if they were expecting me to know the level of math they were requesting then I would have had a pretty bad time. So I guess the test worked in that regard.

The second one interview at a different company, they gave me more moderate questions after a phone interview- mostly questions testing knowledge of a specific language. When I asked how long it would take, I was told "you have a deadline of 8 hours from when you download the zip file to when you turn in your code, expect it to take the entire 8 hours". That was probably the most stressful 8 hours of my life, way worse than any whtieboard interview would have been. I didn't look away from my computer once the whole time, did not let myself get up to eat, go to the bathroom, or anything. My girlfriend was in the room and tried to console me while I was doing it and stressing out and I ended up yelling at her to be quiet because I was trying to hard to concentrate. I finished the last problem about 10 minutes before the deadline, zipped the files up, and sent it to them. I never heard back.

Favorite interview I've ever had was a combo of a live coding session and a phone interview. They used an online tool that they gave me a link to that had syntax highlighting. The interviewer on the phone could see where I was typing and could highlight stuff etc. Think google docs, but for coding. They asked me to write some algorithms, then asked me to re-write them recursively, then asked a bunch of questions about the limitations of the algorithm, cases when it would be used, etc. It was fun, not stressful in any way, and the interviewer even taught me some things along the way! I feel like they got a really good picture of my thought processes and my personality so they could accurately judge if I would be a good fit on the team.

Paying somebody to do the take-home coding assignment and paying them would definitely help alleviate some of the stress, but I'm still not a fan of the format. You don't know how long it took the person to make their solutions, and you don't get a good idea for how they work, only what they can do (both are equally important, in my opinion).

alain94040|10 years ago

> Offer $500 as a 1099 contractor to complete the assignment within the next 2 weeks or so.

I like this, not for the money, but because it guarantees that the company is not giving this assignment to 100 different candidates ($500 x 100 is getting prohibitive for a hiring budget). I'm more willing to put the effort if I know I'm one of the "finalists" for the position.

twright0|10 years ago

> Offer $500 as a 1099 contractor to complete the assignment within the next 2 weeks or so.

Just as an aside, I would actually be more willing to undertake this type of interview if you weren't paying me. I don't have any ethical qualms about interviewing while working a full-time engineering job, but I'm not entirely comfortable taking a contracting job under the table. It may be something of a symbolic gesture given that it's such a small time investment and small amount of money, but it feels fundamentally dishonest, especially if you're a current or plausible future competitor to the company I currently work at.

The official policy where I currently work is that moonlighting is allowed but must be approved by our legal team, and while I could probably get away with not asking for permission, I'd be pretty uncomfortable in both cases (asking, or not asking).

sokoloff|10 years ago

> But then other people say "Why should I program for free at home, my resume clearly shows I am already a skilled programmer.

Yes, and if I copy that resume and put my 6 year old's name on it, then her resume clearly shows she is a skilled programmer.

x0x0|10 years ago

I like the idea of getting paid $500 or even $1k for a take home test. It's frankly a simple matter of respect. For employers, they're just asking you to do one task, but for employees, talking to 4-6 companies in an interview cycle can easily be 40 hours of interviewing and another 40 hours of work on top of that.

I'm at a point in my career where I mostly refuse take home tests because I'm busy and I value my free time. Getting paid would make me much more willing to jump through hoops. Particularly when that day of vacation cost me $350 after taxes, so it's not like I don't have skin in the game already.

bsder|10 years ago

> Would expect it to take maybe 5 hours to code.

So, if you are interviewing at 20 companies, you need to expend 100+ hours or almost 3 full work weeks?

It should take 1 hour or less. Period. Probably less that 1/2 hour. I doubt I get much more information asking you for a 5 hour assignment than a 1/2 hour assignment.

If I'm really that interested in your programming on the fly, I should do it at the interview where I'm paying for your lodging, food, etc. I should tell you what you are going to be doing, and to bring your laptop set up to do that.

imh|10 years ago

>"Why should I program for free at home, my resume clearly shows I am already a skilled programmer. All this will do is cater to young people without families, or those fresh out of school".

I share this opinion, but only for certain ways of doing it. If it's done in a fully automated way, before even having a phone screen, then it's too easy to waste my time. As an alternative to the whiteboarding interview, however, it could be great.

Bahamut|10 years ago

$500 is too low - good developers will often charge $200+/hour freelancing, there is little incentive for them to deal with a take home test for that price with all of the time & stress that come with take home tests.

A choice is better than no choice though, but too many companies fumble through handling take home tests to make it worthwhile to a quality developer with any sense of value.

robspychala|10 years ago

From the employees' perspective:

Take home tests are the worst. Company says take home test will take 3 hours to complete. They never do. Schedule 2x or 3x the estimate. Especially if you want to impress the reviewer.

You send it over, then the company says no or yes, only to move to new stage.

In the worst case you ruined your weekend and received a no. But the company just took 10 minutes to arbitrarily reject your application.

From the company's perspective:

I've seen applicants receive friends'/roommates'/spouse's help on take home tests. Not a good indicator at all even with a glowing submission.

burger_moon|10 years ago

After doing a handful of these and rejecting several handful of these tests I'd like to add a little to you comment.

I agree that the time it takes is always muchuch longer than what they state.

Companies that offer these tests before doing an initial phone screen get that email deleted. Why would I as an applicant who is applying to 10+ jobs spend time doing this test when I have never even had a chance to interact with a human.

The tests are sometimes not even close to the actual job. As in the job description is for a front end developer and JavaScript knowledge needed and they ask you to write the test using a completely different language. one company (who adversities jobs on here all the time) asked to do some php command line scripting for a JavaScript front end position. How is that in anyway a useful judgement of someone's skills. So wasting people's time is a big deliminator.

An example of a company I experienced that did the take home 'right' did an initial phone screen a couple days after applying. Then did another tech screen which was just basic stuff. After that they asked me to do a take home exercise and while completing it they continued to move forward with the application process including setting up travel arrangements. The take home test was directly related to the job and was given open ended for some creativity if one chose. The onsite final interview was discussing the code, so it would do little good to cheat on it because you need to be able to talk through it.

I didn't even get the job with them but it was actually not a painful experience for once to do a take home test.

Just my two cents, but I believe there is a good way and a terrible way to do it.

darklajid|10 years ago

That topic ("People do stuff at home for an interview") is a topic that comes up again and again. My last reply [1] is about a month old and feels still valid.

Don't state that 'take home tests are the worst'. That is - failing to find better words - crap. If that is the ONLY option, I understand that this might be not for you. But - that's not the case here as far as I can tell. You, as a person interested to interview, can opt in. That is awesome.

Now - you might not be the type of guy that would _want_ to opt in, but please refrain from these absolute statements. No, that's not the worst. In fact, it's probably the _best_ option for a number of people (I myself would - if I'd want to interview with this service - opt for the home project).

I fail to understand how this 'bash the home work' attitude comes up again and again. Yes, don't work for free. But if you're doing a 3h whiteboard marathon or work from your own chair? And you pick which one you prefer? I don't get the hate here..

1: https://news.ycombinator.com/item?id=9770737

Ensorceled|10 years ago

Or, if they don't actually expect you to spend more than 3 hours on the task, they will compare you to people who have spent 9 hours on it.

Had that recently: they said "spend no more than two hours on it" so I finished in about an hour and 45 that evening and flipped it over.

Then they started asking why my 20 or so unit tests only covered the basics when other candidates had full unit tests in the two hour time frame. I told them the other candidates were simply lying :-)

PhasmaFelis|10 years ago

I would rather spend 8 hours at home giving the interviewer a realistic impression of my abilities than 1 hour mumbling over a whiteboard and getting trashcanned because the interviewer mistakenly thinks that whiteboard skills prove anything at all.

As for receiving outside help, if you're judging applicants solely on their homework results, you are Doing It Wrong. The best interview I've ever had gave me a take-home programming assignment by email, then when I came in the lead programmer asked me to explain the program line-by-line and justify various decisions I made. I got the job.

snewman|10 years ago

Speaking as an employer: we address this by keeping our coding exercise short, and specifying a time limit. The limit ("60-90 minutes") is not rigidly enforced, but candidates know we're able to see how long they spent, and in practice almost everyone spends more than 60 and less than 90 minutes.

It's tricky. An in-person test would put the candidate in an unfamiliar environment, and makes many people nervous. A take-home test without a time limit opens itself up to the "I'd better spend lots of extra time so I can look impressive" problem. A take-home test with a hard time limit can also make people nervous. This is the best compromise we've been able to come up with (suggestions for improvement welcomed!).

As suggested on this thread, we also don't ask candidates to tackle the exercise until they've had a chance to talk to us on the phone.

munchbunny|10 years ago

This is very much true. We do take-home interview questions where they bring the output to the interview and we talk through their solution in person. We'll ask how long they took as a way to normalize expectations and also adjust the interview question to take more/less time in future instances.

This does two things. In the long run, the time required converges towards where we want it to be (ASSUMING honest answers), and by bringing you in to talk through things, we can easily tell if these thoughts were your own by challenging you on specific parts of the prompt.

This is less than ideal since it costs the interviewee time, and time isn't cheap, but we've found that advance prep removes an even bigger wildcard in interviews: how you respond to interview stress.

autotune|10 years ago

Honestly I kind of enjoy take home tests as long as they align with what I'm learning and looking to learn. I've had to do a couple take home interviews as well at this point as part of the initial phone screen, although they revolve more around config management tools/Ruby DSL and buildout work so far. So far the tests I've taken have been relevant to what I'm hoping to move into ("DevOps"/automation) so they've been a pleasure to complete. Not only that, but also a base to build on for playing with additional tools in the chain.

The biggest problem with these though is definitely the time crunch. The first one I hadn't realized how long it would take so rushed through it at the end and made mistakes. Second one gave myself a full week rather than 4 days and that's proceeding to an in-person interview, so you need to be taking as much time as they'll allow in order for it to go smoothly.

Also, another project means more documentation added to the repo so that's pretty nice too. If the project didn't align to my interests, which thankfully happen to be stupidly in-demand right now if you have "senior" experience with them, and the position, I'd nope out of the project right away.

Udo|10 years ago

> I've seen applicants receive friends'/roommates'/spouse's help on take home tests. Not a good indicator at all even with a glowing submission.

That's why they use the homework as the basis for the interview. In my opinion, of all things they could test you on during the interview, your own work is potentially one of the more pleasant subjects.

monksy|10 years ago

I've had a few take home projects that weren't so bad.

But the last one I did...

A junior just basically shat all over the project and claimed a lot of things.

[The submission was to write a few sample sort functions for a library... the recruiter asked for an app, the paper asked for a library.. I did both... what did I get shat upon for? The user interface/cli that wasn't required.. another thing.. Why did I have 66 commits?]

cgearhart|10 years ago

>Schedule 2x or 3x the estimate.

This might even be an underestimate. In my experience, there is a lot of research time that goes into the problem before you really dig in and start coding. I had one take-home project that required a few days just to get my system configured to begin testing code (collecting the dataset [10's of GB], installing libraries, and configuring the system).

>I've seen applicants receive friends'/roommates'/spouse's help on take home tests.

I enjoy overtly mathematical problems, so I've talked through a number of take-home interview questions with friends during the research phase, and even provided implementations for comparison and review after they've returned them. (Most recently on a take-home challenge to generate digits of pi.)

>But the company just took 10 minutes to arbitrarily reject your application.

This is actually my second biggest gripe as an applicant. I spend a couple of hours building and submitting the most compelling application I can for a job. The worst so far was an automated email response that my application had been forwarded for review, and before I finished reading the automated response I got a rejection email from the hiring manager. The emails are literally two minutes apart in my inbox. It is incredibly frustrating to put so much time into applications when they are clearly being summarily rejected.

(For anyone curious, my biggest job search gripe is not receiving any kind of firm decision...ever. I can appreciate that there "is not a good fit at this time", but I'm not going to be sitting here in six months pining for that job I applied for with your company. If I want to show interest, I'll apply again in a year or so. It's actually mildly frustrating when I get a callback three months later.)

odonnellryan|10 years ago

I've gotten some pretty wacky projects. Basically, implement a fairly-complex web app. Something that I'd assume (even after doing similar tasks) would probably take me up to 40 hours of work, just because the scope is so crazy. They want user login, multiple features, etc... basically an MVP for a small product.

It's hard. If you submit part of the project, which you usually have to do unless you're unemployed, they never go for it. If you call out of work a day or two to do the project... and you don't get the job anyway...

eitally|10 years ago

My wife is not a technologist. In fact, she's a biologist & nurse who's worked in pharmacoviligance for a series of pharmas & CROs past ~15 years. She was laid off this spring after her company was purchased and went through the whole interview thing. One company had a writing assignment as part of their process. It was after both the phone screening and the in person interviews, and they only gave it to candidates they really liked/wanted, AND it was literally a mini version of the kind of data analysis and reports[1] she'd be doing in the job.

But ... it was something that took about 40 hours to complete, and ruined about a week and a half of family time. Thankfully she got the job, but if she hadn't it wouldn't have been pretty.

[1] http://onbiostatistics.blogspot.com/2013/07/periodic-safety-...

blazespin|10 years ago

I agree, the solution is terrible, but the problem is real. Whiteboarding is an awful way to measure someone's skills.

rm_-rf_slash|10 years ago

I've had an opposite experience, but with just one company: CloudMine. They gave me a personal and technical interview, then a project to add a feature to their existing codebase. They paid me $300 for my work. I was way over time estimates and I didn't get the job, but I will always respect them for that.

jlarocco|10 years ago

The company I work for has a "coding assignment," and it works really well for us. I'm not sure we give a time estimate; I think we just ask for it back in a week or so. The devs reviewing the code don't even know how long it took for the applicant to return, and it isn't a criteria we use to judge them. In any case, I can't imagine it would take anybody more than a few hours.

IMO, it's a less insulting, slightly more realistic version of FizzBuzz.

As far as getting help goes, I'm not sure it matters too much. There's still an on site interview, and we ask a few questions about the assignment, along with some other coding questions, and regular interview stuff. I guess if their friend/roommate/spouse is going to help them code all the time, then it's like we hired two people for the price of one ;-)

francoisblavoet|10 years ago

We do take-home tests at deezer.

We try hard to provide good feedback on each submission (certainly not just a 10 minutes look, even for a truly awful entry).

I think that we should try harder to provide an exercise with a maximum time spent. We also try hard to overlook things that can be attributed to a lack of time but the openness of the exercises we use mean that somebody willing to could spend dozens of hours on it if he/she wanted a truly perfect solution (with unit tests everywhere, handling all API levels & devices in the wild, ...)

I personally thinks that our exercises are more objective than whiteboard tests & better reflect real life work. Actually, we take our inspiration from real problems we had to solve.

bradleyjg|10 years ago

If you only supposed to take three hours why not set it up like a take home test? Set up a site where you can download it and then you have three hours to upload the answer?

spacecowboy_lon|10 years ago

Another problem is that its not a zero sum game candidates are applying to multiple potential employers.

Forcing you to spend most of a day on an application means that good candidates will just not wast time applying for these sorts of jobs.

An in the uk to get befits you have to provide evidence of applying for x no of jobs per week so wasting 2 days on a single application is out

eru|10 years ago

> Take home tests are the worst. Company says take home test will take 3 hours to complete. They never do. Schedule 2x or 3x the estimate. Especially if you want to impress the reviewer.

So only do timed tests?

49531|10 years ago

My co-worker once found that someone had posted the take home problem on one of those freelance job sites. Needless to say we didn't move forward with the candidate.

tomsun|10 years ago

Also a lot of the take home interviews are time limited. So you would only have a certain amount of time to implement a solution.

ytdht|10 years ago

as long as they don't assign you actual work that is useful to them....

joesmo|10 years ago

No, in the worst case, you submit it and the company doesn't even take a look at it. That's not only the worst case, it seems to be the most common as well.

codeshaman|10 years ago

This seems like a wonderful idea.

I hate coding interviews, because I freeze up and I look like a total idiot and cannot do even the simplest things. Same thing at exams in school or university - my mind just went blank and into a noisy self-rumination loop. I guess it's called anxiety.

I interviewed with Google last week and bombed it, even though the problem was quite simple and I would have solved it wonderfully without all that anxiety.

My mind just can't produce any sensible thoughts when someone's breathing over my neck and there's a timer. When I'm solving the problem in real time and talking about it, I have to stick with the split decisions that I verbalize and build on top of them, even though further down the road I realise they're not optimal and this contributes to the anxiety even more.

It's hard to 'refactor' your ideas during a 45m coding interview, but this is exactly the process we go through when we write 'real' code - we try a thing, then we improve it by refactoring, we optimize it, we find and fix corner cases, etc.

A take-home problem, on the other hand, would be totally cool. I have time to think about the problem, come up with solutions, optimize, unit test - do the real programming thing which I'm being hired for.

I would then gladly discuss and explain the code with the interviewer.

If then I would be given the task to extend the program with a new feature, then I would be familiar with the data structures and algorithms used and would probably find it much easier to extend, than starting with a blank file and figuring it out on the spot.

But I guess not everyone agrees with the home interviews - some think it's a waste of time and I'd have to agree..

So I guess the optimal solution is to offer the option of on-site coding interview or a take-home problem.

People like me would take the problem home, build it and shine at it, others, who's minds are sharpened by the adrenaline would take the on-site 1hr coding challenge.

robinson7d|10 years ago

As others have mentioned, the trade-offs can be pretty complicated. Perhaps the take-home is always better for you, I won't try to argue against your personal preferences, I'm simply going to list a few reasons why it turns out worse for a lot of people.

For one thing, as expected, the take-home questions are typically far larger than in-person interview questions. When you go into the office you're generally asked, in my experience, much simpler questions; you might get a simple FizzBuzz-like starter, and a few slightly more difficult ones. All in, it takes a few hours (Google and the like can be an exception to that, but I'll get to that after - I'm comparing smaller companies right now).

The take-home work I've seen has generally been suggested by the company to take 8 hours, but typically been a bit more; they've been along the lines of build a fairly simple crud (I've had one that was a calendar, another that's a stream, etc.) with a bootstrap-or-similar UI, back-end validations, and unit tests for the initial commit, implement these 3-5 features on top of it in separate commits (tested, also standard bootstrap-or-similar UI, proper validation, etc.) And then, simply provide access to the repo.

At first, this didn't seem wrong, in fact I figured "well, I guess it's a good way for them to see that you understand everything". But it came with several annoyances. For one thing, since each feature is a commit, unless you specifically try to prevent it they can see things like how long each part took; even if not consciously, this makes people try to get the work done quickly, without taking many breaks. It sort of reintroduces the "hard to 'refactor' your ideas during a 45m coding interview" problem. Another annoyance is that sometimes (and judging by other comments here, even often) they don't respond at all. The silence is unpleasant, to say the least. In-person, you can at least try to read tone and facial expressions.

The other problem is one company I applied with threw a 10+ hour take-home without any warning before the interview. So a bit over an hour in their office, and another 10+ later. This is difficult if you're working another job. It's very difficult if you have a couple such take-homes at the same time, and a full-time, in office job. Scheduling a few interviews around work, and other commitments, is pretty feasible, but throwing in dozens of hours of additional coding is more difficult.

With companies like Google, you know ahead of time approximately how long it will take. You can take time off accordingly. The process is known going in, and that's great.

Basically, I think that for many people, myself included, white-board interviews are very stressful and frightening, but not quite as much so as: scheduling lots of extra time around your life, budgeting X extra hours because they take longer than suggested, building out the (much larger) projects, still having the time-constraint/expectancy issues, and after all of that not always even getting a message/comment afterward.

Both interview processes suck.

nsfyn55|10 years ago

Take home interviews are a great indicator of a company's hubris. "Its so awesome to work here people are going to jump at the chance to do my 3 hour homework assignment".

The problem with them is fundamental: "You will only get someone desperate enough to take your exam."

If the person is qualified they will be swimming in opportunities and will likely throw your exam directly in the trash heap. If they aren't you probably don't want them working for you. I suppose these might work if the entire industry colluded on it but then ... prisoner's dilemma.

Maybe a more useful indicator is weeding out the candidates that didn't say "no thanks." Cause really why are they so desperate for a job and why do they have all this free time? but then ... ethics.

Udo|10 years ago

> The problem with them is fundamental: "You will only get someone desperate enough to take your exam."

Lots of people do poorly in whiteboard situations. As an employer, you may assert that you don't want any of them, fine. But I don't see the problem in giving people the option of using an alternative testing process.

seansmccullough|10 years ago

Ya I totally agree. Especially if a candidate already has a job, and is just casually looking, there is no way they will spend the time.

hanlec|10 years ago

As many other parts of an interview, I've always found the blackboard coding session extremely strange. When was the last time you coded in TextEdit with no docs around, no time to think, standing up, and being watched over the shoulder?

brianwawok|10 years ago

I have pseudo-coded on blackboards many times, which is really what a blackboard coding interview should be. If you get a ding for writing .foreach instead of .forEach, that seems a bit picky ;)

However I realize I may have a bias as I do ok on most blackboard coding interviews I have done.. maybe been stumped 1 time out of 15 or so in my life? Some of it is a skill, that the more you do the better you get at it, but being good at it does not make you good at actual coding.

jpeterson|10 years ago

In 15 years as a software engineer at companies large and small, I have never seen anyone code on a whiteboard (outside of interviews, anyway), nor have I.

recursive|10 years ago

Approximately weekly, when explaining something to another engineer.

nulltype|10 years ago

TextEdit would be an upgrade. Try inserting lines on a blackboard.

nissimk|10 years ago

This is presented as a weeding out technique but it is actually a negotiation step. This allows the employer to establish precedent that you work off hours from home. This allows the employer to identify candidates that are willing to do whatever it takes for the job. These are the same people that won't do hardball negotiations for salary, employment terms or working conditions. Rather than weeding out the people who will fail the test, it weeds out the people who understand that asking for homework is unreasonable.

My last two phone interviews ended with the recruiter / hiring manager explaining that the next step was a take home assignement or test. I said OK, but haven't done either one. Next time I will politely tell them that they can look at code samples in my gthub but I am not spending my time jumping through their hoops just for the chance to have an in person interview.

It's bad enough that we have to burn an entire day to do an in person interview...there shouldn't also be homework.

a3voices|10 years ago

My strategy was to tell them something like "First I'm going to interview at all the companies that don't require take home assignments, and then I'll get back to you if I don't have a job by then".

mathattack|10 years ago

I like these great in concept. When I've been between jobs, I've been very happy to participate in them.

A couple open questions:

1 - Is it reasonable to expect a 10x programmer whom your are trying to poach to give up so much time? (Or should you give them a $250 Starbucks gift card or something similar for their time?)

2 - Can you really ferret out cheating? I had a grad school classmate who paid someone to do his (non-programming) take-home homework for a job interview, and he got the job. He only lasted 6 or 7 months, but it was enough to be awful for all parties involved. I don't have a great counter-solution other than ask for someone to come in to the office to do the work, and even then you can't tell if they have remote support.

vonmoltke|10 years ago

> 2 - Can you really ferret out cheating? I had a grad school classmate who paid someone to do his (non-programming) take-home homework for a job interview, and he got the job. He only lasted 6 or 7 months, but it was enough to be awful for all parties involved. I don't have a great counter-solution other than ask for someone to come in to the office to do the work, and even then you can't tell if they have remote support.

Personally, I think this is where the skill of the interviewer comes in. A skilled interviewer can bust through bullshit fairly quickly. A big problem in interviewing and hiring right now is that most of the interviewers are not skilled. Thus, companies try to come up with processes and metrics that (theoretically) remove the interviewer skill from the equation. Unfortunately, this seems to be done in a horribly unscientific manner.

hibikir|10 years ago

If you read the article, the second part of the interview is doing more work on top of the project, but in front of people. I've gone through interviews like that before. Do two steps on a three step kata in front on your own time, and then a 2/3 hour interview to talk about what you wrote, and add the last piece to the kata. Not very easy to fake.

Any experienced programmer that is considering a job change will spend more than a few hours on the process anyway, in due diligence. If anything, I think this is an important part of gaining experience in the field: You actually want more time around future employers, to avoid a bad fit. Going to a place just to quit in 3 months time is a waste of your own time. Investing an extra few hours, or even few days, makes a lot of sense.

ammon|10 years ago

1 - We don't expect anyone to give up this much time. I realize that it's a big ask. However, a lot of programmers we've spoken too really want this option. Anyone who does not want to is totally free to go with the (faster) regular interview. Either they let is watch them code for a short time, or they code for a longer time on their own.

2 - I can't say for sure (we're only just launching this), but I hope (and think) that talking with someone for 45-minutes about the project that they did will be enough to make sure that they actually did it themselves

thoman23|10 years ago

One thing I always found interesting in these discussions is how the same people who are quick to cite The Mythical Man-Month when it comes to the futility of adding new people to a late project will also claim that working 1-3 hours on some trivial problem is "doing free work" for a company. How much value do you think your 3 hours of work with absolutely no context can possibly add to the company? A company trying to get meaningful work done by secretly farming it out to interviewees is beyond ludicrous. Interviewers are only interested in finding good hires, not in conning you into doing their homework for them.

thedufer|10 years ago

I'm not interested in how much value the company gets out of it; it's how much it costs me that matters.

And anecdotally, 1-3 hours is...optimistic.

brobdingnagian|10 years ago

Take home interviews are common in data science, and they are deeply exploitative. I have been asked to spend anywhere between an hour to a week on a project, and in most cases they simply decline to hire you without giving you any feedback. In the worst cases, companies like Knewton and Mattermark have given take home interviews that not only took a lot of time, but were related to the companies core business model. In other words, it's free consulting.

And finally, you aren't fooling anyone when you say that it should take 3 hours, or as long as they want to spend on it, while giving them 3 days. You are pressuring people to spend as much time on the problem as possible to "prove they are a good programmer." It's exploitative - you aren't paying us and the probability that we will get hired is extremely small. Think about how many companies we are interviewing with.

Udo|10 years ago

As someone who is still technically waiting - after a month - for his phone interview, I like the idea of doing some actual coding. If you have to make people jump through hoops, at least you might try and make the hoops at least somewhat meaningful.

Edit: I just pressed the button on my TripleByte dashboard to switch to the "project-based" track, but then I get redirected straight back to the same "we're sorry" page I've been seeing all along.

hharnisch|10 years ago

Here's the best approach I've seen yet to the take home interview (and interviewing software engineering candidates in general).

Here's a git repo, a problem statement and a slack channel to ask questions. You can use any tools you like and spend as much time as you like on the project for the next week.

----

Employer's perspective: You get to see some code, see how they approach a problem, see how they use their tools, and get a sense for what it's like to work with them.

Candidates's Perspective: You get to use the tools you're already comfortable with, you can set your own pace, and you get a sense of what it's like to work with the team.

mostlystatic|10 years ago

I really like the idea of adding a Slack channel to the problem statement. I always have questions, and channeling them through a recruiter via email is a pain.

A lot of take home problems are very unrealistic, so it's difficult to make the trade-offs that you'd normally make when trying to ship software. Being able to ask someone on the team what their intentions are would be super helpful.

My pet peeve is front-end tests that ask you to write maintainable code, but you're not allowed to use any libraries. So instead you have to create your own tiny MVC/templating/helper libraries just for the project - but obviously they won't be as good as something you've spent more than 4 hours on.

throwaway478291|10 years ago

Take-home interviews are a perfect match for startups - they really reflect actual working conditions. One way or another, you'll be taking home your work every day! :)

dntrkv|10 years ago

I see people always saying this online, but the vast majority of engineers I talk to in-person work very sane hours (9-5, 10-6) and never take their work home with them.

neilk|10 years ago

We (Sauce Labs, Mobile Team) are experimenting with take-home tests as a first-contact screen. I'm familiar with the take home exam that takes a week to solve, so we went in a different direction.

We schedule time with candidates, send it to them at the right moment, and expect them to send in a solution two hours later.

Before we tried it on candidates, we all did our own test, and we confirmed it could be done in less than two hours. (Granted, we are very familiar with the problems we care about, but we usually get complete solutions from candidates.)

So far the results have been fascinating. The test is conceptually super easy, deliberately so, but with a very wide set of possible implementations. It is more about tying together moving parts in the right design. The goal was to do the opposite of the algorithmic brainteasers you normally get in interviews -- it's a miniaturized version of the problems we actually solve all day. Hopefully, it's a good test of what kind of coder the candidate is.

But we're still working on it and refining it.

dntrkv|10 years ago

Putting any time constraints on a dev test is a bad idea in my opinion. It's not that I can't finish the test in the allotted time, but knowing that I am being timed will make my brain race and do stupid things. Personally, I don't mind take home tests that take more than 2 hours, as long as they reflect the actual work I would be doing in that position.

VLM|10 years ago

The problem with random or unaligned assignments is you end up with a randomly skilled programmer. Often not bad, but not on point.

The problem with Rosalind or Project Euler assignments is you end up with an excellent theoretical math or bioinformatics programmer. Often not bad, but not on point.

Fundamentally anyone with a degree or experience or a non-trivial github can write code, but you want to test their judgement, their thought process, their comprehension, their style, their knowledge about your business domain. Other than total open field blank slate projects (very little of my time over the last 35 yrs has been spent in that mode) you usually have existing systems and code. So give them a "special" sample of your own code. Shouldn't be too hard to find unless you're literally hiring the first technical employee. Then give it to them a couple days before an interview and inform then you're gonna review that code together, they'll present you with a rewritten, redesigned version, and then review the rewrite together.

If you'll feel bad about making them do "real" work, the best code to send out is some that has been heavily customized to only work some of the time, not properly error check, and intentionally somewhat obfuscated, so I sincerely hope that code thats screwed up to that level has to be intentionally manually generated for the interview. So strip out most of the failure/error detection code, screw up some of the code, maybe intentionally cut and paste an almost identical function in place to see if they clean that up. Some folks like intentional outright errors, like typos, is this the kind of programmer who can't write English? Also wipe most of the comments, put some intentional logic errors in the comments. This can be fun...

If you're looking for non-intro level programmers "everyone knows everyone" and my latest job we didn't talk programming because I was vouched for as knowing what I'm doing from years of coworker experience at a past employer. I'd be moderately offended if someone I worked with for five years asked me to fizzbuzz, either in person or as a take home test.

physcab|10 years ago

I like this idea. I took the Triplebyte quiz mostly out of curiosity and then decided to stop when I was prompted for a phone interview. I like the idea of "pre-qualifying" myself for a job even before I'm ready, so that when the time is right, I can pull the trigger and switch easily.

With a phone interview you have to commit, which is no problem if you're in the market. But if you're not in the market and you still want your options to be open, interviewing on your own time makes a lot of sense and reduces the mental burden and stress of switching.

lucasnemeth|10 years ago

I'm not particularly a fan of take-home tests. But comparing that to mumbling at a white-board, while a software engineer is pretending to be an expert psychologist at analysing your ~train of thought~, and unfortunately, more often than not, someone in the board is only paying attention at how much of an WASP male you are or pass by it, where you need to do a task that you only repeat at interviews for a job that will not require that...compared to that, give me take home interviews any day of my life. Yes they are free work, but at least they are free work related to actual work. Live coding in the whiteboard performances are not part of the work. And the stress argument (that programmers must be able to deliver under stress) there are categories of stress, social anxiety of a live performance is not the stress we deal at our works. Sometimes I do good whiteboard coding interviews, sometimes I do bad whiteboard coding interviews, none of the situations I felt the merit was of the code or my knowledge of the subject, it is not a proof of how well a programmer does his job, is a somewhat related way of knowing if somebody knows who to code something and if he does not feel too nervous to code on a whiteboard instead of a computer to a bunch of strangers testing him. If you add that to the fact that some interviewers like be to randomly arrogant, you're missing some really nice but perhaps shy coders.

francoisblavoet|10 years ago

This is why we use Take-Home tests here at deezer. The part we don't have got right yet is how to manage the length of such an exercise. Finding a problem where you have to both demonstrate how you handle several common issues and that is not too long is pretty hard.

beering|10 years ago

One thing that a local company did was to give a simple programming assignment (given postgres database connection info, create simple REST API using any language). They would switch up the details of the assignment for each candidate (e.g. different endpoints for same set of tables, different tables, etc.) to combat cheating.

The applicant was expected to be able to answer questions about the code anyways, so hopefully that would've been an effective layer of protection as well. Don't know if this company is still doing it.

neilsharma|10 years ago

Historically, I've tended to do poorly in in-person interviews. I felt my critical thinking and problem solving skills plummet to a fraction of what I am capable of. I initially thought that with enough real-world interviewing experience, I could familiarize myself to the stress, but that never really happened. Interviews tend to be few and far between, so the familiarity never really sticks.

I usually perform better on take home interviews, but 90% the time I'm unwilling to dedicate what are usually days for just a chance to be accepted at a company I may not even want to join. I think many employers use the take home interview as a screener without realizing they need to first cultivate in the candidate the enthusiasm and willingness to complete it.

Some ways companies can encourage me to actually complete the take home interview:

- Provide compelling information about the job (estimated pay/equity, meeting the team, evaluating culture-fit, getting me excited about the problem, etc). Lots of companies save this step for the courting process that happens after the technical screen.

- Pay me a modest amount just to complete it, regardless if I pass or not. I don't care about the money, but at least it won't feel like wasted time.

- Make it way shorter, but then it might be useless.

--

What I'd prefer instead of all this interviewing is still:

1) meet the team, evaluate culture fit, etc.

2) discuss past projects in detail, maybe do a code evaluation if relevant

3) contract for the company for 2-4 weeks at market rate pay. Hell, make a 10-week "internship" out of it, whatever.

4) receive offer (or not)

This is not always practical or scalable, but I've gotten offers 100% of the time this way, including at YC companies and other startups. And from the company's perspective, I think it extricates any unreasonable expectations they have from prospective employees. It's always tempting to look for unicorns when you have hundreds of resumes to choose from, but when you have a likable contractor doing good work, there's no reason not to give him/her an offer. Plus, the employer can evaluate the single most relevant skill in an employee -- the ability to learn.

cblock811|10 years ago

I really hope this works. I never understood whiteboard interviews. They don't reflect how real development works or how that developer works either. I hope you post an update when you have enough info!

jameshart|10 years ago

Incredible to read so many cases here where people have done a take-home exercise and heard nothing back. I had assumed that the normal practice would be to give a take-home exercise as part of prep for an in person interview, so if you do the work you're at least guaranteed the opportunity to talk about it.

jzila|10 years ago

This is great. I especially love that candidates are given a choice, so if they prefer the traditional technical interview they can choose that.

Normalizing performance between the two interview types will be challenging, but I think the benefits to be reaped far outweigh the difficulty of the challenges.

eplanit|10 years ago

Agreed. My reaction was "finally!". I really do not approach software engineering as Performance Art -- and I never write code on white boards when I work. I've been fortunate to have been asked only once to do such a performance in an interview, and my reaction was unfortunately (and unexpectedly) like the candidate they described. In that case I didn't write anything on the board, but instead explained verbally how I would approach the problem. They actually gave me a "take home" problem to solve. I was able to go to my office and produce a solution like I normally do, and then sent them the sources and test results.

Very glad to hear that folks are breaking free of this long-lived trend. I also interview candidates on behalf of my clients. Personally, I find the most effective technique is to choose items from their CV, and have describe in detail (with a white board) how they did it, what challenges they faced, etc. Then, pose to them a hypothetical "but what if you were constrained by X or Y, how would you adapt your solution", etc. It is very easy to spot a charlatan or liar in these questions. If they really did what they claimed on the CV, this type of session gives them great latitude to demonstrate and expand on what their capabilities are.

sytelus|10 years ago

How does this work if candidate has experience in, say, backend, but haven't worked much on frontends or mobile apps etc? A specific "take home" task puts those candidates at advantage who have already worked in related area, have written code that they can immediately reuse or are experienced in frameworks that allows them to fast trek. This would be great if the job also required exact same capabilities for the foreseeable future from the candidate. However it would overrate or underrate the candidate if the job requires candidates to work on diverse set of problems in long run (for example, switching from MySQL to graph problems). It would be interesting if article also gave few examples of such "take home" tests.

erichurkman|10 years ago

That looks great. Are there enough problem seeds to help combat sharing of answers?

Now we just need you at non-YC startups, too.

ammon|10 years ago

Triplebyte founder here. I can't be entirely sure until we give this a try, but the hope is we'll be able to tell if the candidate wrote the code by talking to them for 45-minutes about what they've done.

shockzzz|10 years ago

"Hey! Stop measuring me and give me job! I'm smart you asshole."

~ every software engineer in the world

Anyone else realize we're the only ones who complain about this shit?

odonnellryan|10 years ago

The interview process if kind-of crazy. I've been looking for a job for the last few weeks and been on a few dozen interviews. 90% of my experience is this:

1) They have a very-long interview process. Start to end is months, with weeks between communications. 2) Each phase, when there are often from 6-10, can take anytime from 2-8 hours. 3) Projects are always either right off the bat, and lengthy, or a surprise at the end of the interview.

jays|10 years ago

My personal favorite method is similar to this and we use it at my current company.

The big difference of course is that we pay for the candidates time. Not everyone has 5-20 hours to burn on a project in terms of free time. It's a big commitment, especially for the folks with families.

Some key benefits of a project for our interview process:

* We get to see a candidates programming skills with a greenfield project. This gives us a chance to analyze all aspects of development (organizing code, creating tests, using best practices, ect.).

* Candidates get to act as if they are on the team, so they are encouraged to ask questions, get feedback, ect. throughout the project. This gives us a chance to see how well they communicate in addition to their programming skills, which is REALLY important to us, since we're an entirely distributed team.

* The project is not throwaway for the candidate nor us. We usually have an ongoing list of libraries and tools that we need internally for our projects, so the candidate is actually contributing to our mission. This also justifies paying a candidate for their time

miscfuck|10 years ago

> The project-based track will require a larger time commitment

This is the only part I take issue with. I tried a take home interview once that took the better part of a weekend and decided I'd never do it again. There just isn't enough time. Basically, if it takes that long, there needs to be a very high chance that I'm getting hired at the end, or it's not worth it.

Raphmedia|10 years ago

I would never take this option.

At my current workplace, I have the tools I need to work. Most of my softwares licences are under my employer's name. I have access to my snippets, my previous projects and many build processes (minifying my code, preprocessing my CSS, etc.). My workflow is great.

If you give me a project to do at home, I can't use any of that.

I would have to spent hours working either from my bed, my dining table or in a coffee, on a laptop. I would also be required to work on this project after the 40h/week that I already do.

I'll take the regular interview any time.

One of my worst interview process was one time when they required me to do a project of 20+h in a week. They knew I was employed elsewhere, so they let me give it Monday instead of Friday. This was ridiculous.

Otherwise, everything was doing very well. However, the experience really discouraged me from working there.

But I guess it's not all that bad, because I most likely dodged a bullet. If they can't even give correct deadlines to future employees, I can't imagine how they threat their own employees.

roneesh|10 years ago

I view these as a good litmus test for the company too. If they won't answer a question about the problem, or think it's very self explanatory, it might mean they're not the best at communicating.

I recently did a clojure problem where in the gist itself I asked for feedback and showed my thought process, but crickets until a month later when I followed up and they said they had moved on. I think it was for the best.

A good preventative measure might be agreeing beforehand on a time to discuss the solution. I know I certainly will next time.

Also hiring managers need to ACTUALLY read code. There have even been times I've asked if they've read my code before doing a lengthy drive, they've said yes, only to realize upon getting there they haven't. If you won't take some time to assess the code I've written and put my name on, I don't think I should be expected to drive 3 hours to meet you.

efsavage|10 years ago

To me the value in a take-home test is in smoke testing what the applicant said they are familiar with. We once accidentally hired someone once who talked the talk but didn't even know SSH.

My test involves a basic task (that is related and already implemented in our codebase). You have to check out a skeleton project, add the solution, build it, and deploy it. The test takes me about 30 minutes and most applicants spend 60-90 on it. Everyone on the team reviews the test and the criteria is essentially "do you want to work with this person". It's very rare for someone to pass the test (which occurs between a phone screen and an in-person interview) and not get an offer. The exceptions have all been around compensation issues.

dandanisaur|10 years ago

The take-home/programming tests in general are just as bad as interview questions. You're asking senior level engineers to take 3-5 hours (at what? 100-150$ hr bill-rate) to see if they can code?

Do you like them? Check. Do you feel like they are telling the truth? Check. If you use the 'try before you buy' method: You can easily see if they can handle the job/handle the pressure.

Also, you probably aren't the only company/avenue they are applying towards. All of the calls/tests add up.

The question is though, since companies are already using take-home tests/interview questions... can anyone confirm that these methods are more effective than a 'try before you by/contract to hire' position?

bitshaker|10 years ago

My old employer Thoughtworks does this.

http://www.thoughtworks.com/careers/application-process

It's a fantastic way to vet candidates and there are multiple exits to the process. For obviously bad submissions, it's probably a no-hire, but I've even seen incomplete assignments get someone to the next level and then a hire.

Some people get sent to ThoughtWorks University which basically trains them to code, work in an agile environment and how to be a good consultant. Everyone that goes says it is a great experience.

humbertomn|10 years ago

In 2008, I was hired to work on a tech startup from Australia, while I was living in Brazil. After I went through an initial quiz and a few interviews, they were willing to give me a shot by giving me (and paying for) a small project to code. Only after succeeding at it, they hired me, sponsored my visa and paid for all the relocation costs. In your case, I really think this approach would be a good bet in cases that the YC company is willing to sponsor the visa from the potential employee, so giving him a paid project before even flying him, might be a good filter.

tragicthrowaway|10 years ago

    Rather than pick a new project, however, they'll take the same project further, incorporating feedback from the 1st interview.
Is there still judgmental coding during the 2 hour interview?

zawaideh|10 years ago

We consistently do this in Sandglaz whenever we interview for a technical position. It most closely aligns with how work is done in real life, and we give candidates a reasonable amount of time to do the project. We ask them to document what they would do if they had more time. It is more of a way of peering into how they organize code, their understanding of technical debt and prototyping, and their ability to write unit tests.

It's been invaluable in determining candidate fit.

mellery451|10 years ago

This sounds like a brilliant idea. I hope that you are also including homework assignments that cover (1) communication skills (especially WRITTEN communication) and (2) personality. In my experience, those two areas are far more critical to success than raw coding skills. Also, everyone should pass the "no assholes" test, if there is such a thing.

I hope that you expect the same amount of prerequisite work for all of your candidates (marketing, finance, sales).

vinchuco|10 years ago

Wondering if under this model an unethical person could set up a fake interview process with real assignments to get unpaid work done by others who want the job.

AlwaysRock|10 years ago

Tech recruiter here: I have seen so many companies that lose out on good developers because they ask them to do a take home test.

Obviously you want to vet the person technically but you should be able to do that through talking with them. Most developers put off take home tests even if they are excited about the company and by the time they do it they already have finals/offers from other companies.

bato|10 years ago

I actually did a similar thing as an ops guy (debugging systems as described in some questions) and really liked the concept. On the other hand I work on mathematical riddles for fun so maybe I'm the core target for those.

It doesn't replace face to face interviews but I can see it as a good example of "how would face this real life situation you would encounter if you got the job?"

darrenkopp|10 years ago

This is great, but I feel like take-home interviews are better for a first-level filter. I went through this when I applied to Thoughtworks, but it definitely wasn't the only interview. This may have been because I was in a different state also though, so before they would pay to fly me out, they let me pick out of a few problems and then email them in within 72-hours.

deejbee|10 years ago

Why don't interviewers just have a conversation or is that so totally lost these days? I find it a whole lot easier to just ask the right technical questions in the first 2 mins. to decide on hiring.

I keep seeing more and more dis-associative non-communication being presented where the interviewer attempts to do less and less. Its lazy and a crap way to treat people.

alanh|10 years ago

I hate take-home interviews and rarely finish them. Especially when a candidate has many options or places a high value on actually getting to meet possible future team members (as I do), a two or three-hour assignment take-home assignment is a lot to ask. I would rather get to show previous projects and explain context and what I might do differently now.

heyheyhey|10 years ago

> We expect them to spend about 3 hours on the project (or as long as they want to spend to show us that they're a good programmer).

3 hours isn't too bad. I had a friend interview with some hedge fund and he said he probably spent 30+ hours on a take-home project (he didn't get the job). I thought that was way too excessive for just 1 interview.

msluyter|10 years ago

I did one of these when I applied at my most recent position. It took most of the weekend and actually it was a lot of fun. But I doubt I'd do it again if it required more than a few hours of my time. Any test that time consuming is arguably biased against those with families.

Some advice to those doing take home tests: write (good) comments and include tests.

dmitrygr|10 years ago

Gauging ability to operate under pressure is valuable too...ever tried to fix a bug on a device that was supposed to ship yesterday, under the pressure of the entirety of the hierarchy above you all the way up to the CxO?

It helps to know if the candidate you hire will handle that, or fall apart just when you need him/her to do the job he/she is paid for.

bsder|10 years ago

Um, you really can't interview for that person, thanks. That person is someone who is already in your company and gets promoted to "trusted lieutenant". Promotion to "completely trusted lieutenant" is only awarded posthumously. :)

If that kind of situation is happening more than once in a blue moon, something is very wrong at your company.

sheepmullet|10 years ago

As an organisation you have to decide on what you want. The developers who can handle high stress situations are rarely the most skilled developers.

If you are hiring for a high stress environment then you need to focus upon candidates who can handle stressful environments over candidates who write really good software.

On the other hand most environments are not high stress.

Vraxx|10 years ago

For what it's worth, the author included this footnote about what you mentioned.

"1. The stress of interviewing seems to be different than the stress of performing a job. None of the people we've spoken to who do poorly in interviews report problems performing under deadlines at work, or when a website is down and there's pressure to get it back up."

pinewurst|10 years ago

This sounds like a great alternative and certainly would work well for me. What I'm afraid of though, is that I'd pass your interview and the aforementioned YCombinator companies would again want to put me through the on-site, high-pressure whiteboard technical interview.

Harj|10 years ago

That's definitely something we've started addressing as we optimize the process of matching programmers with the right startups. We're starting to gather data on how the YC companies run their hiring processes (seeing the degree of variance has been fascinating) and we can use that to avoid exactly this happening.

bluedino|10 years ago

I've done this, and liked the process.

Interview with 2 people for an hour or so. Then you get a Rails project, fix 3 bugs, choose and implement 2 features from a list, then 2 features they choose. Come back in a few days and discuss why/how you did what you did.

Untit1ed|10 years ago

The problem I find with these is that while solving a problem might take 3 hours, you can spend an essentially unlimited amount of time polishing code - writing comments/javadocs, neatening up the code, writing more unit tests etc. etc.

balls187|10 years ago

Is there data on the efficacy of non traditional coding interviews vs traditional ones?

I'm all for improving the process, but as someone who at times has struggled on a coding interview, I believe that the onus to improve should be on me the candidate.

radcam|10 years ago

Why is it ok with everyone that triplebyte is using desperate job seekers as lab rats?

joslin01|10 years ago

I considered a job out in SF working for a decently well-known guy, Andrew Chen. I had gone through 4 coding interviews progressively working my way up their ladder to their CTO. Now, each of these I did well on but they didn't like how fast I went. Despite them saying "Our fastest done was 1hr!", they didn't seem to appreciate me going fast and came to the conclusion that I probably didn't know how to write production code -- just a quick hacker. Actually, it was rather annoying because their "top" iOS dev didn't even understand basic shit I was doing. He'd have to keep stopping me and being like wait -- why'd you do that? Yet as I worked my way up, I really enjoyed a couple of their engineers and CTO. I didn't have to hold THEIR hand during a code interview.

So I was an iOS developer getting considered for Android position, and they said "hey it's great you can code fast & all, but can you learn fast?" and told me to create an Android app that searched images on Google. I sighed because I had already been through 4 coding interviews, but oh well, this will be it I thought. Since I wanted to do a good job, I spent two hard days working on it basically all day every day. Since I was new to Android world, I had to learn that while being productive. You can see the result of my efforts here: https://github.com/joslinm/android-image-search-example. I thought I did a nice job because rather than using a HTTP library, I read the streams myself to give nice progress indicators for each image (which persisted even thru phone rotates).

I give it to them and they say, "ok seems to be working." After that, I was invited to SF to interview with them in person -- actually, interview is the wrong word, I would be working with them for 2 full days. So we did that. When I wasn't coding, I was being grilled about my work history (perfectly acceptable, but why didn't we do this earlier?). Finally, after that, I was told they had come to their decision. Thinking I was a shoe-in, I went to go meet with Andrew. Andrew's decision: "You're too entrepreneurial."

Now let's examine this for a quick second. They had come to a pretty fair conclusion that I was too entrepreneurial after talking to me. They realized, hey this kid is a go-getter and probably isn't the greatest fit for our #7. Yet this was AFTER copious amounts of coding and wasting my time doing all these code interviews and even joining them to code in-house. If they had just went about a pretty normal interview, they would have discovered this fact way earlier and not wasted either of our time. So why waste my time forcing me to code before they do their diligence? Because he's Andrew Chen; you can google his name and discover who he is. It would be a "honor" to work for such a prestigious start-up pundit. In other words, he can get away with it.

For those of you considering a start-up and actually have skill.. don't get taken advantage of by these bogus work projects. The employer wins because he's not paying you and gets a lot of evaluation for free. And if they do insist on you working with them for a couple days, you insist on getting paid for those couple days.

drdoom|10 years ago

That sucks. There was a time when being entrepreneurial was added to job descriptions as a nice to have. I went through something similar a long time ago; the reasoning was just as specious.

Good luck.

geebee|10 years ago

I thought Gayle Laakman McDowell, who wrote "Cracking the Coding Interview", wrote a good article about the problems of take-home interviews.

http://www.gayle.com/blog/2013/09/18/companies-who-give-cand...

At the core of the problem is that this approach can be used to burn a lot of a candidate's time without an equivalent investment from the company.

I've mentioned this before - I applied (maybe 5 years ago) to a company that first asked me to take a Java test (about 1 hour of work). Then the recruiter called me and sent me a take home project that should take "5-7 hours". I did this, crickets chirped for a month, though I did check in with the recruiter for a while (I gave up eventually). Finally the recruiter called me with a one-line brush off "we've decided not to move forward at this time…"

Granted, this was a bad experience, and it won't always be like this. But I'm pretty close to saying "never" to these exams.

I thought Gayle's suggestions were good. She goes so far as to suggest a 90% passage rate - that you should not be giving these tests to people who are unlikely to pass then, using them to confirm, not screen.

ammon|10 years ago

This only applies if the take-home interview is obligatory.

I agree that obligatory take-home interviews are unfair (I feel the same about trial periods). They work (they're probably more accurate than a standard interview), but they take too much time from the applicant (and will thus scare away many of the best people).

As an option, however, I totally disagree. There's a significant percentage of good programmers who are ill served by standard interviews. Those people want this.

ruswick|10 years ago

I've had a similar experience. A company I was trying to intern at asked me to write a rails app for them before they would think about giving me an interview. I wrote the app (which all-in took maybe 10 hours) and sent the recruiter a link to the heroku instance the app was running on and the repo on github.

I never got a response. I think three months later I might have gotten a one-liner saying they had gone in "a different direction" or some bullshit like that.

It's insulting and ludicrous for companies to treat prospective employees so disrespectfully.

somedudethere|10 years ago

This x100. I hate these interviews as one of the first exercises. More than once over the years I have spent 5+ hours doing a coding exercise for a company only to get a one sentence response, telling me that my "code fell short". If I pressed them further they might say my code was "hard to read" or "not what they were looking for". Vague, unhelpful, and pitiful responses. 0 interaction. No chance for a rebuttal.

Its a very lopsided assessment. Normally an in interview you can judge the company while the company judges you. That way in an hour interview you both can probably tell its not a good fit. If I'm applying and coding in python and within 15 minutes of a live coding exercise they tell me I shouldn't use list comprehensions because they are hard to read, I'd be out of there faster than I could measure. If I just spent 5 hours coding to get the same response? I'd get a little upset.

When I give critical feedback I will typically go through line by line and tell the candidate what is wrong and what is good. This is done with the candidate, since nobody is 100% correct so my judgement might be wrong and they can correct me. Many, many companies skip this crucial part and as a candidate you don't know if they are going to do it or not, so why waste your time?

eastbayjake|10 years ago

I like that they're making the project an optional track, but as a fairly extroverted interviewee I would much prefer talking through code with an interviewer. I feel like the 8 hours of programming I'd do on a take-home project could be assessed with a one-hour conversation walking through code I've already written. (It's especially frustrating when the projects are low-level, like creating a basic CRUD app that uses a lot of libraries, and I've implemented the solution so many times that most of the work on the project is just typing it out. I could just walk the interviewer through one of my many CRUD app side projects.)

Furthermore, collaborating in-person with another engineer tells me more about their engineering culture, and tells them more about whether I'm someone who can collaborate well with others. An hour of pair programming on one engineer's current real-job task would tell us both a lot about each other in a fraction of the time.

bjones22|10 years ago

A test is only as good as the engineer who glance's at it with the fate of the candidate in his/her hands.

In my experience 90% tests get 10% of the attention of other assessments.

dvirsky|10 years ago

I've been giving applicants home assignments for years now, in 3 companies. I do it as a third step, only after a phone screening and at least one personal interview (that might include some very very light whiteboard coding, but will touch a lot of technical stuff), and only if I find the person to be right for the job.

So out of dozens of CVs, a handful will be invited to a personal interview, and maybe one or two people will actually get the home test. I get that it's time consuming so I try not to waste people's time if I'm not serious about them. On a couple of occasions when people said they're time limited, interviewing for a lot of places, etc - I've allowed them a one hour on site task that is of course simpler.

And it's very rare that people are rejected based solely on the code in the home test, it usually has more factors than that. But if you have two good candidates, it might help tip the balance in favor of one of them.

BTW I don't only review the code. I find that the quality of the documentation (not only comments - I ask for a short text describing the design choices, code structure, etc) is usually one of the best signals. Bad grammar and poor language, complicated descriptions of simple things, focusing on unimportant parts - are huge telltales of problems in a person's thinking. Clear, well versed, concise text usually indicates a smart and pragmatic person.

jimbokun|10 years ago

"At the core of the problem is that this approach can be used to burn a lot of a candidate's time without an equivalent investment from the company."

Maybe a tweak would be to only offer take home projects to candidates only after committing to bring them in for an on-site interview, then the interview consists mostly of reviewing the code from the take home.

(Personally, I think I'd still prefer the "coding in person" option.)

joesmo|10 years ago

After three tries with this process, I've decided that "never" is too soon:

1x Take-home test didn't even get read (this was the nail in the coffin) 1x The interview failed because the salary wasn't competitive (should have asked beforehand about the salary, but didn't have the option; lesson learned) 1x Got an in person interview which led to an offer which was later rescinded (the trip was nice, so I'm not complaining)

Employers in this industry are just not responsible enough to even read through hours worth of work by prospective employees, so while a good idea on paper, the take-home test is a horrible idea in practice. Never again, indeed.

jeff18|10 years ago

That turns into an advantage for Triplebyte, because you are actually applying to potentially several hundred companies at the same time.

sandworm101|10 years ago

But do you want someone who cannot handle an interview?

Perhaps take-home testing works if you want a "code monkey" who can sit in a box churning out code according to specifications, but I cannot think of a company that doesn't want more. The ability to interact with others in sometimes stressful environments is, imho, an essential skill for all.

There is also the danger that companies will turn these "tests" into work product. I did an interview last year (legal) that requested "writing samples" on very particular and timely subjects. Once I realized the game I asked them to sign a copyright agreement. They got screaming mad and tried to get me to sign all sorts of NDA junk.

qwibbler|10 years ago

It seems as part of the take home that you spend 45 minutes discussing your implementation and defending your choices in person with the interviewer. This is a much more realistic "on the job" stressor than being able to code out loud / on a white board.

collyw|10 years ago

I usually refuse them unless I have spoken with the technical people first. You get no idea about the job from HR staff.

serve_yay|10 years ago

Do this instead of white boarding or other coding during the interview. Please.

kartikkumar|10 years ago

I dont really understand the way interviewing is set up in general. Interviewing in my mind is a two-way street. It’s not just the candidate that’s being interviewed for the job, it’s also the employer being interviewed to determine suitability.

In light of this, I think most interview processes don’t make any sense. I think that a screening phone/Skype call makes sense before either side commits any time/resources etc. In this process, I think there should always be room for the candidate to ask questions of the employer. Any situation that is unbalanced, in which the employer is playing the role of the one with the final decision is a completely skewed setup.

I interviewed a while back with a YC company and although I didn’t get the job, I was highly appreciative of the setup. Firstly, there was a Skype/phone call, which felt really like an open conversation; one in which I was free to ask questions and understand suitability too.

Then I was invited to an in-house hack. Essentially, I spent the day (a Saturday) hacking with the founders on a project. The project was a lot of fun and something that I learned a ton from. We actually ended up working till around 4am the next day. What I really appreciated is that although it was “an exam” for me, the investment of time on my part was weighed equally by their time investment. Also, I was happy to know that they had learned things during the hack too. I was at ease during the whole day precisely because they treated me as though I was their colleague already.

Coming out of that experience, I’ve wondered for a while why employers don’t take the stance that to hire excellence you have to commit time and resources. Most interview processes that I’ve heard of seem to be a cop out on the part of the recuiter/interviewer, in the sense that it seems that the priority is to hire the best people but spend the least time doing it. That to me is the ingredient for a broken process.

So, in a nutshell, I think talk of take-home interviews misses the point. It might not be scalable, but my intuition tells me that it would be much more effective to have the interviewee and company folks hack on something together. That way, the interviewee gets the opportunity to essentially interview the company too. I’d definitely preceed this with a few conversations on the phone/in person, to ensure that the time investment of hacking together is geared towards the best interviewee/company relationships.

Perhaps this is missing the point too, and perhaps it’s not workable in the real world. My anecdoctal evidence is simply that have spent an entire Saturday working on a project as part of an interview process and ultimately not getting the job, I don’t feel I wasted any time, nor do I feel bitter about it.

joeblau|10 years ago

I've done quite a few "at home" programming challenges [1][2][3] as well as hacking challenges and most of my experiences have been overwhelmingly negative. The challenge is that "programming" is about 20% writing code and 80% other stuff (requirements, design, testing, security, documentation, meetings, beer, etc...). It seems like the proposed solution is not addressing the problem: Explaining how to solve a programming challenges you may have never heard of on the spot.

I do agree that interviews add a level of pressure, but what you're trying to gauge thought process. How does the candidate think about solving the problem; Can they iterate; Can we lower the space and/or time complexity; Can this be solved recursively, Are they receptive to input? A take home assignment does't help you figure any of that out. Usually, the team who is interviewing already knows the answer to the specific problem and all of the intricacies (based on having to solve it on an internal project or just because it's a question they've asked before), but the goal is to see someone thinking in real-time.

In my career, I've never had a time where I go off on my own, work on something and come back to the team with a solution. Even when I was writing TI-83 programs in High School to solve all of my science homework and finish 50 minute tests in 10 minutes; I still had classmates asking me about what I was doing along the way. There is always discussion and I feel like by sending me off on my own, all of that goes out of the window. You can't verify if I copied the code from anywhere else, you don't know if I had my buddy who is an engineer at another company break down the answer for me to spit it back to you, and you don't know if I paired with someone else to get the assignment complete. I'm obviously biased based on my experiences doing over 40 interviews in Silicon Valley/SF. My goal for this type of interview question would be to understand how the candidate thinks; I don't care if you write your answer in Brainfk[4].

[1] - https://github.com/joeblau/sample-elevator-control-system

[2] - https://github.com/joeblau/sample-top-ten-tweets

[3] - https://github.com/joeblau/sample-url-shortner

[4] - https://en.wikipedia.org/wiki/Brainfuck

bbcbasic|10 years ago

Software developers huh! What other role requires you to complete an exam to be considered for a job (or even just an interview). Moreover a 4-8 hour exam with no syllabus. No 'past papers' etc.

I think this should stop. In it's place, developers can have a pet open-source project, which they submit with their application. The point is that the same project can be submitted for a hundred applications if needed, saving the candidate dozens or hundreds of hours of wasted time.

They could put that time into the project instead and even if they don't get a single offer, the open source community benefits, and the candidate got to do something interesting rather than convert roman numerals or aggregate an array.

I seriously wonder if we should all boycott dev tests. If they give a test, just give them a github link and say "Please review this as a good example of my work.". If they can't review code that isn't tied to a silly question maybe they are not worth working for.

I say this having done some such tests recently myself. (To be fair one of them said a Github submission is OK, I just didn't feel my Github was good enough at the time.). I kind of feel bad contributing to the madness!

Nacraile|10 years ago

> What other role requires you to complete an exam to be considered for a job (or even just an interview). Moreover a 4-8 hour exam with no syllabus. No 'past papers' etc

As far as I can tell, essentially all of them. Of course, many of them have no practical way to even attempt to assess competence, so they fall back on "situational" and "culture fit" bullshit.

> I think this should stop. In it's place, developers can have a pet open-source project, which they submit with their application.

Problem the 1st: how do you verify the example project is actually the candidate's own work?

Problem the 2nd: building and maintaining a non-trivial open source project is a huge investment of time. There are many competent programmers who have a long list of things they must / would rather do when they get home from sitting at a computer programming all day. It's only more efficient if you send out 100s of applications, but as far as I can tell, competent programmers rarely spam 100s of applications. If you're just putting your toe in the water from time to time, taking a day off to do a traditional tech interview grill fest is a much more effective use of your time.

Problem the 3rd: evaluating a large, unfamiliar codebase is actually really hard. All unfamiliar code looks shitty, because you don't have the full context to explain the choices made. Very few people have GitHub pages that actually look good.

> I seriously wonder if we should all boycott dev tests.

Good luck with that co-ordination problem.

Tech interviews suck, for everyone involved. I still haven't heard a proposal for an alternative that isn't fatally flawed. (I consider "take home interviews" to be an incremental improvement on the basic whiteboard problem-solving test)

VLM|10 years ago

Software devs have extremely low social status, despite pretty good pay.

Honestly I'm glad they don't watch "Survivor" and make us eat bugs or do weird obstacle courses. Seriously. You treat people like dirt, they're gonna resent it and complain on HN and some Stockholm Syndrome victims will back up the abusers.

Another example of the low social status is those horrible open offices, like a call center. Ugh.

Another example of immensely low social status is crazy work hours.

chc|10 years ago

Many other fields require competency tests. What other field requires you to do a potentially unbounded amount of free work in the open and give it away to everybody?

Not everybody has any major projects on Github. The lack thereof does not signal lack of programming aptitude. If somebody has done a lot of great work, but it was all for employers and clients, that doesn't mean they would do poor work for you if you were their employer or client. I find that suggestion much more distasteful than having relevant work-sample tests.

ngkabra|10 years ago

Sounds good in theory. But if enough companies started doing this, I can guarantee you that Indian companies will spring that will offer to create an open source project for you for $100 to $1000 depending on complexity of project, and amount of activity the github profile would show. I wish I was kidding.

perlgeek|10 years ago

FWIW most of the other high-payed jobs have some kind of entrance barrier too, usually in the form of having absolved a Univerity-level course and passed the exams.

Anybody can legally claim to be a programmer, so it makes sense for the companies to do some basic checking that a University would have done for them in other cases.

monksy|10 years ago

> What other role requires you to complete an exam to be considered for a job (or even just an interview).

I know of a place in Chicago that does that for a dev job.

joesmo|10 years ago

So you do the test, but you're not guaranteed a position even if your code is amazing.

Hell, in my experience you're not even guaranteed anyone will read it.

This is just a bad idea in an industry full of irresponsible employers. I'm not saying that Triplebyte is in any way irresponsible, but the rest of the industry has already ruined this avenue.

Harj|10 years ago

Triplebyte co-founder here. We understand how frustrating it'd be to spend time on a project and then have no one read it, we won't be doing that. In our process, you schedule a time to talk with us about the code you've written. We'll go through it together and provide feedback.

We're not replacing talking to another person part of the interview, we're just trying to remove the awkwardness of having someone watch you code (for those programmers who want it).

brogrammer90|10 years ago

Only desperate people do these tests. I know this first hand because I've been given a handful of them and can never find the motivation to complete them.

starrychloe|10 years ago

I've wasted too much time on take-home interviews. I'll never do one again. All the contracts I've ever gotten never required one.