Madan Thangavelu was attending high school in Gwalior, India when his teacher cautioned him never to delete a computer’s system files. Naturally, he went home and erased the files on his father’s computer, kickstarting his interest in computer science. Today, Madan is a Director of Marketplace Engineering leading teams that power the logistics behind orders, fares, and product selection.
Tell us a bit about yourself.
“Originally from India, I’ve traveled to every state in my home country and had studied in 11 schools before I finished high school. After graduating with a master’s degree in Computer Science from Oregon State, I worked in mobile security and fintech before joining Uber as our 200th engineer.”
What do you do here at Uber?
“As a Director of Engineering, I lead our Fulfillment, Fares, and Marketplace configurations platform teams. At Uber we are greatly positioned to solve very unique challenges that arise due to the scale and global distribution of our products. These challenges also have real-life implications for millions of people using the Uber platform around the world.
Fulfillment platform is the foundation powering the logistics behind fulfilling consumer orders from any Uber app. We own backend APIs that power the first screen when you first open the Uber app to see a list of products, fares and ETAs These interactions are real-time and high scale when millions of concurrent riders, drivers, and eaters are using Uber.
Fares Platform delivers clear, affordable, and trustworthy fares for all Uber customers and stakeholders. The price estimations you see when requesting a ride with Uber or ordering food on Uber Eats are powered by this platform. Fares is enabling new solutions and unlocking opportunities by scaling faster than ever and supporting billions of fares requests per month.
Marketplace configurations platform manages the lifecycle of thousands of configuration parameters available in the city and interfaces with systems that enforce it. For example, the product selection screen when a user opens our app in a city.”
How has work evolved over the last 8 years at Uber?
“Uber was in its early startup phase when I joined and I was able to wear multiple hats during this time. My primary role was software development, but I got to experience product management, program management, mentoring, operations, and reliability engineering all at the same time. It was fascinating to watch the company grow from just two floors to multiple buildings across dozens of cities worldwide.
Over the last few years, I’ve had the opportunity to bootstrap teams in Bangalore, Seattle, New York, and the Bay Area. This opened up challenges in solving larger technical problems and coordinating across a diverse location of engineers.”
You’ve built a lot over the last 8 years. Any highlights?
“In the early days of Uber, there were no platform teams. I founded one of the first focusing on edge API management, bootstrapping the idea and taking my team to execute it. The platform is now serving all Uber traffic through the platform. It sometimes feels surreal.
During the middle of my career I started managing the fulfillment platform and led the redesign of a system that powers all trips across the Uber platform. It took over a year and 100+ engineers to redesign our core systems. Technically, it was a challenge, and we innovated on so many fronts. The collaboration and the technical engineering talent at Uber are second to none.
My current role is to look at the fares system that determines the price and payment structure between riders, drivers, cities, taxes, and other stakeholders. We are embarking on updates to the tech stack from the ground up so it’s a great time to join the team if you’re up for the challenge.”
What’s something that happened during your Uber experience no one would believe?
“In 2015 I was overseeing an outage where drivers were not receiving any trip requests. An hour into analysis, we identified the cause and deployed code changes. However, our telemetry systems were not as mature at that time. I worked with our ops partner to get a phone number of a driver who volunteered to help us during such situations. I called him and introduced myself as an engineer trying to help. He was shocked and pleasantly surprised to be speaking with an engineer from the company, and we were able to solve the issue together.
In 2016 I received a call at 2:00 am from a regional manager that riders were not seeing any cars on their app in their city. I literally had to search the city on Google Maps and brush up on my geography to confirm that it was indeed a city before resolving the issue. It’s exciting how Uber functions around the clock, expands to cities across the world so quickly and serves millions of people.”
Any tips for aspiring Uber Software Engineers?
“Learn core software principles and build a strong technical foundation. If you’re early in your career, get a wide variety of experience rather than focusing on vertical career growth. If done right, vertical growth will follow exponentially soon after.
Always remember that you cannot learn it all, so having humility as you grow will take you a long way.
Finally, being customer-focused and doing truly meaningful improvements, however small or large, is the best way to add value.”
Interested in joining our team? Explore open roles →