At Mercari, we have been making changes in order to implement a microservice architecture on the backend of our app. However, some of our core systems (for example, the Item Transaction feature) are still running as part of the PHP monolithic application that has supported our growth so far. Our team is responsible for developing and maintaining these core systems. Given that the systems are complex and have a long history at Mercari, agile development remains a challenge for us. To solve this, we have to ensure that our core systems are loosely coupled in order for us to both augment these systems and contribute to our business growth going forward.
The Mercari Engineering Division has defined this new direction as building a “Robust Foundation for Speed.” In order to achieve our company mission under this new direction, rather than migrating to microservices, we have taken on a more essential and worthwhile challenge: modularizing. Specific work responsibilities for this position include the following:
- Developing and maintaining core features (PHP or Go, etc. as needed)
- Designing loosely coupled/modular systems
- Working with PMs on a series of development tasks (plan, design, implementation, QA, release, etc.)
- Investigating inquiries from customer support or other development teams
- Conducting system operation tasks, including responding to alerts while on call
Bold Challenges
Besides your software engineering skills, in this position, you will be able to utilize comprehensive problem-solving skills. You will need to approach these problems by setting and testing hypotheses, and you will need a lot of curiosity and attention to detail in order to tackle core systems that run a huge number of item transactions everyday. These are important systems that handle user assets, so it’s important to go beyond our team’s domain to understand the features’ end-to-end behavior and how they relate to other features. Some features, however, can be hard to fully understand simply by reading the code because they are too complex or old. This will require that you embrace some level of uncertainty and strategically set and test hypotheses to check them. Additionally, you will need to always keep your goals in mind and try to find solutions thinking outside the box.
Requirements
- Shared belief in Mercari’s mission and values
- Experience developing and operating systems for large-scale products, selecting technologies and improving their codebase
- Experience in API development using programming languages such as Go, PHP, or Java
- Experience in designing and developing with databases (MySQL or similar RDBMS)
- Ability to design and develop products while considering performance and scalability
- Extensive knowledge of object-oriented software development, networks, memory management, and software testing
- Good communication skills to collaborate with stakeholders and teammates on product development
Nice to haves
These aren’t required, but be sure to mention them in your application if you have them.
- Domain knowledge in e-commerce, order management, payments, shipping and delivery, etc.
- Experience with project management or team leadership
- Experience with Scrum
- Experience developing and operating systems using microservice architecture
- Knowledge of and experience with databases (RDBMS/NoSQL), networks, Linux, monitoring systems, logging, and SLO/SLA
- Experience with software development in the cloud (GCP, AWS or Azure)
- Experience contributing to an open-source project
- Basic Japanese ability