No doubt if you've talked with me in the past month or so, I've mentioned something about Toptal, a growing network of freelance developers that I joined. Rather than tell parts of the story to a dozen different people, I wanted to give a complete account to anybody interested, as I may be the only member of the network in Winnipeg.
The story begins in January of this year, when I found myself no longer permanently employed. Coincidentally, my wife and I had also pre-booked and saved up for a long vacation across February and March, and I was determined to enjoy it free of employment-related worry. Knowing that I wanted to try freelancing, I split my time in January between building connections locally, and exploring remote work opportunities, which included Toptal.
The Interview Process
When I initially applied at Toptal, a Skype interview was quickly arranged to see if I was a good culture fit, and as I learned later, to see if I had good English communication skills.
That interview went well, and a timed coding challenge was setup via [Codility](https://codility.com/), wherein I had 90 minutes to try and solve three problems that were intended to test knowledge of algorithms, space and runtime analysis, and proficiency with a programming language of my choice, in this case, Java.
I didn't much care for the Codility interface, and actually used Eclipse and JUnit to solve the challenges using TDD, and copy/pasted them to the submission screen when I was satisfied. I practiced a bit using some sample problems, but they were easy, and I was lulled into a false sense of security. The Toptal challenges were quite a bit harder than the samples, and so caught me off-guard.
I'll admit, after I completed the challenges, I wasn't pleased with how I had done, and went to bed thrashing madly, thinking about those problems. Late in the night, I had then-useless epiphanies about how I could have reduced some linear time algorithms to constant time, and eventually fell asleep. Nevertheless, a second Skype interview was scheduled, and knowing that I had a chance to make up for what I perceived as a poor performance, I was determined to make a great impression.
This second interview involved sharing my screen and doing some gentler coding exercises, but with a live audience and explaining my thought processes as I went. The interviewer sent me expected outputs for the problems over Skype, and I pasted them directly into my test cases, and iterated on my solutions verbally and in code until they passed. The interviewer interpreted the passing tests as success, and we got through the problems with time to spare, which I took as a good sign.
At this point in the process, I wasn't really sure how well I was doing, but was then asked to schedule a hefty block of time for a demo of an app I was going to build. I scheduled that demo aggressively, leaving me only a week to build it, as I was unemployed and had plenty of free time. I figured the tight deadline would provide more motivation to work on it.
The web app wasn't trivial, but it had a very limited scope, and so I felt comfortable picking a mix of familiar and new technologies, including Rails 4, Sprockets, React.js, Bootstrap and PostgreSQL. I then spent the following week falling in love with Rails all over again, cursing Ruby's limitations on Windows, marveling at React's simplicity, and otherwise implementing a delightfully straightforward webapp. All in all, I probably spent three or four days of full time effort building it.
When it came time for the demo, I deployed the app to Heroku and shared a link with the interviewer. He checked that the app implemented the specification, had test coverage, and that it was architected securely and according to REST-ful principles. My knowledge of everything from XSS attacks to HTTP status codes was tested, and while I felt like the demo went well, I still didn't truly know how well I was doing in the interview process.
It was only when the interviewer told me, "Welcome to Toptal!", that I did an unseen dance and began to relax a bit. We then went through various formalities, contractual and otherwise, and a blank profile was created for me.
Starting the Job Search
At this point, I had thought that the hardest parts were behind me, but then I saw the number of blanks to be filled in my profile. It took an entire day, but I managed to add every buzzword, acronym and scrap of experience relevant in my career to my profile. Professional copy editors then put some polish on it, and the end result is something I'm quite happy with.
My only peeve is that I was automatically titled "Java Developer", probably because the majority of my experience has been with Java. I like to identify as a Ruby Developer, but that might be misleading, and given the amount of Android work available, detrimental as well.
I poked around the Toptal platform for awhile, saw that work was coming in constantly, and felt satisfied that when I returned from vacation, getting a gig would be a fast affair.
And so I left, and achieved my goal of not worrying about unemployment while away. I climbed mountains, bird-watched, explored backcountry Fjordland, and had a great time with my wife. Toward the end of the trip, I was starting to get excited about heading home and learning about the opportunities that awaited me.
When I returned, starting the job hunt on Toptal was a simple matter of flipping a switch to set my availability to "full-time", and looking through the listings. I also started a parallel search in Winnipeg, and found that nothing solicits offers of permanent employment quite as effectively as telling prospective clients you're a freelancer. First world programmer problems, I suppose.
On Toptal, clients are paired with developers by a number of mechanisms, most of which were surprisingly not automatic. But, if you've ever used an automated matchmaking service like OkCupid, you know all the data and clever algorithms in the world aren't going to reliably pair two people professionally, romantically, or otherwise. So I was happy when Toptal recruiters would quickly answer my questions about positions, recommend clients to me, and generally keep the process moving along.
The Clients
Toptal advertises their big clients, like Airbnb and Pfizer, but truthfully most of them are what would be considered startups, or small- to medium-size businesses. I see this as a good thing! Most of the clients are working on interesting, new products, and smaller teams mean your contributions are going to be more significant.
However, Toptal's clients are also quite selective. I went part way through the application process for many different clients, and it was weeks before I got my first genuine, over-the-phone interview. The client mentioned that they had a significant vetting process, but after I described Toptal's screening process, they decided to skip it and bring me on right away.
My current contract is with a client working on a suite of very interesting security-related apps on Android, and Toptal's recruiters did a great job facilitating our introduction. From start to finish, it took about a month to begin this work. That sounds like a lot, and is longer than I would have liked, but is probably on par with any fledgling contractor lining up a first gig. Plus, in the future I will be able to overlap this searching with my current engagement as it winds down.
All of the work is remote, and my time is flexible to the point where I have to self-enforce regular working hours to avoid the urge to work at odd hours of the day.
The pay is excellent, and according to my conversations with Winnipeg recruiters, at the high-end of what I could get doing local contract work in a pure developer role. Toptal handles all invoicing, and has a choice of payment processors, each taking either a flat or percentage fee. I never see the cut that Toptal takes, which is fine by me, as judging from the amount I keep, it is in line with what local recruiters would charge.
Long-Term Prospects
I really enjoy working with my current client, and would be happy to continue with them as long as they need me. The only questions I have now are related to whether I will continue to enjoy remote work in the long-term, and what the downfalls of being somewhat disconnected from the Winnipeg IT community will be.
As far as remote work goes, so far I love it. I wouldn't describe myself as anti-social, but I am introverted, and so like having a choice between socializing and being head-down, working. While working in open offices, full-room conversations would spontaneously occur, and I would usually put on headphones and continue working. I have nothing against chatty officemates, and realize these experiences can help gel teams, and truthfully, most people reading this know there are times when I would chat your ear off myself. But the costs of distraction are well known.
Being able to choose when I start and stop working has been excellent for my productivity, and there are no distractions in my house aside from squirrels prancing outside in my peripheral vision. Likewise, most communication with my client has been asynchronous, and being able to choose when to read those messages gives me hours of uninterrupted time. I don't find that a lack of in-person interaction has hurt communication, in fact it helps by providing a searchable record of all conversations, and by necessitating the permanent documentation of requirements. It frustrates me to think about the number of decisions I've seen made during in-person meetings that went unwritten and were poorly recalled later.
The story begins in January of this year, when I found myself no longer permanently employed. Coincidentally, my wife and I had also pre-booked and saved up for a long vacation across February and March, and I was determined to enjoy it free of employment-related worry. Knowing that I wanted to try freelancing, I split my time in January between building connections locally, and exploring remote work opportunities, which included Toptal.
The Interview Process
When I initially applied at Toptal, a Skype interview was quickly arranged to see if I was a good culture fit, and as I learned later, to see if I had good English communication skills.
That interview went well, and a timed coding challenge was setup via [Codility](https://codility.com/), wherein I had 90 minutes to try and solve three problems that were intended to test knowledge of algorithms, space and runtime analysis, and proficiency with a programming language of my choice, in this case, Java.
I didn't much care for the Codility interface, and actually used Eclipse and JUnit to solve the challenges using TDD, and copy/pasted them to the submission screen when I was satisfied. I practiced a bit using some sample problems, but they were easy, and I was lulled into a false sense of security. The Toptal challenges were quite a bit harder than the samples, and so caught me off-guard.
I'll admit, after I completed the challenges, I wasn't pleased with how I had done, and went to bed thrashing madly, thinking about those problems. Late in the night, I had then-useless epiphanies about how I could have reduced some linear time algorithms to constant time, and eventually fell asleep. Nevertheless, a second Skype interview was scheduled, and knowing that I had a chance to make up for what I perceived as a poor performance, I was determined to make a great impression.
This second interview involved sharing my screen and doing some gentler coding exercises, but with a live audience and explaining my thought processes as I went. The interviewer sent me expected outputs for the problems over Skype, and I pasted them directly into my test cases, and iterated on my solutions verbally and in code until they passed. The interviewer interpreted the passing tests as success, and we got through the problems with time to spare, which I took as a good sign.
At this point in the process, I wasn't really sure how well I was doing, but was then asked to schedule a hefty block of time for a demo of an app I was going to build. I scheduled that demo aggressively, leaving me only a week to build it, as I was unemployed and had plenty of free time. I figured the tight deadline would provide more motivation to work on it.
The web app wasn't trivial, but it had a very limited scope, and so I felt comfortable picking a mix of familiar and new technologies, including Rails 4, Sprockets, React.js, Bootstrap and PostgreSQL. I then spent the following week falling in love with Rails all over again, cursing Ruby's limitations on Windows, marveling at React's simplicity, and otherwise implementing a delightfully straightforward webapp. All in all, I probably spent three or four days of full time effort building it.
When it came time for the demo, I deployed the app to Heroku and shared a link with the interviewer. He checked that the app implemented the specification, had test coverage, and that it was architected securely and according to REST-ful principles. My knowledge of everything from XSS attacks to HTTP status codes was tested, and while I felt like the demo went well, I still didn't truly know how well I was doing in the interview process.
It was only when the interviewer told me, "Welcome to Toptal!", that I did an unseen dance and began to relax a bit. We then went through various formalities, contractual and otherwise, and a blank profile was created for me.
Starting the Job Search
At this point, I had thought that the hardest parts were behind me, but then I saw the number of blanks to be filled in my profile. It took an entire day, but I managed to add every buzzword, acronym and scrap of experience relevant in my career to my profile. Professional copy editors then put some polish on it, and the end result is something I'm quite happy with.
My only peeve is that I was automatically titled "Java Developer", probably because the majority of my experience has been with Java. I like to identify as a Ruby Developer, but that might be misleading, and given the amount of Android work available, detrimental as well.
I poked around the Toptal platform for awhile, saw that work was coming in constantly, and felt satisfied that when I returned from vacation, getting a gig would be a fast affair.
And so I left, and achieved my goal of not worrying about unemployment while away. I climbed mountains, bird-watched, explored backcountry Fjordland, and had a great time with my wife. Toward the end of the trip, I was starting to get excited about heading home and learning about the opportunities that awaited me.
When I returned, starting the job hunt on Toptal was a simple matter of flipping a switch to set my availability to "full-time", and looking through the listings. I also started a parallel search in Winnipeg, and found that nothing solicits offers of permanent employment quite as effectively as telling prospective clients you're a freelancer. First world programmer problems, I suppose.
On Toptal, clients are paired with developers by a number of mechanisms, most of which were surprisingly not automatic. But, if you've ever used an automated matchmaking service like OkCupid, you know all the data and clever algorithms in the world aren't going to reliably pair two people professionally, romantically, or otherwise. So I was happy when Toptal recruiters would quickly answer my questions about positions, recommend clients to me, and generally keep the process moving along.
The Clients
Toptal advertises their big clients, like Airbnb and Pfizer, but truthfully most of them are what would be considered startups, or small- to medium-size businesses. I see this as a good thing! Most of the clients are working on interesting, new products, and smaller teams mean your contributions are going to be more significant.
However, Toptal's clients are also quite selective. I went part way through the application process for many different clients, and it was weeks before I got my first genuine, over-the-phone interview. The client mentioned that they had a significant vetting process, but after I described Toptal's screening process, they decided to skip it and bring me on right away.
My current contract is with a client working on a suite of very interesting security-related apps on Android, and Toptal's recruiters did a great job facilitating our introduction. From start to finish, it took about a month to begin this work. That sounds like a lot, and is longer than I would have liked, but is probably on par with any fledgling contractor lining up a first gig. Plus, in the future I will be able to overlap this searching with my current engagement as it winds down.
All of the work is remote, and my time is flexible to the point where I have to self-enforce regular working hours to avoid the urge to work at odd hours of the day.
The pay is excellent, and according to my conversations with Winnipeg recruiters, at the high-end of what I could get doing local contract work in a pure developer role. Toptal handles all invoicing, and has a choice of payment processors, each taking either a flat or percentage fee. I never see the cut that Toptal takes, which is fine by me, as judging from the amount I keep, it is in line with what local recruiters would charge.
Long-Term Prospects
I really enjoy working with my current client, and would be happy to continue with them as long as they need me. The only questions I have now are related to whether I will continue to enjoy remote work in the long-term, and what the downfalls of being somewhat disconnected from the Winnipeg IT community will be.
As far as remote work goes, so far I love it. I wouldn't describe myself as anti-social, but I am introverted, and so like having a choice between socializing and being head-down, working. While working in open offices, full-room conversations would spontaneously occur, and I would usually put on headphones and continue working. I have nothing against chatty officemates, and realize these experiences can help gel teams, and truthfully, most people reading this know there are times when I would chat your ear off myself. But the costs of distraction are well known.
Being able to choose when I start and stop working has been excellent for my productivity, and there are no distractions in my house aside from squirrels prancing outside in my peripheral vision. Likewise, most communication with my client has been asynchronous, and being able to choose when to read those messages gives me hours of uninterrupted time. I don't find that a lack of in-person interaction has hurt communication, in fact it helps by providing a searchable record of all conversations, and by necessitating the permanent documentation of requirements. It frustrates me to think about the number of decisions I've seen made during in-person meetings that went unwritten and were poorly recalled later.
I do feel a bit isolated, though, and have gone out of my way to have meetings and conversations with professional contacts as a result (this post is a result of that, too, I think)
Being Independent
Since going independent, I have spoken with a number of recruiters and HR folks for both Winnipeg and remote companies, and have come to this conclusion: Local companies care who you know, and remote companies care what you know. Local companies also seem to get hung up on job titles and experience, while remote companies just care if you can get stuff done.
I'm not much of a salesman, and don't often go out of my way to network or drum up leads, so a service such as Toptal, where you can be hired based on ability rather than knowing the right people, is hugely valuable to me.
That being said, I absolutely want to stay connected to the Winnipeg community, because if the right client came up, I would love to work with them, too. I don't think the benefits of remote work are such that I should exclude contracts simply because they require my butt to be in a specific chair for a set number of hours per day. Toptal provides a great source of clients, so I have the luxury of being choosy about local work, should I start looking.
tl;dr
Getting into Toptal is difficult, and can be stressful due to the lack of feedback during the interview process. But if you make it in, there's plenty of work for talented developers.
Remote development isn't for everybody, but for a self-motivated, disciplined person who can solve their own problems, it is a great way to work, though at times can be isolating. I have looked into co-working spaces, but haven't been compelled by what I've seen so far. Maybe I will form a gang of roaming developers that periodically occupies coffee shops.
My hope is that maybe some developer who is looking for work or wants to try something new will read this will be tempted to give the Toptal application process a shot. If not, I will be content with simply having shared my experience thus far with this innovative company.
Being Independent
Since going independent, I have spoken with a number of recruiters and HR folks for both Winnipeg and remote companies, and have come to this conclusion: Local companies care who you know, and remote companies care what you know. Local companies also seem to get hung up on job titles and experience, while remote companies just care if you can get stuff done.
I'm not much of a salesman, and don't often go out of my way to network or drum up leads, so a service such as Toptal, where you can be hired based on ability rather than knowing the right people, is hugely valuable to me.
That being said, I absolutely want to stay connected to the Winnipeg community, because if the right client came up, I would love to work with them, too. I don't think the benefits of remote work are such that I should exclude contracts simply because they require my butt to be in a specific chair for a set number of hours per day. Toptal provides a great source of clients, so I have the luxury of being choosy about local work, should I start looking.
tl;dr
Getting into Toptal is difficult, and can be stressful due to the lack of feedback during the interview process. But if you make it in, there's plenty of work for talented developers.
Remote development isn't for everybody, but for a self-motivated, disciplined person who can solve their own problems, it is a great way to work, though at times can be isolating. I have looked into co-working spaces, but haven't been compelled by what I've seen so far. Maybe I will form a gang of roaming developers that periodically occupies coffee shops.
My hope is that maybe some developer who is looking for work or wants to try something new will read this will be tempted to give the Toptal application process a shot. If not, I will be content with simply having shared my experience thus far with this innovative company.
No comments:
Post a Comment