Financial transactions, including payments by riders to driver-partners and by eaters to restaurant-partners, occur every minute of every day on the Uber platform. Our Payments team, based in Amsterdam, devotes their time to developing reliable, secure, and seamless payment experiences for our wide variety of users.
Supporting these transactions at a global scale requires a uniquely resilient platform, and that’s where our Payments Site Reliability Engineering (SRE) team comes in. This team develops tooling that helps the Payments team build highly reliable systems to serve our customers globally.
Tatiana Romanova, a member of the Payments SRE team, enjoys the challenge of looking for potential points of failure in our systems and ensuring the Payments Platform runs consistently.
Originally from Russia, Tatiana graduated from the Applied Math and Physics department at the Moscow Aviation Institute with a degree in Computer Science. Unlike many of her friends and colleagues, she did not start coding until she began studying at university. Her introduction to programming involved writing an addition function for a Turing machine emulator in her first computer science class.
We asked Tatiana a few questions about her work at Uber:
What do you primarily work on at Uber? What code or dev tools do you use?
I began working at Uber three years ago as a back-end engineer and have worked on various projects, from implementing region-specific features for driver-partners to building a command line interface for performing data center failovers. About two years ago I became an SRE, ensuring the reliability of payments-related projects and maintaining the infrastructure. We use various open source tools to manage it, including Terraform, Packer, Ansible, and Spinnaker. If we find ways to further automate our routines, we create our own tools using bash, Go, and Python. Sometimes, as with Astro, created by my teammate, we even get to open source our tools!
What do you find most interesting about your work?
I like working on reliability and security-related projects. I find it exciting to look for potential failure scenarios or investigate incidents and try to figure out a way to make things more resilient to failure. In many cases, it’s about making things simpler and more logical.
Do you have a favorite working practice that gets you through the day?
I had to change the way I work after my daughter was born. I used to spend longer hours at work so I could always finish what I’d started before I’d go home. Now, I have to work much more efficiently. For example, I read emails and sometimes do code reviews on the train, and make sure to keep my calendar up to date. For email, I’ve switched to the Inbox Zero method, which helps me manage the amount of incoming information and not miss anything important. I start my days by creating a list of things I need to do in Google Keep. Ticking the boxes as I complete tasks gives me a good feeling of achievement.
What do you find most challenging about your work?
Reliability and security projects don’t have an immediate, visible impact. In many cases it involves working to prevent disasters. I consider myself to be a result-oriented person, but with these projects, the result is an absence of a certain event. It makes it a bit harder to quantify the impact of the work. We have a well-established process on my team where for each project, we write a design document which explains our goals and expected results, collect feedback, then start executing. This helps me focus and keep track of the end goals for our projects.
What is it like developing at scale?
At Uber’s scale, even a tiny mistake can affect a lot of users. We need to pay special attention to all the edge cases, because if there’s a slight chance that something can happen, it probably will.
Why did you decide to join Uber?
I was always excited about Uber’s mission. I don’t drive, and never liked making phone calls to get a taxi (hailing a taxi is not really a thing in Russia). So for me, Uber was a game changer: I was able to safely travel in places with poor public transport. Engineering-wise, I though Uber was in a very interesting position: it was still a very young company, but already had a lot of customers, so I looked forward to working on very impactful projects.
What excites you about the future of the Uber Amsterdam office?
The Amsterdam engineering site has grown a lot in the past three years, both in number of people and in terms of its mission and role within the company. In the last few years, Amsterdam has added AdTech, Developer Platform, and Driver Access teams. Currently within payments, there are a number of platform and customer-facing projects. We have a very talented and diverse team—from SREs to designers—working together to make the payment experience as smooth as possible. We used to be very dependent on the San Francisco office when I first joined, but it’s not the case anymore, which has a huge impact on our engineering productivity and work-life balance. I hope the site will continue to grow with new teams and opportunities to Amsterdam, because it’s a wonderful place to be!
Interested in joining Tatiana and the many other software engineers working to solve real-world problems at Uber? Take a look at our careers page!