Toptal, as my first remote working place (plus interview experience from a non-native English-speaker developer)
Tags: career, webdev, productivity, motivation
Published: 2021-07-01 19:53:09

## Table of Content
* [I. Preface](#i-preface)
  * [1. What is Toptal?](#1-what-is-toptal)
  * [2. My background](#2-my-background)
  * [3. Motivation](#3-motivation)
* [II. Preparation and Interview process](#ii-preparation-and-interview-process)
  * [1. Round 1: English Communication](#1-round-1-english-communication)
  * [2. Round 2: Online Coding](#2-round-2-online-coding)
  * [3. Round 3: Live Coding](#3-round-3-live-coding)
  * [4. Round 4: Test Project and Review](#4-round-4-test-project-and-review)
* [III. Experience in The Network](#iii-experience-in-the-network)
* [IV. Round N: Continued Excellence](#iv-round-n-continued-excellence)

## I. Preface

### 1. What is Toptal?

Toptal is an exclusive network of top freelance software developers.

They have a challenging interview process.

### 2. My background

I'm a software developer, have spent most of my time working with JavaScript ecosystem.

I'm a non-native English speaker. All I could do with my English skill is to read documents, send messages. I was shy and not confident when speaking English.

### 3. Motivation

Challenge self's limitations and pursue to be a software developer who could work globally.

## II. Preparation and Interview process


> A goal without a plan is just a wish


### 1. Round 1: English Communication

#### Overview

A quick 10 to 15-minute introductory call with a talent specialist. This round will mostly test your English communication skill.

This round would be easier for native English speakers or people in countries that use English as one of the main languages.

#### Preparation

Self-acknowledgment:
- I am a non-native English speaker.
- I am not confident in my communication skill.
- I already have basic grammar and vocabulary.

Do some tweaks on mindset:
- The whole purpose is to be able to communicate.
- This is not an English competition, neither an IELTS/TOEIC/.. exam.
- Think of it as a normal conversation with a foreign friend, the goal is to make him/her understand what I mean.
- Treat English as a tool of international communication.

Practicing plan:
- Prepare resources (courses, books, 3 items at most) before plan kick-off.
- 15-day plan, 30 minutes to 1 hour each day, half on course, half on practicing speaking.
- On practicing speaking, some suggest that we should do it publicly, but I prefer to do that privately in my room with the webcam on because I would laugh at myself when I failed to pronounce any tricky words. I found joy in those moments.

Resources:
- Lyrics of my favorite songs.
- [Practice Makes Perfect: English Grammar (book).](https://amzn.to/3dy6H9b)
- [Practice Makes Perfect: English Conversation by Jean Yates (book).](https://amzn.to/3qIHsGG)
- [Speak English Professionally: In Person, Online & On the Phone by Georgia Institute of Technology (Coursera course).](https://www.coursera.org/learn/speak-english-professionally)

#### What happened?

The interviewer was friendly. She introduced the company and asked me to introduce myself, my working experience.

I tried to speak at a medium speed. For some words, I could not pronounce them correctly, but I made sure that she would know what those words were.

There were two times she could not hear me clearly and asked me to repeat what I had just said. Overall, the conversation went well.

After the call, she sent me an email about the next round. I asked her to delay that round to 2 weeks after, so I could prepare more carefully. 

### 2. Round 2: Online Coding

#### Overview

A 90 to 120-minute online test, there are 3 to 4 coding questions on the test, one thing to keep in mind - it is algorithmic.

Coding platform would be [Codility](https://app.codility.com/programmers/).

#### Preparation

Do some tweaks on mindset:
- Focus on Correctness (naive) solution first, then Performance solution later (for challenges that require optimal solution).
- Don't be fantasy about the term "algorithm", think of it as a tool to solve problems.
- When I could be able to implement the naive solution and saw that it needs enhancement to perform better, then applying the algorithm would make more sense.

Practicing plan:
- 15-day plan.
- 2-3 problems, after 30-min reading supplement material (book, articles), every day.
- For solving a problem, if I didn't come up with a solution in under 15 minutes, I would look for an answer and implement it. Understanding rather than memorizing.

Resources:
- [Cracking the Coding Interview: 189 Programming Questions and Solutions by Gayle Laakmann McDowell (book).](https://amzn.to/3hfGbnr) _I digested topics, skipped exercises_
- [Codility Lessons 1 to 10.](https://app.codility.com/programmers/lessons/1-iterations/)
- [LeetCode's Array 101.](https://leetcode.com/explore/featured/card/fun-with-arrays/)
- [LeetCode's Array and String.](https://leetcode.com/explore/learn/card/array-and-string/)
- [LeetCode's Hash Table.](https://leetcode.com/explore/learn/card/hash-table/)
- [LeetCode's Interview Questions Easy Collection.](https://leetcode.com/explore/featured/card/top-interview-questions-easy/)
- [Easy problems on The HackerRank Interview Preparation Kit.](https://www.hackerrank.com/interview/interview-preparation-kit)

Setup local environment for practicing:
- I use JavaScript as my main programming language.
- Create a dedicated folder, create file `index.js`.
- Setup `nodemon` globally.
```
npm i -g nodemon
```
- Watch the file, so I would not have to run node index.js every time I made changes. This saved me time to focus on solving challenges.
```
nodemon index.js
```

#### What happened?

Due to certain non-disclosure agreements, I can't disclose the exact details of the programming challenges.

I read through all the problem statements, focused on the easy ones first. I wrote code on my IDE and just used Codility to submit the solutions. 

I passed the test with a total score of 82%, then received an email from Toptal and scheduled the next round 2 days after (I reserved one day for cooling down).

### 3. Round 3: Live Coding

#### Overview

An hour video call done with one of Toptal's senior developers. you will set up your IDE in my preferred language, will share your screen, and will be solving live coding tasks assigned by the developer.

#### Preparation

*(similar to Round 2)*

#### What happened?

The problems were easier than the previous round, but the challenging part here was to handle a higher pressure - live coding under observation.

I highly focused, imagined that I was still writing code with myself only.

I finished the first task quite fast and moved to the second one. The second one was trickier. I spent half of the given time limit to come up with a solution. Still being on high after finishing the first task fast, I made the mistake of wasting my time on a clean solution, then failed to implement it.

Half of the time limit passed, I turned out to be panic but still manage to get rid of the previously failed solution and start writing a messy solution, but I know it would work.

Time was over while I was still on 90% of the implementation. The screener then gave me two extra minutes to finish. Luckily, the solution finally worked. To me, this round was the hardest. It tested concentration, speed, accuracy.

I then proceeded to the final round. I asked the screener to reschedule it to one week later, as I had a national holiday at that time.

### 4. Round 4: Test Project and Review

#### Overview

You will be assigned a test project, and Toptal will give you two weeks as a deadline. You could freely choose your preferred language and framework. Once you finish, you will schedule a time with the senior developer to go over what you built.

#### Preparation

My previous working experience and self-learning effort took the most part in this round.

Strategy:
- Break down requirements into smaller tasks.
- For the back-end, document API.
- For the front-end, list the screens, user's flows.
- Approach: make it work, make it right.
- TDD would be overkill for this, I chose BDD instead (because testing is a bonus, so I prioritized it lower).

#### What happened?

The screener from the previous round gave me a project based on my choice - web application project, full-stack development - which meant I had to cover both front-end and back-end.

I was free to use any technology. I chose React for the front-end; NodeJS, ExpressJS, and PostgresSQL for the back-end. I had 2 weeks to finish it and kept in mind to treat it as a project that I would deliver to a client.

This was the final round, so I was in high concentration. I tried to make progress each day and finished basic features after one week. After, I still use one week left to enhance the flow, handle boundary cases, write some tests, refactor codebase, and sweat for details on the front-end. I submitted the project on the final day and scheduled a review session 2 days later.

On the review (demo) session day, the atmosphere was comfortable. I and the screener had small talks to get to know each other. He was calm and friendly. The session began, I started demonstrating my project on my local machine. The screener demands some small changes, asked me several constructive questions.

The demo went well, and he congratulated me with "Welcome to Toptal".

## III. Experience in The Network

After joining Toptal, the first thing I had to do was completing my profile. Toptal helped me with this. When my profile was reviewed and activated, I could see the dashboard and start applying for jobs of any technology.

The community as well as the Toptal core team members were extremely friendly and helpful. They were always ready to help whenever I needed. I was satisfied and gained more confidence thanks to their effort.

## IV. Round N: Continued Excellence

> It doesn't take talent to practice

I still maintain the habit of everyday practicing. I'm not gifted, so I have to gift myself.

Getting to Toptal is tough, but it's worth the try. If you are hunting freelancing opportunities or first remote working experience, or only want to challenge yourself, give Toptal a shot.

> You can also use my [referral link](https://topt.al/2WczNb) to apply. If you join, we'll both earn a $2,500 bonus once you're hired on your first job.

Feel free to post some comments below or ping me personally if you have any questions.

_**Disclosure:** This post also includes some Amazon affiliate links. I may receive compensation if you purchase e-books from the links provided in this article._