In the spring of 2018 I was working as a senior software engineer at a medium sized technology company in Bangkok, Thailand. I didn't really like it much, I was working there because I was taking a break from entrepreneurship for a while until I could figure out what I wanted to do next.
A colleague of mine told me that his dream was to get into TopTal . I barely knew what it was at the time and when I looked it up, they proudly claimed that they only accepted the top 3% of engineers. No matter if you're the top developer at any of the tech giants or not, I'm sure that is a bit daunting to hear, because who is arrogant enough to claim that they know more than the other 97% out there?
The concept of freelancing or consulting didn't really attract me much from the start. In the start of my career back in 2009 I was working for a web agency, and for a brief period of time when I moved abroad I was also doing a bit of freelancing.
None of my experiences from working with clients in this manner had given me a very well impression of that kind of work, and in my opinion I preferred working on a single product, for a single company (either my own or someone else's) for longer periods of time instead of jumping between projects that I was expecting to be the "Wordpress" type of projects more than real software engineering (Sorry for sounding arrogant to all you Wordpress fans out there!)
But since I didn't really enjoy my current employment, and I still didn't want to throw myself into a new startup project, I thought I'd give it a shot. Judging from their client logos on the website and my initial impression of the level of skill they required of the members of their platform, I thought at least it might be a learning experience, so I send in my application.
The Interview Process of TopTal
The application process is split into multiple steps and it aims to imitate what you would expect from applying to any of the American tech giants such as Google, Facebook, Amazon or Microsoft.
- Phone interview
- Technical Screening/Code Challenges
- "White Board" Programming
- Demo Project
I'd never gone through this kind of interview process in the past, even though I'd read about it. Most of my own work up until this point has been to either Startups or Medium sized businesses that doesn't have as rigorous technical screening as TopTal had at the time, so naturally it made me a bit nervous.
Preparations for the TopTal interview
I didn't just jump into the interview process, instead I took my time and I studied what was expected of me during the screening and prepared for it well.
1. I read Cracking The Coding Interview
Cracking The Coding Interview was a great help in the process of preparing for any technical challenges that I was about to face. You will find a ton of engineers recommending this book and I will do it as well from the bottom of my heart.
It is a book that is very simple to digest, it looks thick and daunting before opening it, but the actual chapter content is only about ~200 pages while the rest is coding challenges and solutions. I both helped me understand what kind of things to prepare for, but also understand why the company might test me on some of these topics and what they were looking to get out of the interview.
2. I build a demo project using Angular and Django
I was planning to apply for a Full Stack position at TopTal, and this does just mean that I was expected to be able to write some HTML, CSS and jQuery, I was expected to be able to fill the shoes of a Frontend Engineer that would build Single Page Applications in modern technologies such as Angular, Vue or React.
Most of my professional experience did not involve these type of modern frontend frameworks and I definitely felt the need to improve my skills on it if I wanted to claim that I was capable to do what was expected of me, so I decided to build a demo project privately for myself.
I build an E-Sport Management Game with a client in Angular and with a REST API Backend using Django. The game itself was not very sophisticated but the main goal was to build interfaces and clients using Angular and TypeScript -- and that goal was easily achieved by this type of preparation.
3. I watched a lot of seminars
One of my favorite ways to learn is to watch YouTube, it's great! And one of the most amazing thing that I've discovered is that all those conventions that you have to either be sponsored to attend, or pay a lot of money out of your own pocket to travel for, uploads all of their seminars to their YouTube channels for the public to enjoy. Sounds awesome?
I doubt that watching YouTube will completely satisfy the need for preparing for a technical interview, but its a perfect thing to do when you try to unwind in the end of your evening and getting ready for bed.
Just search for your favorite convention and I'm sure it will show up. You can find things such as DjangoCon, PyCon, AngularConf etc.
4. I did a ton of Code Challenges
Coding Challenges is the most daunting part of the interview process. As a Software Engineer you might not be very used to implementing a Quick Sort from scratch or working with Binary Trees. All you care about is the HTTP Request/Response Cycle. Right?
The problem is that its quite difficult for any company to get a good feeling of your engineering skills by just asking you what
means, if you can write an SQL Query, or by just listening to you describing what kind of projects you've worked with in the past.
Also, they don't really have time to give you the opportunity to show your skills by building a complete web application. The interview only last for 30-60 minutes and they want to get a feeling of how good you are in an efficient manner. This is where Algorithm and Data Structure challenges comes into the picture.
Every morning that I woke up I went to HackerRank or LeetCode and did a few challenges. I started of with the easy ones and moved up to more challenging ones as I got used to the format. This combined with Cracking The Coding Interview was a massive help for me when it came to preparing for the application process at TopTal.
The Phone Interview
The phone interview is your opportunity to give and get a first impression of TopTal and its staff. You don't have to be very nervous about it because the idea of it is not to be challenging at all, its more of a conversation to make sure that you go into TopTal with the right expectations, and that you understand how the interview process will be conducted.
Personally I had a chat with a very friendly Brazilian fellow who cleared all my questions about the platform, how work was conducted, what was expected of the freelancer who joined, and what kind of companies that outsourced their projects to it.
The Technical Screening
As expected, this part of the interview was the most challenging. This was what I had prepared for by reading books, watching videos and by practicing solving silly problems about climbing stairs or finding strings.
I was given a website link to one of the more popular coding challenges applications out there, and I was given 3 challenges that I had 90 minutes to solve. 30 minutes per challenge, they were all split up in "Easy", "Medium" and "Hard". But in my opinion they definitely did not fit what most of these website rank as "Easy", in my opinion all of them was "Medium" to "Hard".
Unfortunately I'm not allowed to share the exact details of the challenges. But I can tell you that they were the typical Algorithm style that you could expect, however one thing that differed them from what you would normally see is that each challenge was baked in to a story. You as the developer had to read and translate what the challenge actually meant technically, before you implemented it.
E.g. "Dan enjoyed rhyming and was trying to figure out if Word A and Word B rhymed". It did not say "Write a function that look if 2 strings end with the same characters". This meant that solving the problems were not as straight forward as on some of the examples that you might have encountered when preparing for the interview. You really had to think before you wrote the code.
I suggest having pen and paper available to you when you come to this stage in the interview so that you can easily illustrate quickly for yourself, so you don't waste any time.
In the end I was semi happy with my results. I was confident that I solved one of the challenges with the most optimal solution, but the second one I felt that I came up with a sub-par solution for and I had to move onto the third one before I ran out of time.
A few hours later I received an email that informed me that I had passed to the next stage... YES!
White Board Programming
The next step of the interview process is very similar to the previous one. But now instead of just solving programming challenges on a website, you will do it live in an interview with a TopTal representative who will be monitoring you while you're doing it.
As if you are not stressed and nervous enough already... :). On top of that, you also only have 15 minutes per challenge unlike the previous step where you had 30 minutes.
On the positive side though, these challenges were much easier than the ones in the previous step. I guess that due to the shorter time limit and also the increased stress level by having someone watching over your shoulder while you're typing away, they thought that smaller, simpler challenges will be a better fit.
In my opinion all of these challenges was quite easy, and I feel that most developers will have a quite easy time to solve these challenges if they passed the previous step. Perhaps its used to weed out people that might have used immoral ways to pass the first set of coding challenges.
The final step of the interview process was to build a demo project. The type of project that you do depends on what role you are applying for on the TopTal platform. Since I was applying for a Full Stack Engineering role I was expected to do a Full Stack project.
As someone who have built many websites and projects in the past, this step was relatively easy for me, however I was surprised by the large scope of the project. This was much more than just a simple website and it expect that it took me about 40 hours of work to do the whole thing -- which is a significant of time invested into an interview while you're also working full time.
I spend my evenings and weekends building a Single Page Application and my preparations where I build a Angular project with a Django API backend was a great investment of time and it made the whole thing a breeze.
One thing to note though is that TopTal expects you to make a production-level demo. You cannot skip on things such as Security, Testing, Bugs and User Interface when you make this demo. You should think of it as if you were working for a real client and an opportunity of how you will perform in reality.
When the TopTal representative finally reviewed the project I was able to hear those sweet words -- "Welcome to TopTal!".