logoDroidKaigi Ninjas
DroidKaigi 2021

DroidKaigi 2021

Mercari and Merpay: The Characteristics and Realities of Android Development

Mercari, Inc.
Oct 15, 2021

This is an English translation of the original Japanese article.

This article shares the characteristics of Android development efforts revolving around Mercari and Merpay.

The development technology we use

Java was the programming language of choice back when we at Mercari Group started developing the Mercari Android app, but today, we primarily use Kotlin and an MVP-based architecture. Some teams proactively incorporate new technologies in their development work, adopting a Jetpack Compose + MVVM architecture in some new or experimental Mercari projects.

For Merpay, meanwhile, we have been using Kotlin from the app’s initial development phase and wrote the app fully in Kotlin. A Redux concept has been employed on the architecture front, combined with MVVM. We also built a Redux-based state management framework, factoring in from the initial designing phase how complex state transition can be for a financial system. By adopting a multi-module configuration, we developed each feature of the app in a highly independent manner. Though Merpay primarily used RxJava for non-synchronous process sections when the app was initially released, we have been making improvements by adopting new technology—replacing RxJava with Kotlin Coroutines where appropriate, for instance.

Characteristics of our product development

A characteristic of Mercari’s product development is that there’s a foundation and framework for steadfastly supporting a large-scale app. Arranging a Large-Scale Scrum (LeSS)-based development framework that allows for weekly releases, CI/CD, steady unit testing execution, and automating regression testing are some examples of the creative steps we are taking in different areas.

Developing new features without interfering with or damaging existing features is critical for a large-scale app like Mercari. To clarify implementation policies for engineers, we properly make design documents on specifications and technical designs.

Our team has also introduced a design system to deliver a consistent user experience through our product and enhance development efficiency by reusing components.

Mercari proactively develops new features and adds them daily. At the center of our product development effort is our careful consideration for bettering the experience of current users and improvement-based feature additions. Here’s a feature exemplifying this undertaking:

List of what I own  With this feature, users can take a photo of an item at their home and specify the product, which in turn allows for estimating prices of that item on Mercari, the value, and approximate selling price.

We develop the listing feature in a way that serves sellers, because under Mercari’s system, no transaction can start without a seller. The list automatically registers products purchased on the app, functioning as a circulating system too: users can deliver items that are no longer necessary to someone in need.

Meanwhile, for Merpay—for which we hope to expand services—we are considering increasingly adding features. But a financial product like Merpay needs to comply with many laws, which is why we have a system in place for careful QA and testing. Each new feature is large in scale, so it’s important for the project team to be thorough in development efforts.

Organizational characteristics

For Mercari, we employ an original structure called a Camp to maintain high productivity of its engineering organization. On a Camp-by-Camp basis, we create cross-functional group teams centered around missions and have each Camp set its goals and course of action. Android engineers are part of the Camps too and are involved in development and improvement efforts continuously to achieve our mission.

Inside Camps Inside Camps

The Android engineers share technical information and make improvements through regular “Guild” meetings and a cross-team unit called the Client Platform Group.

  • Guild: A Mercari Android engineer meeting held every other week (discussion topics center around Android [e.g. app releases through Google Play Console, consultations on code/design concerning the app in general])
  • Client Platform Group: A meeting joined by Mercari Group’s Android, iOS, web front-end, and QA engineers (aims to primarily improve common client app issues [e.g. CI/CD, infrastructure of development environment, crash monitoring framework])

Android engineers work from around the world

Talented Android engineers from around the world work at Mercari. Many are English speakers, giving us a sense that we are working together across national borders. Information about Android comes in from the world over, allowing for us to speedily catch up on the technology front.

The flipside of having international members is a time zone issue. To deal with this, we take such steps as trying to set meetings at time slots that would impose minimum burden on members. The engineers primarily communicate in English, but extensive support is available—examples include our in-house Japanese and English interpreter team and our English and Japanese training system—so that both native Japanese and English speakers alike can work without any difficulties.

Merpay’s product development framework

Merpay’s product framework Merpay’s product framework

Merpay’s product development framework consists of a matrix of project units and functions, with the Engineering Manager—a position that manages engineer organizations—assigning Android engineers to projects.

Advancing a project, leading on technical fronts, and working for implementation are the roles of Android engineers. They also improve the code base of Android in general as an effort of the Android team. The time that engineers split between a project and the team depends on person and timing, and is adjusted as necessary.

A distinctive feature of Merpay’s Android engineer team is its many senior engineers. Engineers with the ability to build an app from the ground-up work together in the team to develop products.

Mercari Group’s cross-border system to support education and take interns

Apart from hiring mid-career employees, the Mercari Group regularly takes applications for interns in software engineer positions. The Android team accepts interns too. Besides a regular internship program, Mercari Group also runs a hybrid engineer training program called Build@Mercari.

Impressions of Mercari and Merpay from an Android engineer’s perspective

The Mercari Group provides a groundwork for taking on diverse challenges, since many outstanding engineers from the world over work here. We also are agile enough to reshape our organizational structure without hesitation if necessary, which shows that we still maintain our characteristic as a startup.

Despite its large size, Mercari is a versatile firm that works on difficult tasks. Avoiding as much user inconvenience as possible is critical under the current scale of Mercari’s use, which is why we need to prudently develop features as mentioned in the “Characteristics of our product development” section.

Under Mercari are Merpay, Mercoin, and Souzoh; organizations developing new features as a way to create new businesses. Among them, Merpay —which boasts great organizational strength and high-level engineers—is particularly one that sets and thoroughly achieves daring goals. Constantly taking on challenges provides many growth opportunities for individual members and the organization at large, and this, in turn, leads to generous support from other members. As such, Merpay is becoming an organization that achieves remarkable growth as a whole by not fearing failure and repeatedly resolving challenging issues.

Since the company’s 2013 launch, Mercari has been working to turn its mission statement into reality. Now we are attempting to transform from a startup into a world-class company. The Mercari Group is continuing to move forward, believing that solving each valuable challenge—which we can only deal with in our current growth phase—will undoubtedly lead to accomplishing our corporate mission. We invite you to join us to complete this mission together.

Check the below web pages if you want to learn more about us!

About the authors

@mochico

@mochico got hooked on Android through training that was provided at a company @mochico joined right after graduating from university. After working on various outsourced and in-house service development projects at a web designing company, @mochico joined Mercari in January 2018 as an Android engineer. These days, @mochico is involved in development endeavors that use Jetpack Compose, and gave a presentation about Compose Preview at DroidKaigi 2021.

@hidey

After starting to develop Android apps in 2011, @hidey worked on social media apps and game development before joining Merpay as an Android engineer in October 2018. @hidey is also involved in running DroidKaigi and other conferences.

Mercari, Inc.
Mercari, Inc.
Under its mission to create value in a global marketplace, Mercari is making all-out efforts to develop such services as its namesake marketplace app, its mobile payment platform Merpay, and its e-commerce platform Mercari Shops.
Go to Corporate Site