Just as companies use your resume to screen you, you can use their ad to screen them.
I hope that they ran this ad to stand out and be hip.
But just in case the people in this company are like the ad they are running, run, don't walk, the other way from these elitist snobs desperately in need of an attitude adjustment.
I would hijack the ocaml raytracer at http://www.ffconsultancy.com/languages/ray_tracer/comparison..., make 3-d font primitives, and write it out. But I'm a bit underskilled and unmotivated to do anything other than propose it as the ultimate over-the-top answer to the ad.
The best snarky answer to this ad I have seen was someone who proposed running random bitstrings through sha1, looking for a hash that was a repetition of the ascii chars for hello world. The comment on the entry noted that they would not consider taking the job until the company could provide the string which would hash to a successful result.
At first I thought they were trying to be ironic. But they keep it at such a level that I think they're being serious. In which case, I'd definitely run.
Just Google for japh. There are lots of examples, easy to convert.
I'm a Perl lover which argue that with Moose and CPAN, modern Perl is incredibly good for development in many cases.
But I must say that I never understood the idea of obfuscation in Perl. If you throw out coding standards, it is like tennis without a net. :-)
Edit: If I'd done it from scratch, I'd probably have gone with the curses lib, since it was such a long time since I last used it. (The japh stuff represents at least months of creativity by people that are both smarter and crazier than I am. Don't reinvent the wheel.)
Is there anything in the ad that isn't already encouraging its readers to make decisions based on appearance (in this case, that of a fun and elite group of people)?
In what possible way is 'send us the coolest "hello world" you've got, and we'll critique your style' not an invitation to judge by appearance?
Yeah, and in point of fact now that it seems too late to edit my original post I am going to clarify here: this ad definitely works.
I wasn't specifically intending to make fun of the guy's appearance; he looks like a normal 20-something, doesn't look overweight, does look like he shaves regularly, does look like he gets sunlight, etc; it was just that after I tracked the guy down I was disappointed that he wasn't actually wearing a ninja mask in his picture (or whatever).
This ad has succeeded to the extent that it's getting pretty popular on Hacker News and (hopefully) it's attracting the types of programmers they're out to hire.
Assuming that they've got their 'ideal hire' right, it's almost a win-win situation for them: if you hate the ad, you probably don't like their culture; if you love it, you'll apply and you might just fit right in with these "ninjas".
It alienates some but at least not the people they're trying to hire. I'm not saying such a culture's going to be great for them, just that posting such an ad will get them exactly who they want, and some mad publicity as well.
If they want to hire 18-year-old hackers than it's probably okay, but I'm 30, love a fun work environment, and I'm pretty turned off by being so flip about CS. How can you praise a candidate for loving Haskell but be so arrogant to think CS has no value.
I imagine that it has no value to them. They're not out to create any new algorithms/systems/compilers/languages, simply to make proper use of the ones in existing libraries. To put it in the way they'd likely say it: "Ninja don't forge katana."
I don't understand, they don't care about cs principals, rather they want a 'ninja' who is able to write obscure code in languages people rarely use and is hard to understand.
I realize that there are a lot of crappy degree programs out there, but this just plain wrong-headed. CS theory is applicable to anyone writing any kind of software more complex than simple one-off scripts. In fact I would argue that most of a proper CS program is more applicable to more practical problems than 90% of what you do in real world jobs. That's not to say you need CS to be a good programmer or anything silly like that, but the scope of things you learn in a CS degree is pretty much impossible to attain in the workplace without working on an amazing array of different projects.
This is the type of work environment that I would like to receive and offer for and then tell them "Sorry, based upon your application process, your company appears to be a lame place to work."
The job posting seems like something Dwight from The Office would create.
I thought the point of ninjas was often to get things done with maximum efficiency. Thus I believe "echo" is a great solution. Why write what someone has already written for you?
Do they want people who are going to do things in the most impractical and convoluted way possible? If so, I wouldn't recommend betting on them releasing a stable product in the near future.
When I see companies advertising poor real-world ways of engineering, it just makes me think of the documents I make on my projects showing code made by some engineers and how a solution could have been made in half the code (or less), more clearly, more abstracted, more efficient, and fewer bugs.
Do these people use dumb interview questions like asking people to list c language trigraphs? Sure, someone that knows it might be a good programmer, but they might also write obfuscated piles of crap that cause bugs since they over complicate problems.
Whitespace is actually a really easy-to-code-for stack machine, you just need an assembler. Now you too can pretend to be elite.
EDIT: post originally included the compiled Whitespace code, but HN does not approve of that. Fixed the line break problem, thanks to someone reminding me it needs a blank line before and after.
I find the whole idea quite amusing... Reminds me a little of the demo scene back in the day. I put this together with that in mind, simple but I wanted to keep the code neat (JavaScript):
def giveMeValidSolutionSourceCodes(querytext,validator):
for validSolution in (candidate for candidate in findPossibleSolutions(querytext) if validatePossibleSolution(candidate,validator)):
yield {'source'=validSolution.code,'extension'=validSolution.languageExtension}
if __name__ == "__main__":
helloWorlds = giveMeValidSolutionSourceCodes("hello world", lambda x: x == "hello world")
firstValidSource = helloWorlds()
if firstValidSource:
print "helloworld.%s:\n\n%s" % (firstValidSource["extension"],firstValidSource["source"])
else:
print "helloworld.py:\n\nprint \"hello world\"" # default case
''
Edit: if there's a way to reproduce source code please inform.
def findPossibleSolutions(querytext):
for result in GoogleCodeSearch(query=querytext):
yield result
def tryOutPossibleSolution(candidate):
output = None
with SafeSandboxedEvaluatorFactoryFactory(candidate.language).safeSandboxedEvaluator() as evaluator:
output = evaluator.evaluate(candidate.code)
return output
def validatePossibleSolution(candidate, validator): return
validator(tryOutPossibleSolution(candidate))
def giveMeValidSolutionSourceCodes(querytext,validator):
for validSolution in (candidate for candidate in findPossibleSolutions(querytext) if validatePossibleSolution(candidate,validator)):
yield {'source'=validSolution.code,'extension'=validSolution.languageExtension}
if __name__ == "__main__":
helloWorlds = giveMeValidSolutionSourceCodes("hello world", lambda x: x == "hello world")
firstValidSource = helloWorlds()
if firstValidSource:
print "helloworld.%s:\n\n%s" % (firstValidSource["extension"],firstValidSource["source"])
else:
print "helloworld.py:\n\nprint \"hello world\"" # default case ''
I actually find the whole idea quite amusing! Granted it's probably not a great way to get employees who are good at working as opposed to hacking about, but I still like it...
I put my money where my mouth is and sent this in (wait about 6 seconds after page-load for the animation to start):
http://aarongough.com/hello_world.html
Is it just me, or does anyone else think that hiring someone who can't write a hello world app without using one of their "fail" methods is a really stupid idea?
I guess they want to hire a programmer who would refuse to find the simplest solution to the problem but rather obfuscate it, making maintainability a nightmare.
I hope that they ran this ad to stand out and be hip.
But just in case the people in this company are like the ad they are running, run, don't walk, the other way from these elitist snobs desperately in need of an attitude adjustment.
Here's my submission:
digits = [70,85,67,75,89,79,85];
for(i=0;i++;i<7){print chr(digits(i))};