I have been traveling around Asia of over 5 months now. I am already packing my stuff to return. However, I am in no rush to return to my natural habitat. Therefore, I have dedicated more attention to the recruitment agencies spam that developers get every day.
The ad that caught my attention was supposedly for a company
backed by the funders of Facebook and Spotify, and founders of Skype.
In response to my CV they gave me a task that reads like this:
Develop a program that, given a series of points (latitude,longitude,timestamp) for a cab journey from A-B, will disregard potentially erroneous points.
Try to demonstrate a knowledge of Object Oriented concepts in your answer.
Your answer must be returned as a single PHP file which can be run against the PHP 5.3 CLI.
The attached dataset is provided as an example, with a png of the 'cleaned' route as a guide.
You will find the original task and my take to solve the issue on GitHub.
The task itself takes 20 minutes to code (or 5 minutes if you don't care to validate the data graphically). However, it took me an hour to research the basics of the cartography. Among the other things, I've learned what is WGS84, Mercator projection and orthodromic distance.
The expected result (preview; on the left) and the generated path.
It is really hard to prepare a good set of questions to test a developer. I've already talked about the issue on Quora (How do I hire the best php programmers?). What I enjoy about this approach is that it goes beyond testing your programming abilities.
Regardless of whether you are a senior or a junior developer, you must have a good understanding of the issue beyond the programming aspect. Developer ought to be able to undertake the project and the research independently. Unfortunately, it is often the case that the developer hasn't got these research skills and it is up to the project manager or the senior developer to instruct him.
Personally, whatever the contract I am under, I enjoy whatever free-will entrusted to me and the challenges that follow. It is a risky, but rewarding business arrangement.