DEV Community

Iman Tumorang
Iman Tumorang

Posted on • Originally published at Medium on

Moving On: Building SEA Payment Infrastructures with Xendit

Photo by Evie S. on Unsplash

It’s been a year after moving from Kurio. My past company. There are so many things I learned when worked in Kurio.

I learned about Products and Metrics pretty well. Learning many buzz-words in the product world like DAU, MAU, Retention Rate, Push Notification rates, etc. Data-Driven decision to create features in the product, and many things.

I also learned many Engineering practices. Like CI/CD, I learned how to make a CI/CD pipeline from scratch.

I learned about migrating from PHP into Golang. I learned about Microservice. Domain-Driven Design. API Driven Development, Software Testing. Semantic Versioning, Docker, Kubernetes, and many more buzz-word in Software Engineering. Creating Push Notification service, Logging service, profiling microservice, and many more.

I would say, the current me, I believe I’m pretty confident, I’m able to create a product from the backend side that will be needed. It’s thanks to Kurio.

I must say, it’s hard to leave Kurio. For the past year, I still meet my old’ friend there. Asking how Kurio’s doing. Is there any new issue, why is that? Is my legacy having bugs or issues? etc.

So, a few of my friends asked me, why do I leave Kurio? There’s a lot of reasons for that, but one thing for sure is, I really love scaling problem. I’ve talked to my manager about how I excited about handling big scale services. I’m hungry for more challenges.

Later I know, I’ve applied to many companies, I don’t remember which one. But mostly is on the scaling stage.

Moving to Xendit

Long story short, I finally choose Xendit. It’s not because I know someone here. To be honest, I don’t have any connection in Xendit back then. I don’t know what they’re doing. I even know what Xendit’s product when on the interview process. But I’ve known Xendit quite active in the community back then.

And, I like the vision of Xendit which is: Building SEA Payment Infrastructures. Infrastructures mean the foundation, the base. So, Xendit aiming to be the base of the Payment in the SEA. Not only Indonesia, but SEA, or event the world. And talking about payment, every business will have the payment stuff. So, we’re aiming to help every company from startup to enterprise to get paid and growing. We also want to born another unicorn born in SEA by helping them to handle their payment. So I’m not surprised, that many of our users are startups. And we want to grow together with them.

*above paragraph is a sponsored content 😂

And Xendit back then (till now as well) is still on the scaling stage. Like massively growing. I thought this is the right company for me to learn what’s the pain in helping the company to scale.

And this is also the reason (why) I’m not trying to apply to any unicorn company. The unicorns already too big! There’s no significant impact for me if I join them, except if I got a higher position tho, but I’m not confident yet for a higher position LOL. And looking for Xendit, I might still have a bigger impact, maybe bigger than the other’s company if I joined them.

Interview and Test to Xendit!

Photo by Van Tay Media on Unsplash

It takes 1 week for me to pass all of the tests. So in my period, we have 5 steps.

  • Screening with HR Manager
  • Pre-Assessment
  • Interview with Teams
  • Trials with the full team
  • Offered / Rejected

Screening is just a simple interview with the hiring manager. The questions are just about who am I, what’s is my previous job, and many more.

The next step is, obviously, the coding test. The HR give me the link for the test link. And it was a coding test. Luckily, the test for me is so easy 😂. I’m so lucky at the time.

After passing the pre-assessment, the next step is also a simple one. Interview with the teams. And no technical things here. Only about explaining things. And surprisingly, the interview was done in google hangout. So no coding on white-board or etc. So simple I think. I’m beginning to lose respect for this company. Why the test is just like that. 😂

But, the next step was the hardest part. They asked me to do a trial on their company for 2 days. So, then, I join the trials in their company. They give me a task to design some architecture of one of the payment channels in the company. I remember, they ask me to design a full architecture for BRI (one of Indonesian’s Bank) Virtual Account (VA).

In two days, I need to design a full architecture of the BRI Virtual Account, start from the Bank, and also how should Xendit handle it. With the limited time and resources, I tried my best, not to mention, I don’t have any experience in Payment or Fintech previously.

Not to mention, on the trial day, I also have an interview with the CTO. I’m starting to feel afraid, my respect point raised again to this company. Now I understand why the previous steps are too easy. I fell to the trap 😱

And later, on the final day of my trials. They asked me to present my design architecture to the team. Also, they asked me a few pseudo-code to do random VA generator. In a room, crowded by the teams from Software Engineers, QA, TechLead, and the Director Engineering also the HR. I’m starting to nervous and sweating 😂.

Photo by Headway on Unsplash

So much pressure in that room. Not to mention again, everyone is speaking in English. My English is not so good, so it’s really hard to understand what the hell they’re talking about there 😂 *no offense teams ✌️.

And then, I presented all of my findings of the BRI architecture. Also, so many questions come from the engineers. I don’t remember every question they asked. But I only remember the questions that come from the Director Engineering (to be my Engineering Manager later when I got accepted), that he asked me a few things about database and algorithm stuff.

Luckily, I passed that hell 😂. That’s was a 1-hour hell for me.

Challenges so far

So, now I’m working as Software Engineer in Xendit. Xendit is my third company after I graduated from 2016 ago. Starting for 6 months in Bornevia, and 2 years in Kurio, and now I’m here in my third year after I graduated from college.

First impression on Xendit? WOW! Just WOW!

So here are the challenges that I got for the first year.

  • Culture Shock!
  • Security and Policies!
  • Node JS world
  • Re-Architect and Re-Factor
  • Scaling Across Southeast Asia Region

Culture Shock!

It’s obvious, I face this one. I’m really shocked and surprised. From the culture, it’s really really different from my previous company. Here, we able to do remote works no limit (even without the covid)

Our teams located in 5 locations remotely, Jakarta, Singapore, Kuala Lumpur, Philippines, and also in the US, a few engineers work remotely from UK and Canada as well. And because of this, we need to utilize the Google Hangout pretty well.

So, sometimes, it’s hard for me to feel the flow. When I need to discuss a few things with someone, I must book their calendar. And if she/he in the office (Jakarta), we will be discussing it in the office. But if not, we have to do it through Google Hangout.

So, in the first week, I’m surely lost. I don’t know what to do. Because I still need to familiarize the culture.

Photo by Jonathan Rados on Unsplash

Not to mention, in my first week, everyone is really busy. I wonder why, but later I found that we have 2 issues and problems that need to solve faster and that issues affect all of the Xendit products.

So I’m totally lost. No one from the engineer can onboard me well. So, I must learn all of the systems by myself. When I’m stuck, I need to book one of the engineer’s time from the Google calendar. That’s really stressful for me in the first week.

Security and Policies

Another challenge that I got here compared to my previous company. Due to the needs for security/compliance, new technology should get buy-in from several stakeholders to make sure we can keep serving customers in an internationally secured way

Photo by Gayatri Malhotra on Unsplash

So it’s a bit hard to try new technology. Whatever the tools are, I can propose anything but it’s must follow the PCI (Payment Card Industry) Compliance that already standardized internationally. So it’s hard to find good tools and follow the PCI Compliance. There are so many things we need to check and follow.

Also, another challenge is, I need to do a PoC and create an RFC document which is pretty new for me. In my previous job, whenever I want to try new technology, I just implement it directly without do PoC and RFC things. Just do it! And deploy it!

Node Js World!

If the world created by a Programmer. Comic by Toggl.com

When I join Xendit, I come from Golang backgrounds. So I don’t have clear experience in JS. In my first company I use JS for 6 months, but I already forgot how to code in JS. The first challenge that I got here is only to re-learn everything. And it’s kind of really hard for me. Even till now, I’m still trying my best to learn Javascript and Typescript.

And after joining Xendit, it’s like a Deja Vu, and reminding me of my first company, everyone is freestyler and texas mode. Especially when building features and products.

But, even for that, I also trying to propose Golang here too. I even do a crash course about Golang here. And to be honest, it’s really really hard for me tho. Not only to evangelist the Golang, but I also need to help the team to make the flow more clear and standardized like to do refactor to the flows and the microservices.

Since right now everything is really freestyler, especially the engineering practice. So no wonder there are so many things that still need to improve here. And that’s what makes me more interested in joining Xendit. This is a scaling problem, and if we can solve this, then I believe Xendit will grow faster than the current conditions.

Re-Architect and Re-Factor

Another challenge is, in my second month, I’m proposing re-architecting of our current system for the payment services that handle the Virtual Account and Retail outlets.

Even I already have done so many re-factor, re-architecture, and re-writing services in my previous company. This is a different story. If in my previous company, if just only a small thing that makes the system complicated or not reaches our selfish standard, we just re-write it.

And later, when we have a new product, if the system is not good enough to support the new version, we then just re-write another service that has a similar function with it. At least this is what I fell when I work there. I’m not sure now.

But then, it’s possible because all of the services in my previous company are really well maintained and connected. The flow is clear from top to bottom, or vice versa. So we can easily do re-factor and re-writing.

It’s different from the Xendit has. Due to the large codebase and high interconnectivity between each service we need to think creatively when doing refactor to roll out a new system but making sure we are still able to serve the scale that we currently have to support all merchants.

Photo by Vikas Anand Dev on Unsplash

If only we do something changes to flow in service in a care-free, it can break everything. The services are so fragile.

So the solutions that we decide then is to build a new entirely flow of microservices, to avoid to break anything with the current productions. And the good thing is since I’m the one who proposes it, I make all the new services written in Golang, no particular reasons choosing Golang over Node, it’s just a matter of interest. Also, with some benefit, compiled to interpreted, it always compiled to be chosen in a matter of performances. Since the system that I proposed for re-architect is a core product, so I think, it’s good to say to choose the performance over the delivery time. We’re not rushing on development, like doing market fit, so it’s okay to choose Go over Node. Besides, the team approved it.

So, it really really hectic for me, at first, I need to deliver the new architecture, and also, I need to mentor the teams about Golang. This is totally a new challenge that I never faced in Kurio.

Scaling Across Southeast Asia Region

Another big challenge that I looking forward to in Xendit is about scaling to SEA Region, from Philippine, Singapore, Malaysia, and Indonesia, and other countries.

There are a few products that we want to replicate across SEA, like for example right now, Retail outlet payment that available in Indonesia and Philippine, Direct Debit payment, and many more.

And to support this movement, engineering problems will be very challenging in every aspect. From maintaining the legacy, then refactor to support multi-country. Security and compliance that can differ between country. It was totally a new level game for me.

So, sometimes I had a dream, which makes me like feels regretting, due to a bad decision to leave Kurio. But for now, I believe it’s not a bad decision, and I keep saying this to myself, I leave Kurio for the better of me, and to solve another level of challenges. And I’m looking forward to solving other challenges in the future wherever my journey ends :)

*PS, I’m hiring for my team, email me at iman[at]xendit[dot]co. In case you’re interested to join me to solve the scaling problem and many other challenges for building payment infrastructure in SEA

I drafted this after my probation ended in October 2019 last year, haven’t had time to check and publish until now. So I’ve updated a few words, like “been a year” or “past year” originally it was “been 3 months” or “past 3 months”. So when reading this, imagine it was still October 2019


Top comments (0)