A few weeks ago the guys at Toptal reached me and offered the opportunity to apply to its workforce. I was a little skeptical at first due to the fact that they contacted via email and not the typical LinkedIn message. Before going further I asked them how I was chosen and got my email address, because I didn’t remember signing up or something. They told me about a tool they use, on which I’ll talk in another post.
In case you didn’t know, Toptal is an employment portal that connects companies and freelancers. It’s similar to other on the Internet, like Workana, UpWork and such. However, it has the peculiarity of accepting only the top 3% of freelancers, which is a great distinguishing factor. For a company which cannot afford, or doesn’t have the time for, testing waters with freelancers this means good business. It not only reduces the time for screening the candidates, but also guarantees a minimum of quality among them.
From the freelancer perspective, it’s really attractive working with world-class companies in game-changing projects that are really well-paid. However, it requires having great skills to be a part of this gang. They have a three-step screening process broken down as follows: initial interview via Skype where your credentials, experience and English proficiency is tested, technical exam consisting of a programming test with problems very similar to those found in programming contests, and finally a technical interview with a lead developer or technical leader so they can evaluate train of thought and things that a programming test cannot say about us.
After the first interview via Skype, we receive an email containing a link to the the programming test, which can be taken in the next 48 hours. It’s a set of three problems to be solved in 90 minutes. What I really like is the fact that the problem statements change depending on the selected language (yes, there are also several languages to choose from). The window is split in half vertically, having the statement on the left and the code editor on the right. The algorithm is evaluated in terms of time and memory complexity.
No matter if you’re applying for being a game developer, web developer, or any other specific role, the programming interview tests our algorithm analysis and design. It means always going back to our roots and practicing those techniques. I didn’t pass the programming test and it was a great opportunity to remember that even when the game or prototype works, it is important not to forget that efficiency is king.
I’m not ashamed of sharing this with you, it’s a reminder that I need to practice and study more. It’s a reminder that no matter how much I know about Unity, Phaser or Game Maker features, tips and tricks, it is always important [re]learning algorithm analysis and design.
What to do if we hit the wall like this? Luckily enough, there’s material online to which we can refer to and use in order to get ready for round two:
- Coursera: Algorithms, Part I
- Coursera: Algorithms, Part II
- Coursera: Algorithms: Design and Analysis, Part I
- Coursera: Algorithms: Design and Analysis, Part II
In a next post I’ll talk more about how I’ve increased programming skills, and what you can do in order to avoid making my mistakes. The most important thing is not getting discouraged. Just practice, take challenges, and always learn to make it better the next time.
I’d love to hear from you. Have you failed a programming test or passed with flying colors? Your opinion is important and could help other readers.
EDIT: Thanks to a friend’s feedback, I’ll give you a little bit more about the test in another post.
PS: They told me I could try again in a couple of months, so I’m gonna study to do so and let you know about my improvements.
It’s fine to celebrate success but it is more important to heed the lessons of failure.