A few days ago I passed the last interview round for toptal.com. Toptal is a platform for connecting freelancing software developers with companies. In this sense it is much like freelancer.com, odesk.com and elance.com, but there is one very big difference: they only accept developers that are actually good.
Their interview process spans four rounds, takes approximately one month, is well thought out, and very effective in my opinion:
- Round one: Skype interview to explain the company, ask about my experience, and explain the remaining interview process. They probably asses the ability to communicate effectively in English in this step.
- Round two: Online coding exercise on codility.com. This one is quite tough, they gave me three tasks with increasing complexity to solve in 90 minutes. All the tasks are *real* programming riddles. You have to choose good data structures, develop intelligent algorithms, and even meet a run time constraint (which is given in Big-O-Notation). However, they explicitly state that it is better to complete two tasks correctly than to complete all three somewhat correct. I therefore opted for making the first two *perfect* with good test case coverage and see about the last task afterwards. I completed the first exercise in 15 minutes and the second one in 60 minutes. Finally, 15 minutes was definitely too short for completing task three, so I just wrote a comment about my solution strategy. (After the test, I almost programmed the solution for task three, because it was actually a very interesting problem…). Feedback came back a few days later by my interviewer as “very good”. I solved task one and two perfectly and was scheduled for round three.
- Round three: Life coding exercise. Two programming tasks are to be solved in a total of 60 minutes, but this time the interviewer was watching my progress live via Skype screen sharing. The interview started with a review of my solutions for round two. I also explained my solution strategy for task three. The first life coding exercise was a simple string manipulation task, however, I did rather badly. I’m not used to do low level string processing in C# and my solution was correct, but unnecessarily complex. The second coding exercise was closer to a real life application, and I solved it fast and elegantly. The interviewer congratulated me and I was scheduled for round four.
- Review of round four: The project is uploaded to toptal’s Git server. In addition there is the last Skype interview where I explained my solution in detail, answered questions, and proved that the RESTful API works using Fiddler. Finally the interviewer welcomed me at toptal and instructed me about the further administrative steps.
And this is how you get onto toptal.com as a developer. Currently I’m waiting for my profile to be approved by an editor, which will also provide me with hints to improve it — yes, they are that professional. If you happen to need a proven developer that also completed this thorough interview process, head over to www.toptal.com. They really know what they are doing.