Building a Unicorn: The inDrive Tech Journey from Local Startup to Global Phenomenon

Published on
31-01-2024
Author
Aisys
Category
How to
https://cdn.aisys.pro/stories/building-a-unicorn-the-indrive-tech-journey-from-local-startup-to-global-phenomenon.jpg

Hi everyone! My name is Michil Androsov and this is the second article in my series on the history of inDrive, where I offer an inside look at the creation of our unicorn company from the perspective of a simple developer. The first article is available here. In it, I talked about how I joined the company, how we expanded the development team, and how we went international.


This article will cover the middle period of my career at inDrive—from about 2016 to 2020. At the time, the company was beginning to stand on its own two feet and rapidly develop in all kinds of new directions, which I'll discuss in more detail below.


The Business

After our first successful launches outside of Yakutsk, we were finally starting to recognize the power of our business idea. We began to wonder, "What if we really manage to take over the planet?" After all, living far up north, deep in Siberia, you always feel quite separate from the rest of the world. It seems like everything's happening so far away, which actually gives us a pretty unique perspective. And at the time, all of our work with inDrive felt almost like a game to me.


Over this period, the company began to launch extensively. When we'd start operations in a new country, we might launch dozens of cities within a single month. We expanded beyond Russia and launched in Kazakhstan, where—despite a variety of obstacles—we quickly became the country's №1 ride-hailing service. To this day, Kazakhstan remains one of our top markets.


When launching in a new city, we adopted a strategy of "burning dry grass". As our CEO would say, if a city was ready for our service, it should be able to ignite from the smallest of sparks. So, if the grass in one city wasn't dry enough, we wouldn't try to soak it in gasoline. Instead, we'd just move on to the next one. This helped us expand quickly without spending too much money.


In fact, a number of cities simply launched on their own. People would hear about this great new service, called inDrive, in a neighboring city. They'd download the app for themselves, and the city would launch without us. There were even a few self-launched cities that took off without any investment on our part.


Of course, not all launches were a success. I remember our first USA launch back in 2018. We made all the preparations, recruited drivers, and advertised our service. At first, everything seemed to be working out, and our numbers were growing day by day.


We were pleasantly surprised. Was it really that easy to launch in one of the world's largest markets? After all, if you can make it in the US, you can make it anywhere—at least, that's what I thought. But our joy quickly became disappointment: We were faced with a huge industry of fraudsters cashing out stolen credit cards and using them on our service.


So, we decided to scrap our American plans and wait for better days—which finally came in 2023. We launched for the second time in the USA, with much better results. This launch is still ongoing. We are currently operating in Miami, and will soon expand to new cities.


Looking back, we were being simple and naive. However, we continued to learn from our mistakes and push forward.


The Product and Technology

We've always believed that our service should be simple and fail-proof, like a Nokia 3310. Of course, this has led to accusations that the app isn't "pretty" enough, despite being packed with features.


Previously, drivers could purchase a work subscription, instead of paying a commission on every ride. For example, a 1-hour or 24-hour subscription

Previously, drivers could purchase a work subscription, instead of paying a commission on every ride. For example, a 1-hour or 24-hour subscription



In many countries, we had to adapt to local legislation and user needs. That’s why the inDrive app in Almaty might look completely different from the one in New York. Nevertheless, we have been working on making the app "prettier" in all countries over the past years, and I personally think it looks quite modern now.


Outside of Russia, inDrive gained a range of new modules, starting with intercity rides and freight delivery, which are now available in countries across the globe. In certain markets, such as Kazakhstan, they are even more popular than our taxi vertical.


During this time, our approach to product planning was simple: At the end of every quarter, our CEO would arrive back from his trips to our launch cities, open his laptop, and explain our goals for the upcoming period. Usually, these came from driver and passenger requests. We could have tasks of all different sizes, from introducing card payments to changing the color of the order button.


Our CEO played (and continues to play) a crucial role in the development of the company. While he is both an excellent motivator and strategist, he’s also a skilled manager who understands how the product works. Even now, he personally flies to new launch countries, studies the market, conducts customer development, interacts extensively with users, and gathers feedback on the service.


We wanted everything to look as simple as possible, with just the address field and the price the passenger wanted to pay

We wanted everything to look as simple as possible, with just the address field and the price the passenger wanted to pay



On the development side, we quickly realized that our existing code would not be able to support our rapid business growth. Soon, the app would start to lag and decline in quality. So, we decided to rewrite the more "complex" parts of the code.


In addition to the PHP monolith, we eventually got ourselves a—ba-dum-tss—Golang monolith. The entirety of our infrastructure lay on the shoulders of two guys who knew all the inner workings of our enormous machine. If the service ever crashed, they were prepared to turn on their laptops and fix it at any time, day or night.


We also got our first QA specialist for full-scale testing. This made our lives incredibly easier. Before our QA, we had been spending a lot of time and effort testing new functionality and updates by ourselves, and checking how they interacted with existing versions.


Little by little, mobile developers began to join our team, albeit with some difficulty. After all, you needed Apple products to get into iOS development, and those could be difficult to find in Yakutsk. This meant that we struggled to recruit local iOS developers, and our iOS team would sometimes lag behind our Android team when it came to releasing new features.


I remember one time in Kazakhstan, when our app was blocked at the government level. I won't get into the details, but to reverse the block, we had to introduce a number of different features, including user instructions, automatic address changes, proxies, and more.


In the end, we restored our capabilities in the country and officially reversed the block after a few years. I remember writing to the CTO of a large CIS news site that had also been blocked in Kazakhstan, and asking how he had managed to keep business going.


Many of our features were developed through a series of trials and errors—or stumbled upon by chance—although they might seem completely obvious in hindsight. Take our call-free ride-hailing system, for example. If you haven't read the first article, I'll quickly summarize it here.

Previously, when an inDrive passenger would create their order, a driver would see their request in the orders feed and call them right away. And this wouldn't be just one driver either; these orders were being sent to anyone nearby.


Of course, this led to situations where multiple drivers would see an order and try to call the passenger at once. Typically, the first person to contact the passenger would get the order.


Here's where the problem came in: Drivers would click on a ride without reading the order details, and then all try to call the passenger at the same time. So, we created something called a "buffer." When drivers press the order button, there's a short delay, which gives us time to collect all potential offers.


This way, drivers don't have to rush, and they have time to read the order details in full. Then, based on the drivers' ratings, the system selects which of them will be able to call the passenger first. This was a significant improvement to our old version.


Although the call-free system is now used by practically every ride-hailing app, we actually came up with ours by chance. In 2016, we launched in Yekaterinburg and introduced the "Guardians," who were specially selected drivers that could accept orders that typical drivers couldn't. We would send them special push notifications about exclusive orders.


However, we soon realized that these push notifications weren't working very well because they were easy to miss. And that's when we remembered one of our existing features, called "personal orders," which allowed the passenger to simply select the closest driver on the map and send the order straight to them.


This was the incoming order screen on the driver interface about 5 years ago

This was the incoming order screen on the driver interface about 5 years ago



We decided to use this feature when sending orders to our "Guardians." It took off immediately and worked so well that we then decided to expand it to all drivers. Of course, the personal orders feature might seem obvious now, but we discovered it through a series of trials and errors.

The Team

Up until 2019, our team was fully made up of Yakutsk locals. At the time, we wanted to help our homeland grow — and the local people along with it. inDrive had always held a strong mission and values. These values resonated with each employee, and we strived to uphold them.


This was a period of powerful drive and energy. Every day, I would wake up in a good mood, knowing that my friends and good coffee were waiting for me in the office. That and plenty of interesting work, of course.


inDrive was known for being a social company. Our team was young and carefree, which meant we worked hard and played hard. Every year, we'd take a company trip abroad, whether to Egypt, Thailand, Kazakhstan, or somewhere else entirely.


Imagine an entire plane of colleagues escaping the –50-degree Celsius weather in Yakutsk to visit sunny +35-degree Thailand! It was great at the time, but unfortunately, these big company trips aren't possible anymore with a workforce of several thousand employees.


A backend developer sitting on a beach in Boracay, taking a break from relaxing to fix the product

A backend developer sitting on a beach in Boracay, taking a break from relaxing to fix the product


By 2019, we hit a hiring roadblock. Business was booming, and any professionals in Yakutsk capable of handling the tasks and workload were already working for us. So, we decided to open a development office in Moscow.


As the head of the iOS team, I was charged with opening the Moscow branch. We had a lot of flexibility during this time, and employees were free to contribute to the company in any way they saw fit, as long as it benefited the business.


I entered a new phase in my life. I moved to Moscow and started the process of opening the new office, from choosing a business center to installing special lights with the company logo.


Now that a few years have passed, I can look back at that time fondly. But back then, I would often think: "Why did I do this to myself? Why'd I take on all this renovation work?" Our main problems had to do with the company in charge of the renovation. At one point, they were so behind schedule that I even had to help them install the electrical wiring in the workspaces.


I remember one specific evening, when we stayed late to assemble furniture. I could see that my colleagues were tired and depressed, so to lighten the mood, I asked "Why the long faces? Cheer up! Next year, we're opening an office on Belorusskaya!" At the time (and to this day), Belorusskaya was one of the most expensive areas in Moscow, like Times Square in New York. It was also home to a number of impressive IT offices. Of course, we just laughed and got back to work.


Assembling furniture after a long day of work

Assembling furniture after a long day of work


By the end of 2019, we had our first developers at the Moscow office. Sometimes, it would seem like they were from another planet. During their interviews, they'd say things like, "We work in sprints. I finished all my tasks, then came here" (and it'd only be Thursday afternoon). Or they'd say, "We work three days from home and two days from the office."


That was something completely new for me. inDrive was entirely office-based at the time, and everyone was expected to contribute fully. We weren't working with any kind of Kanbans, scrums, story points, or sprints.

Conclusion

We entered 2020 with a lot of optimism. Our new development office in Moscow had opened, and we were working with a great team. I was living in the capital, business was growing, and investments were on their way!


We also had a cute little office in Silicon Valley (just a few rooms, not the entire building)

We also had a cute little office in Silicon Valley (just a few rooms, not the entire building)


When the company received investments, we would conduct a cashout, meaning employees could sell a small portion of their stock options for real money. Everything seemed to be going our way, like we were living in a movie.


Unfortunately, though, this is the point in my story where things get a little darker, like in the Harry Potter movies. Suddenly, we were faced with a huge challenge. In 2020, the world was shut down by the coronavirus. inDrive closed their offices and we started to work from home—something we had always been firmly against.


Life took on new rules and we had to quickly find our footing. We developed new processes, took our first online calls, and sent laptops home to new employees.


Then, in mid-2020, I became the CTO of inDrive. It was a surprise even for myself. I was placed in charge of 50+ developers, 4 distributed teams, and the two offices in Moscow and Yakutsk. Of course, there were plenty of challenges, which I'll discuss in more detail in my next article.


P.S. My joke about our office on Belorusskaya quickly became reality. At the end of 2020, we opened an office in one of the best business centers in Moscow, right on Belorusskaya Square, alongside other cool IT companies.




Discussion (20)

Not yet any reply