Tokopedia Android Engineering 2020 Review

Rico Harisin
Jan 5 · 5 min read

2020 is indeed a very challenging and tough year. We are in the situation where everyone forced to stay at home due to pandemic and working from home becomes norm.

At Tokopedia, especially on Android Engineering team, we have a lot of things that needs to do in order to strengthen our core, to become more mature in terms of technology and people. So our theme for 2020 was“Strengthening the core”. We are blessed with talented engineer that able to deliver a lot of initiative that makes our core stronger even though they are challenged with uncommon working from home situations.

This is Year End Review for what we did in 2020


Tracking performance it’s actually something new for us. Previously our performance tracking was only as simple as how much memory consumption for particular activity or page without universal, trackable metrics. But in 2020 we already have our own metrics called PLT (Page Load Time) which track how long it takes for user from opening the page until they see the very first information on the page. We also develop our own performance tools in-house:

Ch’en Performance Test Framework and Validator to detect performance regression or improvement in every version or in developer branch.

Sherlock Performance Insight Reporter. This tool will check for any performance issue and give meaningful insight about performance in particular pages.

RUM Performance Test Dashboard where all information related to performance trend for every version is displayed.

You can also check our story about building this:

A Saga of Improvement in Android App Performance

A Saga of Improvement in Android App Performance — Part 2

Release Governances

Having a strong release process can save us a ton of time since we have a release every week. Every single code that is being merged every week should be checked to ensure the quality and not breaking the production build. Broken release is expensive and can impact a lot of things.

On pre-merge state, we have developed several checker to ensure the quality of the pull request and gain confidence for the team:

Unit Test Check Make sure every single unit test is passed on changed module.

Build Check Sometimes certain changes can break the compile on our main branch, to make it more complicated, we have 2 build flavour for our main app and seller app. This checker is necessary to ensure the changes are not breaking the compile on either of the apps.

App Size Check App Size is very important for us and we always try to keep it as small as possible. This check to ensure our App Size does not pass certain thresholds.

Check this story about how we reduce our app size and why it’s matter by our team

Modern Way to Reduce Your Android Apps Size With Dynamic Feature

Risk Analysis This checker helps us to identify which pull request is dangerous based on several criteria (e.g number of file changes, number of impacted modules etc). Danger pull request can become a silent bomb and thus need to check more deeper.

Static Analysis As the name suggest, this check will ensuring the code following our standard and give suggestion for bad code

Alerting and Monitoring

Alerting and Monitoring is a crucial part either on development or production. We can easily track for any kind of issue or get an insight. Other than existing alerting and monitoring that we had, in 2020 we also built some new Monitoring tools:

Unit Test Dashboard This monitoring tools to track and get an insight for Unit Test coverage for each squad. Unit Test is a crucial part for our development and thus making sure we already covered every single module with it is a must.

Build Monitoring Another area that is very important to be monitored is a build especially on our CI/CD. With this we can detect build regression over time, build failure rate, build machine utilisations and find out which job is working smoothly and which job that needs more attention.

Deeplink Alert Deeplink is widely use within our apps, but sometimes there is some misconfiguration that causes a deeplink broke when opening on the app. This alert is very useful to detect this kind of issue and take action immediately.

If you want to know more about our alerting and monitoring, check this story by our team

Logging And Alerting in Android Tokopedia

Monitoring Android Codebase

Strengthening Data Tracking

Data is very important, data helps us make decisions and helps us to understand more about what our customer needs. So having a data tracking testing platform will help us to make sure our data always be consistent since data incidents can impact a lot of our business process.

Casava Instrumentation Test This test will make sure every single data tracking implementation is working as expected by validating payload that our app sent to our data platform and compare it with expected payload. This test is being executed regularly to ensure our changes during development not breaking data tracking implementation.

TopAds Instrumentation Test Since TopAds is costing the customer’s money, this TopAds data must be as accurate as possible. Same with Cassava, this test is also being executed regularly to prevent incorrect implementation.

One of our Tokopedia DNA is #GrowthMindset, we will continue to push ourselves further and expand our knowledge for the better improvement of ourselves. There are a lot of areas that we haven’t explored or put more focus into it. Our journey has just started #KamiBaruMulai

Tokopedia Engineering

Story from people who build Tokopedia

Medium is an open platform where 170 million readers come to find insightful and dynamic thinking. Here, expert and undiscovered voices alike dive into the heart of any topic and bring new ideas to the surface. Learn more

Follow the writers, publications, and topics that matter to you, and you’ll see them on your homepage and in your inbox. Explore

If you have a story to tell, knowledge to share, or a perspective to offer — welcome home. It’s easy and free to post your thinking on any topic. Write on Medium

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store