The Mercari home screen is the very first thing customers see when they start the application. It contains various information, among which personalized content such as targeted campaigns..
The home screen serves as the “face” of Mercari, and its development is the responsibility of the Personalization Core Team. In this article, we interview @stouf, the Engineering Manager (EM) of the Personalization Core Team, on the topic of home screen development and the backend side in particular.
This interview was conducted by @afroscript from the Engineering Office.
Intended to Return Home After Six Months, but Ended Up Staying and Working in Japan
— Let’s start with an introduction.
Sure. I’m from France. I’m currently the EM of the Mercari Personalization Core Team and Search Quality Team. I was always interested in the Japanese culture, and I had previously come to Japan to do some sightseeing. At the end of my curriculum at the university, I was required to go through a 6 months internship; I decided to work for Wizcorp, a Japanese company. I originally planned to return home after six months, but decided I’d rather stay in Japan and ended up working at several Japanese companies. I joined Mercari in November 2019.
— What were you doing prior to joining Mercari?
I worked as a backend and frontend engineer at Wizcorp. I then worked as a full-stack engineer at Coursebase, where I was responsible for backend development and infrastructure work. They are both Japanese companies, but have a high ratio of non-Japanese workers.
The Personalization Core Team Is Responsible for Home Screen Development
— What kind of development does your team do?
The Personalization Core Team is responsible for developing the part of the system that displays content on the home screen. We receive requests from other teams about displaying information on the home screen. This means we need to coordinate between multiple teams, and there have been times where our team ended up being the bottleneck. We continued to refactor our systems, and we were able to improve things so that other teams can implement changes themselves. This reduced our workload and gave us more time to provide support. The teams can now control their own content.
— How is the team organized?
Except for the Tech Lead and EM, we don’t have any specific roles assigned. Everyone is involved in the entire project. We do this to maintain flexibility and prevent silos from forming.
The Reality of Developing the Home Screen
— Tell us about the content displayed on the home screen.
There are two major categories. The first category is personalized content. This is targeted content based on normal activity logs of customers. The second category is discovery content. It is recommended content meant to expand a customer’s interests. Imagine that someone purchased some mandarin oranges. An example of personalized content would be to recommend other types of mandarin oranges or other fruit. An example of discovery content in this case would be to recommend a wider range of products such as fruit juice or desserts.
Determining the logic for selecting content or conditions for showing certain types of content is the responsibility of other teams handling machine learning and the Product Manager (PM) for the home screen.
— What are some techniques you’ve used during development?
One major aspect unique to our work is that we do not return errors. This isn’t set at the guideline level, but instead our code is designed not to return errors. It’s not good to show error messages to customers when they’re using the application. If we have a problem retrieving data, we can’t just return an error and be done with it. We have to use some other technique, such as hiding components or returning other data. Of course, our team does detect any errors that occur and we fix what we detect.
The home screen is very important since it’s the first thing a customer sees when they use the application. We need to ensure that it’s constantly available. That means we need to have the correct design from the very beginning, and we need to really make sure that the code is as perfect as it can be. Of course, nothing starts out perfect, so we have to continue to refactor the base we’ve established.
The home screen gets a lot of views, so many teams want to post content on it. If the Personalization Core Team were to handle all of the development, we would end up becoming a bottleneck.
— Doing all of that on your own would definitely be a lot of work.
Exactly. That’s why we developed a system that allows other teams to add their own content. Toward that end, we aim at a good balance in terms of abstraction, maintain high quality documentation, and provide engineering support. This system offers increased flexibility, but with that comes more parts to understand. We continue to develop it so that it’s easy to understand and easy to write code. Documentation is especially important. We are very focused on ensuring that documents are easy to understand and provide enough information on their own for developers to get started.
We have a concept called “Go Bold” at Mercari. Our team is working on multiple challenges, but we are especially focused on ensuring that the home screen is safe, robust, and reliable. Go Bold is not the same thing as taking disproportionate risks, and we always keep that in mind. There may be systems where it is fine to stop everything in case of an error, but the home screen has a direct impact on our users, and so we are always concerned about challenge and risk control.
— There’s a great variety of content posted on the home screen, so you must have to work with lots of different teams.
Exactly. There are probably around 12 teams. Some examples are the Recommendation Team, the Search Team, teams responsible for displaying Merpay customer balances, and teams responsible for providing product information. Our team therefore spends a lot of time on communication.
Technologies Used by the Team
— What are the main technologies used by your team?
We mainly use the following technologies.
- Golang
- Terraform
- Kubernetes
- Google Cloud Memorystore
- GitHub
- Jira
- Confluence
- Google Drive
We use Go as our development language. We use Terraform and Kubernetes for infrastructure management. Google Cloud Memorystore is a so-called service compatible with Redis. We use this to reduce the backend load when there is a lot of traffic on the home screen.
What’s Rewarding About Working on the Personalization Core Team?
— What do you find rewarding about working in this team?
I find it rewarding to work with all other related teams to continue to try to provide value to customers, as smoothly as possible. Of course, this entails a lot of technical issues. But solving these issues is also rewarding. Things don’t necessarily change dynamically, but it’s crucial to ensure that you always maintain a high technical level.
— What does your team do to ensure a high technical level?
We share tech news and conduct code reviews. Things like that. I think good code reviews are a great opportunity for both the coder and reviewer to grow, so we make sure to set aside some time for the whole team to review code. This helps us to maintain a high level of quality.
Everyone has been working remotely lately, so we’ve been having regular coffee breaks for casual conversation. Everyone can freely exchange opinions and information.
As the EM, I’m committed to ensuring the mental well-being of my team members, establishing a blameless culture, and fostering an atmosphere of mutual encouragement among the team members. Also, this might be minor, but I think how we talk is important. Each time I speak with another person on the team, I pay close attention as to whether the way I speak inspires them to give the best of themselves and allows them to work comfortably. I also make sure to mention anything that I feel needs to be brought up when interacting with members of the team. I don’t see failures as issues with individuals, but as issues with process and environments. If there’s a failure, I share it with the other members of the team as an opportunity to improve our environment.
— Finally, describe the type of person you’d like to have on your team.
I like people that work autonomously and proactively. Engineers need to keep learning, so it’s important to be willing to keep studying. Employees are truly valued at Mercari, and I believe we are provided with a wonderful workplace environment. There are plenty of opportunities to learn new things. There’s also a strong philosophy of contributing to the society at Mercari, so I’d welcome anyone who feels the same.
— Thank you very much!