Add to cart, check out, and deliver! How are Shopee orders handled, and what role do our engineers play in the ordering process at Shopee?
We spoke to Ryan and Cuong, two passionate Engineers from the Order team, for an inside look into their dynamic and impactful careers at Shopee.
Read on to discover 5 things you didn’t know about the Order Team’s engineers, including their career highlights, the team’s Pizza Night traditions, and advice for aspiring engineers out there.
Tell us about yourself, in and out of work.
Ryan (R): I’m a Software Engineer from the Order Team, specifically the Order Accounting sub-team. I graduated from the National University of Singapore with a degree in Computing, and have been with Shopee for about one and a half years.
Outside of work, music plays an important role in my life. Trained as a pianist as a child, I enjoy composing music. I appreciate the balance between the logic of programming and the creativity of music, as they enable me to see things from different perspectives.
Cuong (C): I’m the Engineering Manager of the Order Processing Team. I graduated from the University of Iowa with a doctorate in Computer Science, and worked in the engineering department of a few companies before joining Shopee. I’ve now been with Shopee for about 2 years.
Similar to Ryan, I enjoy music a lot, and play the classical guitar in my spare time to relax. I also love strategic games like chess, Age of Empires, and Starcraft.
#1: How are orders being processed at Shopee?
R: Our Order Team handles the entire process between the buyer and seller. The process consists of 5 general stages, namely: Shopping Cart, Checkout, Processing, Return, and Accounting.
Firstly, our Shopping Cart provides a holding basket for our users. To help our users optimise their purchases, we would suggest vouchers that they can use, and various other ways they can enjoy more discounts.
Next, our Checkout stage helps users enjoy a seamless checkout process by looking into two key areas – how the users want their product to be shipped, and how they want to pay for it.
Thirdly, the Processing stage involves interactions with logistics services, and provides users with visibility on the status of their order at any point in time.
For Returns and Refunds, we ensure a robust and reliable system to handle returns, which helps to ease our users’ concerns on product quality.
And finally, once the user is satisfied with their purchase, the Accounting stage helps to ensure that the sellers receive the correct amount of money for that purchase.
C: To add on, the Order Team’s role in ensuring a smooth end-to-end process is essential due to the large number of orders that take place on our platform. For example, in the first 5 minutes of our 11.11 Big Sale this year, we recorded as many as 11 million items sold across the region!
#2: What do engineers do in Shopee’s Order team?
C: One of the biggest and most interesting challenges we face is the complex business process for order fulfilment. This involves many external systems, such as warehouse management, logistic partners, and notification systems for buyers and sellers.
As part of that journey, we develop systems that can serve millions of requests, while being resilient to errors. For example, in rare circumstances, our servers may go down due to physical conditions. To recover from it and continue our processing, we often use a distributed lock system, like etcd or Redis, to protect the order from being processed twice.
At the same time, we need to engineer the systems such that should the machine crash, the lock for that order will be automatically revoked and safely given to another machine to continue the processing pipeline. This technique allows us to programme multiple machines and effectively prevent duplicated tasks. We also use methods to verify programming logic, which helps to resolve bugs before we launch new features.
R: A common misconception about software engineers is that we stare at our screens and write code all day. That’s not true! Here at Shopee, we engineers get to do a lot more than that, as communication also forms a big part of our role.
For example, we work and learn alongside our product managers to understand feature requirements and advise them on technical feasibility. We also get to present our technical designs to other internal teams to ensure the systems integrate well. In short, being a software engineer at Shopee is more than just being a good programmer!
#3: What is the Culture of Order Engineering team like?
R: Our team looks out for one another, and we encourage each other to be better versions of ourselves. For example, we hold regular sharing sessions where we discuss interesting technical topics and learn together.
Beyond our work, we care about each other too. I belong to the Accounting sub-team, and whenever a new hire joins us, we host a ‘get to know you” session to get to know them on a personal level, and bond as a team. Moreover, to ensure each new hire is well taken care of, we establish mentee-mentor arrangements with new members of the team. During regular catch-ups, our mentee-mentor pairs chat not only about work, but life as well.
I also remember a time before COVID where we scheduled an online meeting with an overseas team in the evening, due to time zone differences. We decided to head over to a team member’s home to hold this meeting, and when it ended, we had a meal together and played games as well. It was an enjoyable and meaningful time to connect with my colleagues outside of our work environment, and I was glad we did it!
C: Our team keeps things lively with regular events each month. Our entire Order team has frequent casual hangout sessions where we hold pizza nights, celebrate achievements, get to know each other better, and did I mention eat pizza? Pizza Night is a little challenging now due to the pandemic, but we’re adapting well using Zoom, and we make use of the team’s welfare budget to treat ourselves too.
#4: What do you enjoy most about your role?
R: As a person who enjoys problem-solving, Shopee is the perfect place to be. We’re constantly churning out new features for our users, and each feature is like a brand new puzzle to solve. After all, designing features that can handle the requests of millions of users requires us to constantly think outside the box.
As an example, to ensure high availability in a system that handles millions of requests, we get our systems ready through stress testing. The purpose of stress testing is to simulate a target RPS (Requests Per Second) on our services to make sure that they are able to serve these requests reliably. From a technical perspective, we can accomplish this by recording real user traffic and replaying them at the specified target RPS in a controlled manner. This will help us observe how our services behave under high traffic. For critical services, we may run daily stress tests to ensure that code changes do not affect the system’s ability to perform.
My role also gives me the opportunity to work with many different technologies. It constantly reminds me of how vast the world of computing is, and how much there is to learn. Being able to constantly grow my knowledge keeps me passionate about my work.
C: My role as an engineer gives me the opportunity to build the systems of Shopee’s marketplace, which connects millions of buyers and sellers together. Our systems have a tremendous impact on society, especially during this pandemic where traditional marketplaces are closed in many countries. If our services get disrupted, millions of people would be affected. This great impact comes with a great responsibility, which is why our team ensures our features are robust and of high quality. Doing so means tinkering with interesting engineering problems that my team and I love to solve.
#5: Any tips for aspiring engineers who are looking to join the tech industry?
R: As a recent university graduate, I think it’s important to get as much practical experience as possible, be it finding an internship, doing your own projects, or self-guided learning.
For example, my Shopee interview process gave me a rough idea of the tech stack used at Shopee. I started learning the tech stack from online resources, such as Udemy and YouTube, to familiarise myself before starting work.
Remember that learning never stops, even after you secure a job! At Shopee, I went through the Clean Code course which helped to standardise our coding styles, and adhere to best practices. It was very useful as it helped me to read each other’s code easily, speeding up our coding development and efficiency.
C: As an engineer, being proficient in data structures and algorithms will give you an edge since we work with high-performance systems at Shopee. Being able to consider issues of scale and distributed systems will also come in handy since we are a big company where every issue is magnified tenfold.
Practice goes a long way too. When I first started my career, I used to watch videos to understand new concepts. I even remember searching for resources like ‘How to be a system architect’ and spending lots of time on Leetcode to improve my coding. At the end of the day, I believe a passion for learning and intrinsic curiosity will pay off for any aspiring engineer.
Inspired by Ryan and Cuong’s experience in the Order Engineering team? Join them as a Backend Software Engineer here.
Interested to know how our Shopee employees are adapting to work-from-home arrangements? Read here to find out how we engage our people through a range of programmes, onboard our new hires virtually, and celebrate life’s milestones together.
What is life as a Shopee intern like? Read here to discover what the internship experience of two of our associates was like, and how it paved the way for their full-time careers with our Business Development and Engineering teams.