Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
To apply, solve the following... are you kidding?
10 points by epicureanideal on Sept 30, 2011 | hide | past | favorite | 26 comments
This is about the 4th job I've looked at that requires some kind of boring but time sucking piece of code to be written just to apply...

http://www.codeeval.com/public_sc/12/

What the heck? Do these companies only want people to apply who are not busy or are desperate for jobs?



I'll tell you why it's fair.

A job application shouldn't be a fishing game. The ideal person I want to hire is the person that also wants to work for my company. Maybe there are a few other companies that he likes, but my company isn't competing for mindshare with the myriad of other companies advertising their positions on Monster.

I want hire someone who is competent enough to complete a "20 minute" code evaluation, or even one who can take the time research half a day and figure out how to do something he might not have known the answer to when he first saw the quiz.

I want to hire someone who isn't turned off by a 20 minute code evaluation for the chance of working with me, for me, or at my company.

I also want to hire people I can get along with, who perhaps share my vision, who want to go in directions I expect the company will go, who will be a good fit with the rest of my team, who won't be a pain to work with, and who is competent, capable, eager and motivated to learn, do better, try to kick ass, and always care about the work they're doing and the team they're doing it for.

I want the things in that last paragraph, but there's not really a code eval I can give online that will judge them, so I give you a 20 minute code evaluation to make sure you're even worth talking to so that I can figure out whether or not you are my ideal candidate.

I want YOU to enjoy the job as much as I enjoy employing you, and I don't personally think that someone who is too uppity to fill out a 20 minute quiz before applying is the kind of person I want to hire.


The economics of the situation are such that hoops are rarely worth tolerating during the initial submission.

If you're not Google, I don't have much time for you until you clearly signal to me that there is actually a real job opening, with funding, which you intend to hire someone for in the immediate future, which you have determined that I might be a fit for based on the information I sent you. I don't mind jumping through a few reasonable hoops after I know it's not a waste of my time. If you don't value my time enough to spend a few seconds skimming my letter of interest and affirming to me that you have a real position open, there are plenty of other openings for developers.


Fair and appropriate. I'm clearly not Google, but I am looking to hire people who value my company the way you seem to value Google. If that isn't you, I think we'll both agree that it's best that you don't complete the code eval.

You might be the best programmer in the world, but I'd rather hire a 'really good' programmer that gives a damn about what we do than a 'super awesome amazing rockstar' programmer that doesn't.

That said, since somebody called and asked... No, I am not hiring.


How do you tell the difference between caring about your company and being desperate?


That's exactly how I was looking at it.


This problem is too easy to weed out the good hackers from the bad. Solving it doesn't show that the coder is willing to go the extra mile for your company nor does it show that the coder is any good. It's just a waste of everyone's time.

This company probably thought that since other companies have these types of hoops in place, they need to also have them in order to look legit.


Good and Bad?

This problem is very basic and might attempt to demonstrate the candidate's competency around basic algorithms, data structures, and performance (although nothing was specified about efficiency and this is very basic). I feel like good programmers code all the time and love to solve problems with code. So it seems like the average coder would not have much aversion to something like this.

The biggest issue is that it may not even reflect the domain that the candidate would normally work in. What if this was a javascript job? Would this be a good filter?

As developers, we have access to so much information on so many topics around computer science. I think they are important to know, but they can also be referenced and learned. It seems like an invaluable skill set (at early stage startups) is to be able to "figure stuff out".

For me, the ideal hiring process is to do a quick phone screen and filter by existing code sample, then "hiring" a candidate for the day, have them come in, work on a small project alone for half the day, then spend the other half pairing and refactoring the project. This may seem like a lot, but you learn important things, like if someone can quickly work on something on their own, how they work with other team members, an example of their personality with team and in office, etc.

At the end of the day, I am looking to hire people that "fit" personality-wise and can get sh*t done, groking what they need to and overcoming any obstacles in the way.


  corpus = """

  yellow

  tooth

  """

  for line in corpus.splitlines():

    for letter in line:

      if line.count(letter) == 1:

        print letter

        break


My first pass (assumes input file is an arg):

    import sys

    def first_unique(word):
        if len(word) == 0:
            return "EOF"
        for i in range(0, len(word)-1):
            return word[i] if word[i] != word[i+1]
        return "NA"

    def main():
        with open(sys.argv[1],'r') as f:
            print first_unique(f.readline())


This seems pretty inefficient, as it seems that line.count would be checking the whole line for how many times the letter appears. However, if you're solving in Python I guess efficiency is not really top priority anyway, and they also didn't specify a language or efficiency.


Trying functional:

    import sys

    with open(sys.argv[1], 'r') as f:
        word = f.readline()
        try:
            print filter(lambda x: word.count(x) == 1, word)[0]
        except IndexError:
            print ""


  IO.readlines(file).each do |w|
    puts w.split(//).find { |c| w.count(c) == 1 }
  end


Maybe the companies want those people to apply that a) have the patience to b) actually complete a piece of code that c) gives the company an idea of how good the prospective employee is?


Personally, I wouldn't mind if it was somewhere I wanted to work. Heck, I spend longer than that on the cover letter. When I'm job hunting I'm pretty selective so I spend a lot of time on just a few job applications (research + cover letter). Requiring code makes makes it more time consuming for less focused job searchers but maybe that is the point?


This type of hiring approach strikes me as test for submissiveness, rather than programming ability. The hiring company wants someone who will do as they're told.


err 20 min? It's about a 60 second problem.

<?php $lines = explode("\n", strtolower(file_get_contents("input.txt"))); foreach ($lines as $ln) { for ($i = 0; $i < strlen($ln); $i++) { $char = $ln[$i]; $first_pos = strpos($ln, $char); $second_pos = strpos($ln, $char, $first_pos+1); $is_repeating = $second_pos !== false; if (!$is_repeating) { echo $char."\n"; break; } } }

?>


Also, this solution isn't the most efficient because again you're searching the whole string potentially every iteration of your inner loop. So you've got an O(n^2) algorithm when it could be an O(n) algorithm. If we're dealing with just a short string, fine, but if the string were tens of thousands of characters long and we had thousands of lines, this might star to become significant. Sure, we're not likely to be given that. Maybe I read too much into these problems, but if they're going to give this as a test I assume they actually want to test something like efficiency, readability, etc.


You'd lose points from me here for using $ln instead of $line. One point because you're just shaving off two letters at the cost of making me go "huh, whats that... oh". And then another because it's inconsistent. If you're going to use $ln use $lns for the plural, or if you use $lines use $line for singular. Don't you think? Of course I know this was a quick example but that's the kind of stuff that I think about.


I can't relate. I love little programming problems like these, and I want to hire other people that do as well.


Maybe they're junior positions.


time sucking? are you being serious?


Even if it's just 20 minutes, 20 minutes every time I want to file an app?


The one I see there "first non-repeated character" does not look like a 20 minute deal.


It's 20 minutes because it's for an application. I want to look through it before I submit it, not just slap something down. I actually ended up doing this one just because it was so trivial.


If I were applying I would send them my 1-minute solution, because I wouldn't want them to think it took me 20 minutes to solve.


solve all of them copy paste to other companies

sux-but-work

ps: bonus, you can even just google for the solutions and paste that.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: