Are people having success with hiring based on problems like this? I've seen it at Dropbox, Facebook, Bump, Quora (and many others). While I agree that it would remove the chaff from the job submission pipeline, does it fill it with enough quality candidates to make it worthwhile? I know in at least one case where I played with a problem that the "easy" solution was not appropriate at large scale and it wasn't worth the time to spend the time researching the problem space for an optimal solution.
Anybody else have experiences either positive or negative on the hiring from (candidate or employer)?
I did this once when considering applying to ITA. I got bored in the middle of the puzzle and went to work for someone else instead.
(They wanted me to do, "using any language, write an IRC-like client and server". 10 lines of code these days, but still not interesting to do for free.)
I work at ITA and review puzzle submissions. I can't say what practices were 10 years ago (before we had our first customer!), but I would be shocked if this happened today or even several years ago when I joined. All of us did a puzzle to get an interview and we respect the time and effort it takes.
ITA probably had their first customer by the time, as it was already prominent and a success story in Lisp community. I must be misremembering the exact year.
Anyway, no biggie. The puzzle was among the simpler ones (solving a maze iirc), and I was mailing out tons of job applications at the time - with low expectations for each individual one.
And presumably instead of hiring you, they hired somebody just as capable but with a higher tolerance for solving boring problems for insufficient pay?
I think these are good ideas to get a different view on candidates who love problems like these or see one that they are willing to do the problem set research about, but for this reason, should not be a "requirement" for candidates.
I actually had a bit of fun doing a challenge problem for Bump (although I was in school at the time and admittedly had a bit more time to spend).. It felt like a more sensible assessment than a resume or some simple fizzbuzz problem would provide, as well.
Although I didn't read it until after I had created my solutions, I found Andrea Lodi's paper [1] very interesting. It wasn't quite the approach I used, but it's a pretty thorough explanation of the problem and possible solutions.
While this does put a higher bar up that needs to be passed by quality candidates, I think the true benefit is that if you want the job you'll spend hours on a problem - which means they know each candidate really does want to work there (unlike those who generically spam tens of companies).
I wonder if the fact that people find this problem and bother to answer it, regardless of the results they get, is proof enough that they should pass an initial screening, considering the way most companies say that 90% of candidates are just spamming their resumes to everyone.
I'd love to know how well this is working for them.
I think the first problem is easy to solve inefficiently but finding a very good solution takes an inappropriate amount of time. The second problem is rather boring.
Perhaps asking open/creative questions makes more sense? Here's some ideas
- Write a script that saves you at least one minute of time every day
- Draw a picture of the future of the internet/technology/whatever
- Build a tool that amplifies people's need for cloud storage
I'm guessing they need people to solve the sorts of questions they're asking, so filtering out the sort of people who find those problems "boring" or "takes too much time" probably makes a lot of sense.
Your questions would be more useful if you're looking for more of a high level concept architect rather than a low level algorithms hacker.
I think the second problem is much more interesting, because the first one can be judged pretty objectively.
The second one is more about trade offs.
Assuming optimal coding, "better" output means more complex code, and means lower performance in terms of processing time and memory usage.
For example, you could write a very complex version that tracked the lifecycle of a file by it's name, and "folded up" the manipulations into a couple of lines of output.
This would be more complex, slower and bug prone - but more human readable.
A test like this is a very interesting way to understand someone's programming taste.
I wish they included more sample data for the 2nd problem, Events, as that has a lot of potential - especially if the allowed single readable lines for multiple actions (instead of one)
This just looks like a way to screen candidates that are competent. Of course they will interview each candidate to assess passion, but they need to make sure they're at least technically competent.
Hilariously, their output for the packing problem is wrong. Oops! an 8x8, 4x3 and 3x4 set of rectangles cannot be easily packed into an 8x8 square without resorting to ... the third dimension ... (cue music)
I'm actually not sure what the 'correct' answer is to their given problem. The problem statement says "Files can be rotated 90° if it helps...any files sharing dimensions should be considered identical/interchangeable." That could mean that 3x4 and 4x3 are identical boxes. The final area would still be the same (88), but the given ascii drawing output would be incorrect.
"""Bonus points if you can draw pictures of the winning configurations along the way. While drawing pictures, any files sharing dimensions should be considered identical/interchangeable."""
Note in the sample output they have 4 "distinct" configurations for the minimum size (really they're all the same, just rotated). If the two small boxes weren't identical/interchangeable, there would be 8 configurations (4 pairs of two, and each pair would be indistinguishable from eachother without labeling the small boxes A and B).
Anybody else have experiences either positive or negative on the hiring from (candidate or employer)?