Gojek used to only have 100 – 150 numbers of orders per day (Context: They have 3+ million now). At the time, it functioned as a call center. Customers called in and available drivers were assigned manually for each order. There were only a team of four developers back then (of which three were consultants 😉). The task of developer was to automate the entire process with an app. The first developer thought of it as ‘an Uber, but for motorbikes, and with several more features’. In his mind, he thought this would be a simple 3–4 month project. Little did he knew GOJEK would become a unicorn; a startup that’s indispensable to an entire country. Let’s try to elaborate that story from the perspective of someone who has witnessed how Gojek went from 4 developers in a small house to 250+. The problem is simple: we can’t scale human capital as fast as a users’ demands (which Gojek supports with our products). This is across verticals: business, operations, and even management. When Gojek realize demand can’t keep pace with supply, they iteratively hand over things to be automated by machines: An example: Gojek data showed many users asking our driver partners to buy food from their favourite restaurants on our then shopping ‘feature’ (yeah, it was started as a feature). Then came the question of things to consider in order to automate this experience to make it simpler: So Gojek released GO-FOOD as a product — to automate manual actions to just a small number of clicks. Consumers can now browse restaurants and menus directly from the app, make a few clicks, and a driver will automatically receive the details of the order. Simplicity. Automation. That was for our external users (consumer and driver). What about our business team who needed the details of the restaurants to input them, one by one? We automated that too. We built a tool to get a list of restaurants with each menu and sub category. This made it easy enough for Gojek’s business team to structure the data they received. Gojek then created another tool to insert this data (think menu, prices, offers, etc.) in bulk. With the rapid growth, there will always be room for improvement and automation. That’s an endless cycle at Gojek. New technologies bring better efficiency, speed, and stability, along with the potential for further automation. Gojek provide what users need to make their life easier, in a way that eventually makes our life easier. So, a good portion of their work is to listen, and be earnest. A lot of their products were fine-tuned based on user feedback. Gojek also act as users and play the devil’s advocate. It’s how they iterate. And their core objective of it all is to let the machines do the work. Listen- Understand- Ideate- Build- Automate. When demand surges, the business and operations team find it hard to digest all the feedback. This acts as a bottleneck to our ability to improve our products. Being able to analyse troves of data and funnel our learning into decision making is what makes us a superior product. So a Data Engineering team was born. This progress happens in every part of the organisation. Each team depends on another. Products on business, business on partner onboarding, data recommendations on business intelligence, and so on. In the engineering team, Gojek have their plates full supporting automation across departments — for internal facing products as well. As an analogy, tech is like electricity; it’s the base of every activity in the organisation. And Gojek is here to make sure it’s always up and ready. On the backend, it started with one codebase. Before we realised this codebase will not be able to keep up with the pace of the growth, it had become too big to dissect. We called this very first codebase Stan Marsh. It’s almost like a living breathing entity within Gojek, and you can read more about it here. The past years have been all about splitting this one codebase into smaller codebases and infrastructures to make it easier for us to maintain, scale, and improve. And now, Gojek have more microservices than engineers 🖖. And growing. As a consequence, the complexities of the system continue to grow. Automating our internal tools is a task in itself; to make development, monitoring, debugging and deployments easier. To make our life easier really 😉. The challenge — Gojek have to do production support as well as automate new needs from users (both internally and externally as features/products). The latter includes: maintaining existing systems, redesigning new ones and migrating these moving systems without downtime. All this, while Gojek scales. Sounds like a challenge? Naturally, Gojek is hacking to build detailed monitoring tools, smart alert systems, easy environment setups and deployment tools in a scalable way. Not an easy thing to do, but it needs to be started, maintained and grown. Same as other external products, these internal products are also a work in progress. As business and operation grows, these will always grow. In this continual ideation, a million stories and a zillion challenges await us. For example, when they started, they built app packages locally and uploaded manually to each server. Each had a separate log file and used third party services for monitoring/alerting. As the number of servers and services increased, we added capabilities to have a centralised deployment manager. Now, Gojek can deploy to several servers in a click — building a centralised logging system to make log tailing between services and servers faster and simpler. Gojek didn’t just stop there. We upgraded again, by setting up a deployment pipeline. This automates the setup for integrating to a centralised monitoring and alerting tool based on stats, centralised configuration management and so on. This cycle never stops. Gojek serves millions in Indonesia now. The genesis of that story starts with humble beginnings; making boring look cool. It’s not easy doing rewrites, not fun doing testing, but Gojek does what they do because they’re passionate about it. They’re driven by this ability to create impact with code. Gojek is pushing boundaries because what we do here reverberates across a country. There’s no bigger high than that feeling of building something from absolutely nothing.
The Nature of Technology
Down the rabbit hole
The devil is in the data
Engineering complexity is about simplicity
Gojek has grown into a unicorn startup that processes an average of 50 orders every second. That small, four-member team has grown to over 250. Getting things done despite the odds is now part of our culture. Sounds like fun? Head to superapp.is and grab the chance to be a part of this unbelievable journey. 🚀