By Vikrama Dhiman
In May 2019, Gojek celebrated a key milestone: we reached 10 million trips in Singapore.
Leading up to this milestone, we have been asked:
What does it take to launch a new country (Singapore) while continuing to grow at home (Indonesia)? How big was the launch team? How long did it take? Did we design for the long-term?
This 3-part series answers these questions and tells the story of our Singapore launch and journey to 10 million trips. You will also get a sneak peek into our product development processes, specifically, how we form teams, make decisions, overcome obstacles and iterate for the long haul. Strap in!
Let’s start by rewinding to early 2018, when we officially announced our expansion to Southeast Asia (Uber exiting the region provided the perfect opportunity). Singapore was a key part of our expansion plan as it is one of the most important economies in Southeast Asia.
Who first, what later. Forming a team and letting them figure out the details is at the heart of Gojek’s culture.
Forming the team was the first step. In May 2018, I joined as the first person on the Singapore launch team. By mid-June, business and software engineering teams were also on board. Finally, in true Gojek spirit of leaders working in the trenches, our CTO Niranjan Paranjape joined the launch team as the Tech Lead. Also, Raditya Wibowo, Head of Mobility, joined as the Country Director to launch Singapore.
We called the EPD (Engineering/ Product/ Design) team — Simba, and the cross-functional Business & Technology team — Mufasa. 🦁
With the teams formed, it was go time.
Projects in Gojek start with the ‘Inception’. Software engineers, product managers, designers, and members of the executive team meet and review available information, chart out important decisions, and identify an operating framework (mostly a version of eXtreme Programming software development).
Inception for Singapore was held on June 27, 2018, in a conference room called Stan Marsh (named after Gojek’s first codebase) in our Bangalore office. All the senior engineers, designers, and members of the executive team participated.
The key decision we had to make — do we launch Singapore on the same app or a different app (GO-VIET and GET, our apps in Vietnam and Thailand are separate apps with local brands — read about them here).
Our initial surveys suggested that Gojek was already a well-known brand in Singapore. The business team also presented data that 3 million Indonesians travel to Singapore every year. Hence, we decided to launch with the Gojek brand in Singapore. This, in turn, enabled an easy decision to launch Singapore on the same app.
As we were targeting the window of opportunity afforded by the recent market developments, we set an aggressive target to launch in the same year. We had less than 6 months to launch.
Move Fast, Don’t Break Things ⚡️
Launching Singapore and Indonesia on the same app set the stage for Gojek to truly become a global app. This also presented many challenges.
We do millions of orders every day across 19+ products in Indonesia. We had to add functionality like country, currency, and time zone to multiple systems — mobile apps, pricing systems, driver app, and on-boarding, GoPay wallets, allocation systems, and care platforms. All this — while our product offering in Indonesia continued to grow.
While keeping all these plates spinning, we designed a super-simple car booking flow for Singapore.
Although customers did not notice, our app releases (remember, the same app for Indonesia and Singapore) started incorporating increments of functionality for Singapore, as early as August 2018.
This was done with a team of only 12 engineers (nope, not a typo) in Team Simba, and the Operations Tech Team.
Gojek’s engineering systems, culture, and principles, comprising of practices like pair programming, excellent test coverage, and automation — were also key contributors to our fast progress. (We don’t just talk the talk, you see).
We found that often the best way to move fast is to make changes to systems and code bases yourself and pair with the concerned teams to take them live.
The shared code mindset is unique. One of the newest software engineers on the team learned this first-hand when he had to make changes that impacted key ‘pricing systems’. He was tentative at first and did not deploy his changes for a few days. When seniors in the team discovered this, they, along with Head of Mobility Engineering helped him deploy these changes (20 minutes on a Saturday). The message that deployments are not an event was well and truly understood.
No Toe-Stepping | Collaborate with Compassion
“If you want to go fast, go alone. If you want to go far, go together.” — African Proverb.
One of the challenges in building anything is to balance a fast feedback loop while also building processes for the long term. Our solution to this was to enable everyone to talk to everyone. Engineers, product managers, designers, marketers, growth analysts, community managers, customer care executives and partnership managers — all work, discuss and brainstorm together.
The collaborative product development process ensured that not only were we progressing fast but we were also confident about building the right thing and the right processes for the long-term. This reflected in our discussions on our launch model and product roadmap. Of these, the following three Mufasa practices were the most successful:
- Forecasting: We looked at not just launch, but also did scenario planning for 6-month, 12-month and 2-year horizons. This meant we were prepared for a variety of outcomes (more on this in the third part of this blog series).
- Collaboration: We also held regular cross-functional co-locations and retrospectives to ensure heavy co-creation and moving fast. This also enabled different functions to be equally involved in launching Singapore.
- Documentation: We also spent considerable time figuring out our long-term org structure for the Singapore team and documenting the product and technology decisions in a New Country Launch Handbook for reference. This is an invaluable resource for teams working on next country launches at Gojek right now!
For a lot of our new colleagues at Gojek, the hyper-collaborative, candid and bottom-up approach to planning and process design was not only fresh but also reassuring.
Compassion and empathy are not just buzzwords at Gojek — they are expected while collaborating with stakeholders, partners, and colleagues.
By mid-August, things were looking good. Our launch roadmap was ready, we had hit a sustained velocity and our business operations team had started pre-launch activities.
Just as we were ready to take the Titanic to the seas, we hit a few icebergs. Would we sink, or sail?
One of the engineers who had the most context on backend systems had to take a break to meet prior commitments. Another senior engineer had to move out of the team entirely to take over a leadership position with his previous team.
We also saw more work on the core platform than we had previously envisaged, which led to our iOS mobile development for Singapore coming to a standstill.
On top of all this, we also added significant project scope by deciding to do payments processing in-house via Midtrans, a Gojek company.
All this happened just as the Marketing team began requesting us for a launch date in order to prepare and buy the media collaterals.
We were 25% down in capacity, with 25% additional scope
We did an in-depth session with our marketing team explaining the current constraints and asked for two weeks to update them on the launch date. Thankfully, they were super supportive (remember what I said earlier about collaborating with compassion?) After this meeting, we identified action items and split them among the team members. We knew that we had to slow down for a week or two, but that was a hit we were willing to take. Sometimes, you have to go slow, to go fast.
We heard of (and converted) a talented iOS engineer looking to move teams. We also negotiated for one of the best QAs at Gojek to join team Simba. We got commitments from the Driver Platform and GoPay teams to help us deliver crucial functionalities as well. Finally, the sun shined. We had weathered the storm and avoided the icebergs.
The velocity picked up. And, so did our confidence.
In early September, we gave the Marketing team the go-ahead to prepare for a late November launch. This set in motion launch preparations from teams in Marketing, Driver on-boarding, Customer Care and more.
The First Milestone: Internal Alpha Launch 🎉
We had a timeline and there was still a lot of functionality to cover. However, our first milestone, called the Internal Alpha Launch, was already on us.
We try and ship a finished vertical slice to get feedback from customers, fast.
The team had carefully prioritized an end-to-end booking and trip completion flow to test in an unsimulated environment with actual riders and drivers on production. You could enter your pickup and destination, see an estimate, get a driver, cancel the ride, chat with the driver, see your order receipt, history, and get the invoice in Singapore.
We supported only cash bookings and did not support vouchers, promotions and driver withdrawals. We even specially recruited and on-boarded twenty drivers for Internal Alpha trials.
On October 10, 2018, at 8 AM SGT, Bayle Quek was the first person to board a Gojek car in Singapore.
From October 10 till our Beta launch in November, we completed 100+ trips every day with our employees. The goal of Internal Alpha was to get early feedback. Our employees and driver-partners gave excellent feedback and reported issues as they took these trips.
A milestone achieved, but promises still to keep…
The Alpha phase was crucial, but it was just the first act. As some of us gathered together for dinner after the Internal Alpha launch, we looked ahead at the next 45 days. There were still a lot of crucial functionalities to be built and Alpha feedback had to be incorporated before going live. Around this time, our Marketing team also came back with a change in our launch strategy to include a whitelisting phase. We also had a 10-day break in between due to the Diwali holidays in India.
The first 90 percent of the code accounts for the first 90 percent of the development time. The remaining 10 percent of the code accounts for the other 90 percent of the development time. ~Tom Cargill, Bell Labs
This is when the Imposter Syndrome kicked in.
We’d made it this far, but would the planning and execution hold when it really mattered? The team parted that night knowing the job was not yet done.
There was a lot riding on the next 45-days.