To encourage more thoughtful test design (and hopefully save future candidates from the worst offenders), my team compiled the largest library of non-“whiteboard” take-home tests that real engineering teams have used. You’ll find the challenges that Stripe and Microsoft gave to their full-stack candidates, front-end tests from Tailwind and Rivian, and back-end ones from Basecamp and Revolut. Whether you’re looking to evaluate an Android, DevOps, or Data Science candidate, a bootcamp grad, or senior engineer, we found a few options for each.
Having built 20+ tests ourselves, we also rated the design of each test. The criteria for a 5-star rating:
1. Tests for skills highly relevant to those required for the position
2. Includes a well-written description of the prompt and even motivation for using a take-home test
3. Sets clear expectations for candidates (e.g. time requirements, evaluation criteria, submission details)
4. Asks for a reasonable time commitment from candidates (<4 hours)
A few notes: - We found most of these test prompts in public GitHub repos, usually owned by the hiring team but occasionally in the candidate-owned submission. We sifted through hundreds of tests and filtered out those overly focused on algorithms (aka LeetCode), leaving us with 142 tests in the library.
- The larger and more recognizable companies didn’t always have the best tests. Some of the most interesting prompts we found were from smaller teams (e.g. YC startups). This shouldn’t be surprising. Startups need to design candidate-friendly hiring experiences to compete for talent against more established players.
- There were common themes among the tests we found. For example, front-end candidates were often given a Figma design + content feed to implement, while back-end candidates had to implement an API given a set of requirements. Data scientists were usually given a data set to clean, analyze, and submit a Jupyter notebook with their findings.
- We’ll continue to update this library and add descriptions of each test so it’s easier to compare.
Have feedback, or another take-home test we should add? We’d love to hear from you!
[1] The Validity and Utility of Selection Methods in Personnel Psychology (https://www.researchgate.net/publication/232564809_The_Valid...)
I recently interviewed with Ramp and enjoyed their model of practical problems, like a take home, but condensed into just one hour with less of the end-to-end expectations of a true take home.
- Provide starter code and setup instructions so candidates don't waste time on boilerplate.
- Abbreviate requirements to what actually matters. E.g. do you really need 100% test coverage on a take-home? Ask candidates to write a few tests and then tell you what else they'd do given more time.
- Use an open-ended, time-boxed format instead of having end-to-end expectations. IMO a hybrid format where a short (1 hr) take-home is followed by a live discussion/pairing afterward can be the core component of a hiring process.
I'd love to hear more about the Ramp process. Do you mind sharing what sort of practical problems they used?
Hard disagree on this one. Unless your day-to-day work includes many leetcode style problems, you need to put in significant time training on leetcode if you want to pass the interview.
You should be able to complete a take-home based on your current skill set. Yes, it may take 4-6 hours (or 8-10), and yes, that is a big ask of a candidate, but leetcode can take 5 to 10x prep time and you still can muff the interview.
I would accept a 2-4 hour time commitment but only much later in the interview process, when much of the interviewing was done and the list was whittled down to 2-3 serious companies.
"This article summarizes the practical and theoretical implications of 85 years of research in personnel selection. On the basis of meta-analytic findings, this article presents the validity of 19 selection procedures for predicting job performance and training performance and the validity of paired combinations of general mental ability (GMA) and the 18 other selection procedures. Overall, the 3 combinations with the highest multivariate validity and utility for job performance were GMA plus a work sample test (mean validity of .63), GMA plus an integrity test (mean validity of .65), and GMA plus a structured interview (mean validity of .63)"
1. The research is dated (1998). Long before many of the current best practices in SW Eng were established.
2. Says it is based on 85 years of research. Obviously not IT-related then.
3. Even if we get past that it gives 3 almost equally good methods of hiring where the highest one is GMA and integrity test - not work sample test.
4. Even if we get past all that work sample means work sample. It does not have to be produced under pressure in a weekend as unpaid work which as any professional knows is very hard to bring yourself to do right (being a professional means getting paid for my services as I live from selling them). It can very well be some past work on github etc.
So, unless there is a better/more focused on IT/up to date research proving that take home tests (which btw can be offshored/gamed very easily) lead to better hires I remain highly skeptical of all that and big fan of whiteboard/pair programming.
Re: 4 - I'm not sure why you would consider a take home test less valid as a work sample test and then prefer a whiteboard test. Certainly the latter is less representative of real working conditions. (I probably would not want to work in a place where whiteboarding is more representative, at least!)
Your other two points are reasonable threats to validity but I don't think especially strong ones. The research covers many different professions so I think the onus would be on you to explain why software engineering is so different.
Lots of the comments are pointing out a 2-4h takehome is a poor value prop from the candidate's side compared to a 1h leetcode which transfers better across companies. (I'd agree with this.) But a 1h leetcode is usually just a first hurdle to what's often another 1-3 rounds, while for me the point of the 2-4h takehome is that it's the only thing. You do it, we grade/talk about, we can arrange a more formal team meeting if you want but that's the whole process.
Am I alone in wanting shorter interviews but longer tests?
While it's not compilable, I did reach out to a few of the 5-star test designers and asked them this question. How teams use their tests (both in weight and stage) varies a lot, but the well-designed tests usually featured as a central component of the hiring process. They were often given at the stage right before the final round of interviews, but occasionally earlier. The 5-star test designers I spoke with weighted the test heavily because it: 1. helped them reduce bias, identifying great candidates even when they didn't have the backgrounds they expected 2. gave them a foundation for the future interviews. It's less stressful on candidates when they're already familiar with the code being discussed live (because they wrote it!)
Anecdotally, on-the-job performance of the candidates they ultimately hired seemed to correlate with performance on the test. I realize this is very hard to compare against other evaluation approaches though!
I'm not a marketing guy (by any stretch) so maybe my opinion isn't worth much, but I think this is outstanding - provide something already useful, and then invite people to purchase your customized even more useful stuff.
It's always nice to see something well done — kudos!
(You seem to be focused on software development, but if you have anything along the lines of practical math used in a lab/shop/factory environment around machining, mixing, monitoring, testing, etc., It'd be great to hear about it)
I happen to be an Applied Math major and spent years teaching competition math classes, though this was a while ago. If I can be helpful, shoot me an email: alex@trytapioca.com.
Their fatal issue on the hiring side is that they take too much time to properly score.
If you ask a good candidate to work for 4+ hours, they'll produce code that will cost 2+ hours of a great engineer to thoroughly check.
Lots of companies are very fond of giving candidates huge tasks and having them spend 4+ hours on these. But practically no company will have their best senior engineers (a very scarce resource) dedicate dozens of hours per month to check these tasks.
Hence, these tasks effectively never receive the resources required to properly check them. Especially at the more senior level. If you're hiring a senior engineer, and giving them a 4 hour homework task, a staff-level engineer would have to spend 2-3 hours to properly check it.
Forget about it, that's not happening.
Instead, these teams do ask the senior engineer to take 4 hours to work on the task. However, once the hard part arrives, the team will never check it properly. They'll assign some junior engineer for an hour to check it.
The team won't care, because it's the candidate's time being wasted, while theirs is efficiently preserved. Plus, our junior engineers are so amazing, they can certainly score the work of a senior in less than an hour.
My team is doing our best to create the "perfect" take-home experience and reduce the frequency of these horror stories.
But the goal of having a candidate work on a real problem is a good once. IMO a far better approach is to do a live exercise with them. Not a leetcode problem... take an existing codebase and add a feature to it, fix an issue with it, etc. Heck, you don't need them to complete everything, but you just need to get signals on how they approach the task, how they pick up working in an unfamiliar codebase, attention to detail, communication, etc.
Anything to get rid of leetcode interviews that are a collosal waste of everyone's time and lead to awful hires. Over the years there has been a democratization of study material for "coding interviews" which has led to a huge influx of wildly inexperienced/unqualified candidates. It also means if you want to hop to another company, you have to waste months grinding leetcode problems completely irrelevant to anything you'll ever do.
My favorite is a combination: short (1 hr) take-home followed by live discussion/pairing with anyone who does a half-decent job. It reduces stress because candidates will already be familiar with the code (they wrote it!) while being efficient with time.
Problem with take homes is that you can spend hours and then they can spend seconds or minutes reviewing.
At least with traditional interviews the time spent is equal for both parties.
It's usually not malicious, just disorganization. From a hiring manager's perspective, it's too easy for things to slip through the cracks. When the volume of candidates increases, it's hard to keep track of all the zip file submissions + individual repos while making sure the eng team reviews them all.
This is one of the problems my team is hoping to solve through software. So far, we're seeing teams working with us getting back to 100% of candidates (often with personalized feedback), with median times as fast as 1 day. I hope we can reduce the frequency of terrible take-home experiences.
Take home tasks incentivise candidates to burn as much time as possible on the task. Consequently, they are a test of who is willing to put a week of work even when the instructions say it should not take more than 3 hours to complete.
I prefer pair programming with the candidate on the premise that if I ask you to spend 2 hours of your time it is only fair that I also spend this time with you. And also give you a chance to learn about me, your future boss.
Not to mention I can learn more about you working with you for half an hour than I would ever learn by studying the code you might or might not have written yourself.
(I'll note that I have no problem pairing in real-world work scenarios! I love discussing problems with my team. It's the artificial pressure injected by the interview process that really gets to me)
I don't have issues with whiteboarding and pair programming with my current teammates. I can speak up and have enough confident to do. But its not the same in an interview situation. I prefer take-home as well.
+1 Vote
I did a one hour take-home for my current job. I could see someone taking 2-3 hours on it if they were really rusty, and I think that is a good thing because rusty developers can be very good once back up to speed in a language or domain. Live programming wouldn’t give them a chance.
Yes, it is stressful. I try to make interviews less stressful but I also believe ability to perform under stress is a desirable trait. I have been presented with many stressful situations in my past where I had to deal with high stakes, difficult problems on a short notice, with important people watching my every move. Like dealing with an outage that incapacitated an entire national bank and was causing a loss of about 50M USD per day.
Now, I am mostly interviewing senior devs, team leads, tech leads, etc. I would be much more lenient with junior roles but I just don't have time to interview everybody and I also like to give the chance for other people to work on their interviewing skills.
I’ve done multiple different takehomes with some kind of time limit in place to avoid that sort of thing. Tools have this built in.
Also, there are definitely candidates who would prefer a takehome. If you’re worried that a takehome might be unfair, you can offer folks a choice to either do the exercise on their own async, or to do it live pairing with you. You might be surprised by how many will choose the former.
1. Bring some work that you did previously (>4 hrs) and we'll discuss it.
2. Complete a 1-hour take-home.
3. Complete the 1-hour take-home live with one of our engineers.
He said that 98% of candidates chose option #2. I was surprised at how high it was!
If a candidate chooses to burn a whole week working on it that can be safely left up to them I think. But a take home test is not unfair because they decided to burn that much time on it. It is an attempt to let them give the clearest most accurate signal of their skill level and approach to problems. I would argue that not even pair programming accomplishes that as well as a take home assignment.
Or, they don't even do the task, but pay someone else to do it for them, so eventually all these take-home tests just go to the same set of expert test-takers who already solved all these tasks. Very efficient, and also worse than useless as a screening tool: the dishonest candidates most willing to cheat will score the highest.
> If a candidate chooses to burn a whole week working on it that can be safely left up to them I think. But a take home test is not unfair because they decided to burn that much time on it.
Of course it is. Worse: it creates adverse selection, from the interviewer perspective.
Top candidates who are looking for their next job while working a demanding full time job will not be able to dedicate more a minimum of time to each of the many take-home tests they are asked to do.
Meanwhile, desperate poor candidates will dedicate x10+ the time (or simply cheat) to pass.
So as an interviewer, you'll end up passing the random desperate candidate who somehow got through your earlier screening, and any good candidate with multiple other options and commitments will submit work that looks far inferior.
We’re just gonna run with the assumption that anyone who’s applying for a job has their own development machine.
1.) You can treat it like pretty much any other engineering job and give a "normal" interview, which will vary a lot by company. You probably rely more on credentials than is sometimes the case with software development.
2.) You treat it more like writing, graphic design, video, photography, etc. and expect to see a portfolio. For fields like that, you might talk about thought processes or how they approach their work but the portfolio isn't really negotiable.
3.) In the case of software, you can maybe have someone effectively create a portfolio for the interview but now you're back to someone putting a lot of time into creating something--albeit possibly something reusable.
I don't like take home tests either, but the point of them is removing the bad candidates from the pipeline so that people who interview them (often ICs, and these are some of the biggest expenses within the company) don't waste time on someone that is unlikely to be qualified.
Personally when I'm interviewing and I get take home tests I choose my battles. I only do them if I really want the job. If it is worth my time.
It's unfortunate, but take home tests are a necessary evil until something better comes along.
All kidding aside, the efficient thing about resumes is that you write them once and use them everywhere. Coding samples are inefficient because you have to take 4h to write one for each company.
Edit: the other problem with takehomes is that it self-selects the people who have scarce-enough opportunities that they find it worth their time to do them.
I've also interviewed people using both live and a take-home review, and don't have much of a preference there. If the former, I can poke your thoughts in realtime, give hints, etc. If the latter, I get to deep-dive into some of your design decisions.
I applied to Dropbox some years ago, and the coding test was an NP-hard problem: https://en.wikipedia.org/wiki/Rectangle_packing
That's the problem. I think everyone is too focused on technical prowess and forgetting something just as important which is written documentation and explanation.
Pair programming has the downside of selecting people with good interpersonal skills and will tell you nothing about quality of code delivered.
A good middle ground I believe is simple takehome tasks with focus on documentation that could be done in no more than two to four afternoons.
>and will tell you nothing about quality of code delivered.
These statements seem a little contradictory or I'm misunderstanding the context.
Real world challenges needs time to think, often time to refactor after initial working prototype. A take home allows that.
Also the candidate is already relaxed in the pair programming session because it's a familiar codebase. You'll get signal if they didn't write it or wrote something they didn't quite understand.
Has anyone ever asked you to code for them, instead? So they could learn about you and how you deal with problems? Have they asked how you deal with situations under stress? Or maybe they never did so because they were never comfortable enough to do so, since they were in the spotlight?
I loved giving live code sessions, the more open-ended the better. Give an objective, explain there's no wrong answers, answer all questions, give answers when asked, keep it simple, and gauge response. I found it exposed attitude and knowledge.
Love that your approach focuses on understanding thought process! IMO many companies focus too much on raw technical skills, when softer skills like attitude may be more predictive of on-the-job performance. My team is working to elicit the same signal in a take-home format (since it's more scalable), but I think the best is a combination of the two: short (~1 hr) take-home + follow-up live session on the work that was already started.
How do you feel about take-homes that have an enforced cap at 60-120 minutes to try to remove the competition on time investment?
Do you learn more than it's possible to learn asynchronously? Most take-homes only have candidates write code, but it's possible to understand a candidate more deeply by asking questions about, for example, how they approached the decisions they made.
I agree with you that if the candidate is going to spend the time to do the exercise, the hiring manager should be spending an equal amount of time as well in the process. But that effort can come from the detailed review of the code, the time commitment of which should be in the service of being able to have a meaningful conversation about the candidate's submission in later rounds (which is useful for your last point about discovering what its like to actually work with the candidate).
You're going to learn little to nothing regardless of whether you're face to face or not. Modern interview processes are an exercise in feeding the other side things they want to see/hear. I'm a firm believer that good fit cannot be determined until the candidate has been in the seat for a month or so.
I don’t find it useful to evaluate whether or not a potential hire can map and reduce a list in JavaScript or fix some silly react bug thags so obvious it hurts. Seeing how they approach real problems, architecting solutions on the fly etc are things I enjoy doing but I’m not as much on the hiring side so YMMV
Would be interesting to hear which kinds of tasks you use in a short space of time.
Also, one company had me do a SQL take home which I thought was amusing because then one of the employees nit-picked all the SQL code which I hastily wrote because it was already a risky time investment, even though it was a Python job and I'd likely just use an ORM.
I would argue that a truly qualified interviewer should be able to have a dialogue where they ask you very pointed questions and give you maybe a 20 minute coding problem. If they're not satisfied, they should invite you back for another interview. The major drawback of take-home tests is they are usually very subjective and huge time investments.
I ultimately got 3 job offers, got to the final round at 3 others which had take homes, and accepted one at a FAANG company who didn't use these poor interview tactics but to each their own.
at least with a take-home exercise, i can take my time, do in a few hours, without the pressure of having someone looking at what i'm doing.
How does this sound? I have no idea if this is ideal but so far we didn't hire any more bad candidates than we did using a different process
- There is no reason to take them and this process will slowly fail over time as companies who adopt these policies slowly push away talent options.
- You are not the target audience of a take home assignment hiring process.
I think it's easy to believe the first since it affirms your world view. Speaking as somebody who has a deep pocket of job opportunities and has taken one of these take home assignments, sometimes those opportunities become stale or you're in a tough market or need a job immediately. A number of companies who have bad hiring practices are still fairly acceptable to work at, even if it's not ideal.
TLDR - to pay the bills.
When macOS developers write in CSS "overflow: scroll;" they get the same behavior as they do with "overflow: auto;", but they don't realize that viewers on Linux and Windows now see ugly default operating scrollbar at all times, especially ugly when the dropdowns aren't supposed to have horizontal scrolling.
Test web software on two browser and two operating systems :)
I also think there's a surprising number of edge cases that need to be considered for this challenge. Consider cars that were already parked at the start of the time range, ones that were entered during the range and never left, etc. So I think it does require familiarity with SQL.
Did you disagree with the tagging, the stars, or both?
at least make me _want_ the job before you start placing demands on my time and those of who I might provide as references.
Goodhart's Law will basically apply to any exam under capitalism: "When a measure becomes a target, it ceases to be a good measure."
If these jobs didn't offer more compensation and prestige than other positions, matching candidate competency to job requirements would be much more achievable, but as it is now, it's an adverseal system that demands gamification (because when any candidate plays the game, if you don't, you are actively harming your material conditions with a lower position and smaller salary)
Whatever is closest to the real skills you need will makes it harder to improve at the measure without also improving at the real job skills. At least that would be the dream.
Would love yours, or anybody else's feedback on our problems. We do care about them, and wrote about why we use homework here: https://adhoc.team/2018/02/26/why-we-use-homework-to-recruit...
2. The library is organized and the prompts are generally clear and explicit about the requirements to complete.
3. You offer support for candidates with questions about the assignment.
4. Kathy Keating told me about the grading environment you all use with rubrics, blind grading, and rotating cohorts of graders. We actually created similar tooling for the teams we work with.
I also want to explain why they're rated as 3 stars (and why I think this undersells how good they are). When we designed the rating criteria, it was really important to recognize tests that could extract hiring signal without requiring a ton of time from candidates, since that's one of the biggest issues that candidates face. So one of our criteria was "setting clear expectations for candidates (e.g. time expectations)" and another was that the time requested was "reasonable...(<4 hours)". So a test that stated upfront that it would take 8-10 hours would meet only one of those criteria. You can see the full rubric if you hover over the "5-star scale" text in the sub-header.
Unfortunately, the Ad Hoc tests don't specify time anywhere (technically missing both of these criteria) while doing many other things well that aren't captured in our rubric (e.g. candidate chat tool, blind grading). I admit that our rubric isn't perfect and it feels like the Ad Hoc tests are being doubly penalized for something that's easy to fix. In fact, if you add this to the tests, I'd happily update these to 5-stars.
Finally, if you're up for a chat sometime, I'd love to meet you. I really appreciate the work that your team has done to improve the hiring experience for candidates beyond those at Ad Hoc! You can reach me at alex@trytapioca.com
---
Every interview process will inherently be a flawed one. Having hired several hundred engineers in my career, I believe that it is essential to try to create an interview environment where candidates feel they are given the best possible chance at showing their potential.
There's plenty of bias in engineering already that puts women, people of color and minorities at a disadvantage - and this shows through how most companies approach engineering hiring.
In one of my previous roles, we looked at who made it though to subsequent interview rounds and found that we favored candidates with very similar backgrounds to our own. More than we had thought, as it turns out, than we believed going into the analysis. Our solution to reducing this bias up front was to design take home assignments that tried to resemble the day to day job as much as possible, and with measurable criteria for what we wanted candidates to cover to determine their experience and skill.
It took a tremendous amount of work to get this process right, with a number of iterations to figure out the right balance for how much time a candidate should spend on an assignment and how much of day to day work our engineers should allocate to evaluating candidates.
Over the course of two years, we were able to achieve an almost equal split between women and men being hired into our engineering organization, less employee churn and a generally more vibrant workplace.
Take home assessments aren't a silver bullet, and they don't address every piece of the hiring puzzle. I do, however, believe that they are much better positioned to help interviewees perform at their best in an environment they feel comfortable in. This is especially true for people who today are less represented in software engineering roles.
At the end of the day, take home assignments are one part of a larger toolbox of tools companies must make use of to hire great people. Just like any other approach, take homes can be abused or misused, but I think they deserve more attention than most hiring managers give them.
Use them, or don't. Just make sure you hold yourself accountable to your own bias and try to reduce it so you don't miss out on great talent that don't fit your predefined view of what a great candidate looks like.
I've taken some of these – shocked that Algolia's made it to a 3 star. Look at how much work this is: https://github.com/algolia/solutions-hiring-assignment
FWIW my team believes that test designers should strive to scope tests to no more than 1-2 hours (ideally 1).
The reason why there aren't any 1-star tests isn't because they don't exist, but because we didn't think anyone would want to see them. Cataloguing these was a ton of work (we sifted through hundreds of tests). Including the 1-star ones seemed like it would only shame companies who used them.
This vicious cycle of wasting time must stop.
Also, WTF is this about?:
> Important: Do not fork this repository to create your assignment. Doing so will wake a bot that prints out your code, immediately sends it to the shredder, and archives your application in our applicant tracking system. And anyway we’d rather give everyone an equal shot to show us what they can do.
They want you to host it on GH Pages later on in the instructions, so what's the point of this restriction?
One of the ideas my team brainstormed is to create and maintain a library like this that engineering teams can rely on.
And my experience was more or less like that with all unpaid take home tests. So, bitter truth is I have more to my life than doing boring unpaid work with minimal chances of getting to an offer and TBH I doubt I'd enjoy working in a company that hires like that. So, my stance is give me as much whiteboard or pair programming or whatever _time_bounded_ test you want and let's go from there.
PS: I looked one of the tests. It said "follow SOLID". I'm not gonna say what I think of SOLID here but it's good that they say what they adhere to beforehand. I mean if you're going to have people pouring hours and days in your tests at least be transparent of what exactly you expect.
>"Just fyi, this submission make up to 50% from your overall hiring score. While your CV only make up to 5%. So do your best to create great submission!"
>"UPDATE (2022-02-05):
Due to many great candidates have applied to this vacancy, we decided to close this challenge on Friday (2022-02-11). So we will wait for the last submission until Thursday (2022-02-10) at 23:59 WIB." [1]
This is like a cattle call audition with a hard deadline. Who would do this? Also there is absolutely no indication of how much time one should spend this. I'm guessing this is intentional. If you want to give me a deadline there better be pay involved. I hope people are smart enough to call BS on these companies. Hopefully a company making demands one's time without compensation is a huge red flag for people.
How do you figure out if they're top candidates?
First we did screening & technical interviews to arrive at our 5-10 most promising candidates
Right, so we're back at square one doing "technical interviews" again.
We shared a hiring bounty with a dozen applicants purely based on their resumes, never spoke with anyone on the phone, received 5 PRs, awarded & hired 3 of them.
This creates a win-win incentive because it would become standard in our industry to have a portfolio of GitHub contributions, a stack overflow profile, etc. At least those artefacts are helpful to a wider community as well as showing your abilities.
Couple this with an open ended technical conversation with the engineer, progressively drilling down on items they know about to see the depth of their skillset, you will understand the key skills they can present for the job opportunity.
And no I don't think you can put any incentives anywhere to get that code onto a Github repo, nevermind a public one.
When is Musk finishing that rocket to Mars?
My frame is always "I'm a professional meeting another professional to see if what I'm selling is fit for what they're seeking to buy, and at a fair price." You can imagine my shock when the interviewer's frame is something like "Do this work for free to prove to me you're worthy." Sorry to burst your bubble, but I have nothing to prove, my friend.
I like to put things like this in mob terms because it distills things down to their simple essence. Mobsters are all about essence and simplicity. No Bullshit™. This humbles the nerd. Here:
>You like steak? I deliver steak. I could deliver you steak. At a good price too.
https://www.youtube.com/watch?v=ii5CiYxwuMo
That's it. That's the essence of the ideal interview. Two professionals having a conversation. No Bullshit™. Like literally every other industry. I'm a respectable steak delivery man and you are a respectable potential client. That's the frame. None of this "prove to me you're worthy" nonsense. When I deliver, you pay. If I don't deliver, you don't pay. Simple as.
>Before I hire you as a plumber, I just need you to install a section of piping free of charge, because I don't trust you or believe who you say you are.
Sounds ridiculous, doesn't it? It is. You'll be installing your own pipe with this attitude.
There's already a great deal of asymmetry in the hiring process. You're getting paid to interview me, but I'm not. Let's not make it any more asymmetric than it already is.
I understand interviewing is difficult. A lot of this difficulty stems from the fact that many of us in this business are pretty nerdy, i.e. socially awkward, both interviewers and candidates alike. This makes it difficult to probe someone via conversation to see if they'd be a good fit. But difficulty with socializing is no excuse. If you're a socially awkward hiring manager, you either need a different role or need to improve your social skills. If you're a socially awkward candidate, same thing goes for you - improve your social skills.
If a hiring manager tries to saddle you with unpaid work, you tell him "fuck you, pay me". Gabish? Have some self-respect people. The more candidates that set these managers straight, the more they'll be forced to start conducting normal human interviews.
Take home challenges are simply an absurd waste of time and a huge disrespect towards your candidates personal time. You ask them to spend 4 or more hour of their free time on a useless, throwaway excersise that you "review" in 5 minutes and you conclude they're good enough because they laid out code the way you like it... You never see the really important things that you should be screening for: how they explain their approach, their though process, how well they communicate, the compromises they had to make to fit within the timeframe, and why they'd made those compromises, how they react and adapt to changing requirements and feedback...
It's just flawed on so many levels...
As a new Engineering Manager I've eliminated the take home challenge in my new company in favour of this process:
- You have open source code or closed code that you can show? Walk me through it. Our best engineers passed the interview this way.
- You don't have code to show, 1 hour live coding challenge, focus on communication, search want you want online, ask us any questions, and explain what you're doing.
We had about 40 such interviewes this year, one person refused the live challenge, 11 passed this stage, and we ended up with 7 hires accepting the offer.
If you lack inspiration, use this: https://github.com/guardian/coding-exercises
So now you've put candidates through a silly "live coding challenge" – offering an advantage to the sort of person who is chatty and communicative with strangers in a stressful environment and the expense of people who may be better engineers but slower to warm up.
I really wish folks would be way less dogmatic about this stuff. Every single time I see someone say "take-home exercises are bad", their proposed alternative is also critically flawed.
But I disagree it's _equally_ flawed. The time investment from a candidate is significantly smaller at the cost of more time investment from the employer's side (aka my side). Personally I consider this a reasonable trade-off.
I have a big folder on my computer of homeworks I've finished for various companies over the years. If I recall I passed all of them, it's sort of annoying that I can't simply hand over this list of other projects I've passed and say "here, all of these companies thought this was good".
What I like about your proposal is that if many other companies did it, the result would be every few years I should take a month of evenings and build out a cool project for myself demoing my ability to write code. If life gets to busy, it's fine if the project ages a bit.
This way you can scratch a personal itch and prep for interviews all the same time.
There will always be a few who say no (IMO this could be a warning sign), but it doesn't hurt to ask :)
Why not?
Put them in a repository, and in your cover letter when applying to a new company paste a link to it, and say exactly that.
It's your code after all.