about Tech Talks
What I’m working on currently:
I work on a backend service that is responsible for cashback and coupons, just some of the many features our users love. It’s a nice feeling getting cashback and knowing it passed through lines of code written by me and my team.
The CLM Team:
I am mainly involved in the development of new features, ranging from small to large ones like My Number Point, PayPay coupons, Jumbo campaigns, and many more. This requires all-around involvement in stages like project communication, requirement gathering, design, development, load testing, deployment, and the usual stuff we’re used to. However, each time the flow feels new, and I get to know how it is actually expanding the horizons of the online payment scene in Japan and enabling customers to use new capabilities that were unknown yesterday.
Development works in a week-long sprint with nicely planned tasks and clearly communicated timelines and priorities so that surprises are kept to a minimum. Development involves the usual arsenal of Kotlin, Spring Boot, and MySQL as well as someones that are new to me, like DynamoDB, Kafka, and SQS.
Also, after I joined last year, five new members joined in CLM team, so it’s always fun to get them on the same page and share some of the sins I’ve committed in our repo (designs that I thought would be best at the time). I have been able to learn so much more from the new members than I have been able to teach them.
A Technical Challenge I Experienced Recently:
At my previous company, I worked on a medium-scale service, single-digit TPS, but at PayPay it’s different. Event processing is the backbone and not having direct experience was tough, given it was in Scala and Akka, and a lot of the `future` is still unknown.
I first started with writing the test code of the event flows to confirm that my understanding matched what was actually happening. This helped me learn the flow of Scala while improving service resilience. This was just one step to be able to write production-level code in Scala.
After that, I developed the features which had similar existing patterns while improving upon them. I learned Akka up to a certain level and simplified some of the flows with new design patterns, like divert-sink instead of passing around errors.
After a few months, when I had enough experience and knowledge with a particular set of flows, I developed new services in Kotlin with better performance. I took the initiative to migrate some of the code into Kolin, for which PayPay has a higher adoption rate internally, given not many members have expertise with Akka or Scala. This improvement is still in the development phase, but a lot has been wagered on it, and now, it’s one of the most anticipated improvements in our team.
Instead of a big overhaul, the service was first understood, simplified, and improved as much as possible. Then, the singular flows were targeted to be redesigned in a more resilient manner and developed with a commonly known technology stack. This stack is tested as POC and already used in multiple currently running services in production. Finally, I will be pleased to make something manageable that new members can easily contribute to without any issues.
What I like to Challenge at PayPay:
In the next 2-3 years:
I’d like to continue working in my present role. My lifestyle motivates me to design more extendable and low-maintenance services.
It’s so amazing that the work environment and culture here enabled me to learn so much in such a short time. I was unfamiliar with a lot of the new technology, but never once felt any difficulty in finding motivation or getting resources.
In the next 5-10 years:
I’m still planning what I’m going to do.
My Typical Daily & Weekly Schedules:
My team has a weekly sprint cycle. All the tasks are discussed and planned with the team, and this works to balance everything among our members.
I like to start my day early, around 8:00, to catch up on blocking communications and focus on the most important tasks while there are fewer distractions. Around 11:00, we have a team stand-up meeting and sometimes partake in team-building and learning activities, like reading books or holding open discussions. In our daily stand-up meetings, we make sure we are in sync about the status of projects and any blocking points are brought up so we can get support from the team.
At noon, I have lunch, take a walk, and glide through my tasks and communication tools, checking for any unexpected errors. After a couple of hours, I take a tea break and do one more lap. I log off around 5:00 and head to the gym or go for a run along the small river in my neighborhood. I usually like to respond to messages anytime throughout the day, even when I’m not working, in order to have quick communication and minimize blockers.
My Career before Joining PayPay:
I’ve been interested in computers since grade school. I then shifted towards programming which led me to pursue computer science in university. I graduated from IIT Kharagpur in 2016 with a computer science and engineering degree.
Just before I graduated I was campus recruited by the major telecom company in Tokyo. I was very pleased to get an opportunity to work in a foreign country. I had very little knowledge about Japan at the time except for what I knew from anime or Takashi Miike movies. I moved to Tokyo in September of 2016 and joined the telecom company as an ICT engineer with very little idea of what to do, but I brought a lot of energy to my work.
For the first few months, I went through training and started getting used to the new environment and work culture. After that, I joined the cloud division as a full stack developer on the web service to monitor, operate, log, do marketing, as well as handle customer communications and incident logging for over 10 million cloud devices for the telecom company’ own Enterprise Cloud Services, which is a global IaaS platform. For the backend, Java, Spring, and MySQL were being used, and for the frontend, we used Flask, a Python web framework. This was the first time I got to work in a professional capacity and understand the balance between development, urgency, communication, and maintenance.
After a great three years with them, I joined Oyo Life, Tokyo. I was super pumped because there were a brand I knew from back in my college days in India, and many familiar faces were already working there. Oyo had just set up for the first time in Tokyo in September 2019, and I joined the company in October as one of the first engineers. I worked mainly on the backend (Java, Spring, PostgreSQL) and had occasional fun with React JS on an internal admin portal to manage booking and communications. More specifically, it’s an online, long-term, booking platform and is honestly one of the easiest platforms to use to rent an apartment and move in the next day. There had been some hiccups with the business because of the high-paced environment, but to date, it was the most fun I’ve ever had. I think I learned the most from working there too. I also made a lot of lifelong friends there. I joined Oyo Life as an SDE and was promoted to SDE2 (https://www.oyolife.co.jp).
The Reason I Decided to Join PayPay:
PayPay is one of the rare, purely technology-driven companies in Japan. I learned about them from a friend of mine, and they told me that the actual work is closer to the direct user. At my last company, Oyo, I was lucky enough to learn from the job and colleagues, and I was eager to work on a large scale. PayPay ticked off all the right boxes being a large-scale company and one that’s well-loved by its customers while still having a perfect balance of the latest technology and stable economics.
Meeting with members of PayPay, I was sure that the company was the best place to provide me with personal development and where I could contribute to my fullest. I had the interviews and participated in the discussions in January 2020 and joined in April. All of my questions were answered, and my doubts were considered and put to rest, which made me confident in joining the company.
A Message to Aspiring PayPay Employees:
From the start, I was aware that PayPay had an extremely talented tech team, and after joining, I was even more impressed with the internal culture that nurtures the company’s engineering. There are weekly learning sessions taught directly by engineers and explained in an easy way which looks at how technologies are used in different teams. Every Friday, there is an all-hands meeting where all the product team members are present and a high-level organizational view is shared. We also share new developments, future plans, and more. This really makes me feel like I’m part of a family.
It is really easy to reach out to all of the team members, and informal communication is encouraged. Simple and direct communication overcomes half of our hurdles from the get-go.
Finally, Work-From-Anywhere is bliss. I can’t even imagine going back to the previous style. It is highly productive and allows for a maximum work-life balance. It’s an amazing policy.
Clear communication and continuous learning are key to enable you and everyone around you to succeed. There are no stupid questions. Quickly communicating your confusion and having it resolved is one of the best practices. Being a team player willing to support and cheer on other members is also important. I usually hang out with some of my colleagues outside of work, enabling us to bond and share common values to be able to support one another.