But there is a problem. In the past when I have worked on take home challenges which usually take 3 hours or thereabouts, I have done them in 3 sessions of 1 hour each in the evening after work:
1 hour: think about the problem in detail making some notes for scenarios, edge cases, high level API design etc 2nd hour: first rough cut working draft with some test coverage 3rd hour: polish it up with more tests, docs, a README and sending it out.
I think `takehome.io` should account for time boxing across multiple sessions, else it might be pretty much useless for working engineers who do it across time boxed sessions :-)
PS: I apologize in advance if you already have this feature, but is not so readily evident on your product home page.
I don't have that feature, because I would argue that a problem you attack in three 1 hour stints across a span of 72 hours is a 72 hour problem.
Writing software is so much more than just typing. I tend to do my best coding in the shower or driving, nowhere near a computer. As soon as the challenge has been loaded into your brain, the work starts and the timer starts. How much of that time you spend in front of the keyboard is up to you.
Incidentally, I also think that a time limit of longer than an hour is probably too long. Uninterrupted multi-hour blocks are pretty hard to come by. Even if the time limit given isn't enough time for you to complete a perfect, working solution to the problem, it should be enough time for you to do enough work that we've got something meaty to talk about in the next interview.
It can be done in 2 hours in the most simplistic, undeliberated way using legacy practices, but 8 if you're a perfectionist. Come in somewhere in the middle, but stop at 4 hours no matter where you're at.
I don't even require that the exercise is completed, but I want you to speak to your thought process and where you went/were going when you hit the 4 hour mark. The ability to understand our space, make good decisions, and show progress toward executing on them is ultimately what matters in the end.
I don't mean to shill, but I think it'll be a great fit for you.
What are your thoughts on timed coding problems like Codility or Hackerrank?
My contention is that it doesn't matter if the time limit is unrealistic (within reason) so long as it's consistent.
ie: the challenge is not "Show me the best solution to this problem" but rather "Show me the best solution to this problem that you can achieve within an hour".
As long as everyone is under the same conditions, the playing field is level.
It's part of a holistic approach, too. The coding challenge is not the only part of the interview process. I suggest that there be an initial interview to assess experience, fit, explain the job, etc. Then if everyone is still interested, the coding challenge. The candidate's response to the challenge then forms the basis for a discussion in another, technically focused interview.
It's not about saying "You gave the wrong answer" but "Talk me through why you solved it this way" and "If this criteria in the challenge changed, tell me about how that might change your response"
The Codility and Hackerrank style problems are okay, but I don't like how constrained they are. I also think it's pointless having someone outside your organisation grade the results. What matters is not having a candidate who is "the best hacker" but having someone who fits what you need. If your team values robustness and debuggability above all else, you _don't_ want someone who can punch out 3 kinda-right prototypes before lunch. If you're an ideation agency, the inverse is true.
That's why takehome encourages companies to create and administer their own challenges rather than the samples. They should fit the kinds of problems your organisation faces, not contrived ones.
I like what you said about the importance of companies administering their own challenges as well. I've encountered some like that and they do tend to be a better reflection of the types of challenges and problems the company is facing.
The author raises that point:
https://www.fullstackinterviewing.com/2018/02/02/the-ultimat...
But takes the wrong view on it in my opinion. The answer simply can't be "Just spend as long as it takes".
That point is the thing that led me to build a tool that enforces time limits on challenges via a custom git server. I used it to interview around 100 candidates at a company I was running at the time and it was an excellent approach.
I've since productised it as https://takehome.io/
If you want the benefits that take-home coding challenges can bring to your hiring process, but are concerned about treating your candidates humanely, I urge you to check it out.