— How did you come to the decision to assemble a team outside the States, and even in multiple countries? What was the main motivation? Was it the tough competition for developers in the States? Or reducing the cost of specialists?
— When it comes to Machine Learning and Data Science, competing in the Valley is not just difficult, but impossible. That was the main motivation. As for the cost of specialists, 10 mediocre, cheap pianists aren't better than an expensive and talented one; it's not primarily about savings. In the Valley, hiring IT-professionals is extremely difficult. It's not easy for Google, let alone a startup. A common story: a project from another state or country attracts a lot of investment, and then, six months later, can not hire specialists in the Valley and eventually fiddles with the idea of relocation.
In addition, we wanted to build a team that would function in different time zones. Our customers are also scattered around the world, and we want to ensure that they do not have to wait for product support. Having teams in different zones allows development to work almost 24/7.
For example, when it's late evening in San Francisco, we discuss with the team in Ukraine what needs to be done while they are just starting their working day there. By this time, the Philippine team has already been working half a day, and they have something to show.
So, by the morning of the next day, we already have updates on the development progress. Thanks to this, we can do customization for the client or a product update quickly, because there are even fewer days off at the company scale — there is one more working day due to the difference in time zones.
— What you're saying is, different time zones, one of the main difficulties for companies venturing to distributed teams, in your case turns out to be a huge advantage. What other advantages have you learned from your choice?
— As we hire developers in three countries, we have a large pool of talent, and the company is also protected from many risks, such as the reduction of work visas in the United States. And, even if there is a tsunami in the Philippines and no electricity for a week, the processes in the company will not stop.
Because of the holidays, there is the off-season In the United States from late November to early January: everyone goes on vacation. If you want to run a new feature-there will be no one to work on it. However, with a distributed team, you can balance the load and avoid such failure periods.
The code review is perfectly integrated into the scheme of the work of distributed teams. You do the work, go to bed, meanwhile your colleague is starting their work day, so in the morning you will see the results of the review. The same with QA. The production circle does not shift, because when the tester comes to work, a piece of code that needs to be tested is already waiting for them.
— And how do you manage to both synchronize everyone and ensure that one team can work independently of the other, which is sleeping?
— First, there are still overlaps in time between offices in different countries. And we try to distribute tasks across different teams so that some processes do not need to wait for actions from other people who have already gone to sleep. We seem to have learned to deal with this without losing development speed and quality. This is an organizational challenge, but if you do not synchronize, of course, there will be a mess.