Given Amsterdam’s appreciation for multi-modal transportation—think bicycles pedaling across any one of the city’s 1,281 bridges or boats navigating its 31 miles of canals—it’s no wonder that the European city is home to Uber’s largest engineering office outside of the U.S. Opened in January 2015, Uber Amsterdam is home to two core technical teams: Payments and Developer Platform.
The Payments team is responsible for developing reliable, secure, and seamless payment experiences for users on the Uber platform. Our team digs into the complex but rewarding world of money, from building intuitive and seamless user interfaces to architecting distributed and scalable money systems.
From launching new ways for customers to pay on the Uber platform, like using Venmo, building a solution for drivers to get their money quicker via Instant Pay and Flex Pay, and building the cash payment experience, the Payments team solves numerous interesting engineering challenges. By carving out these new paths to pay for travel, we build products that deliver real monetary value for driver-partners, identify simpler and more secure payment methods for riders and eaters, and create a more magical experience around cash collection in global markets.
While many of our teams do user-facing work, we also have teams in Amsterdam building the next generation of our distributed money systems serving all of Uber. For instance, our Payments SRE team develops tooling that helps the payments teams build highly reliable systems to serve our customers globally.
And finally, our Developer Platform team empowers Uber engineers to ship the highest quality software as efficiently and safely as possible. The team in Amsterdam is building the future of converged infrastructure at Uber—a distributed system for scheduling and managing thousands of concurrent builds across regions. In addition, the team develops the tooling that hundreds of mobile engineers at Uber use on a daily basis to build and test our apps safely and efficiently.
Read on to learn more about our teams at Uber Engineering Amsterdam:
Xiaolan Shen, Engineering Manager & Site Lead
What brought you to Uber Engineering Amsterdam?
My first impression was that Uber offered a unique opportunity. I had primarily been working in the enterprise software space; Uber is consumer-facing, fundamentally a platform business that’s built atop the most leading-edge technologies, serving thousands of markets and millions of people. In my opinion, Uber democratizes the service industry by providing a platform that enables everyone to consume and provide services, anywhere, any time. I found the concept very disruptive and fascinating at the same time. This curiosity nudged me to join. I want to build the world-class teams and products that continue to make an impact.
When I came to Amsterdam, I was immediately absorbed by its investment, diversity, and vibrant energy around innovation. I fell in love with the city and the idea of working with its tremendous international talent pool.
Technology and innovation have been very much centered in Silicon Valley, driven by the large percentage of tech venture capital going to this epicenter. The talent market there, however, is increasingly unable to keep up with the growth demand. At the same time, the international talent pool has largely been untapped. All we need to do is to make sure we build a foundation on which engineers are attracted, developed, connected, and empowered. Throughout my time as an engineering leader, I’ve worked with engineers across the globe; I have come to understand the nuances and the challenges relating to working remotely and to diversity. The reality is that our teams work across time zones. Without the context, the hypersensitivity around changes would diminish the nascent resilience of the distributed groups. If done right, however, ultimately we can have a united talent pool where each cluster is connected to the innovation fabric.
What is your long-term vision for the site?
There are three things I want to focus on as a site lead. The first is to make sure that we’re working on the right initiatives. That means we’re focused and we fiercely prioritize, providing key business values, enablers, and impact, for example, by building a superior global payment platform. The second is to attract and develop talent, a nontrivial task in such a diverse environment. We have 135 colleagues at the AMS tech site from 20 nationalities—that’s a very diverse environment where we need to ensure that all the core values are aligned, and that their talents are stretched properly for them to grow to the next level. The third goal is to create the communication architecture for distributed sites. This is extremely important when you are not part of the hallway conversations at headquarters. This communication architecture will enable us to be proactive about planning and execution, and to be plugged into the company’s vision and core values. In the long-term, the site will grow sustainably on this foundation to be an innovation hub outside of the Bay Area at Uber.
In addition to leading the site, you are leading Uber’s Payments Engineering team. What are some of the challenges your team is facing?
When companies get very successful, very fast, sometimes the technology they put in place is unable to scale to their future needs. With this in mind, the challenge is two-fold.
One challenge is to determine the right balance to deprecate the legacy systems so that the architecture sustains a robust growth for global business and gains trust and love from our customers. An analogy would be building a new bridge to replace an old one. How do you keep the current bridge in a good shape, so it supports the running traffic, and at the same time, build the new bridge, sufficiently test it, and slide it underneath the growing traffic volume? Now consider how hard this becomes if this bridge serves our payment processing traffic worldwide.
The second challenge is to abstract the complexity of the payments world. The global compliance needs to be met in terms of money movement are tremendous. In addition, there are hundreds of payment methods worldwide. We need a platform that is the most reliable, accessible, and locally competitive. Integrating these payment capabilities manually one market after another is not going to scale. We have to come up with a simple, elegant, yet cost-efficient system to seamlessly onboard payment methods and to enable new markets with as little human touch as possible.
Femke van Schoonhoven, Product Designer
What do you do here at Uber?
I joined Uber in August 2017 as a product designer on the Cash Payments team in Amsterdam. Together with our team’s product manager and UX researcher, I help design cash-related experiences for riders and drivers. This usually involves a lot of research, testing, conceptualizing, ideation, and exploration. What I find interesting about cash payments is that you’re designing in a digital space for a physical experience, so my designs focus on how we can positively facilitate the cash exchange between riders and drivers.
In addition to my role as a product designer, I also contribute to our internal and external design community. I lead the @DesigningUber Twitter account and also organise and speak on behalf of our design team at local meetups and events.
You’re originally from New Zealand. What prompted you to make the move to Amsterdam?
After graduating from university in New Zealand, I wanted to see more of the world and travel. Rather than embarking on a temporary overseas experience, I decided to pack up everything I owned and move across the world. I now make the most of the weekend by taking short trips to other European countries and learning about different cultures.
Amsterdam is a beautiful city to explore—the size is perfect, allowing you to bike almost anywhere within ten minutes. Of course, Uber is my go-to when heading to the airport. Having visited several times in the past, I knew Amsterdam offered an appealing lifestyle complete with great food, transportation, people, and (sometimes!) weather. Being able to explore your city by bike or jump on a train and be in a different country within an hour has made Amsterdam a great home base for me.
What’s something about your role that most people wouldn’t know?
How much a designer’s role is interwoven with product. As a product designer at Uber, I work very closely with my team’s product manager on setting goals, expectations, and targets for a project. My responsibilities not only include designing the product experience, but also deciding what we’re going to build to create the best user experience possible. Designers are very much involved in the decision-making and often guide that discussion.
What do you like most about your job at Uber?
I like that I get to work with a range of smart people from different disciplines. On a daily basis, I’m interacting with engineers, researchers, data scientists, product operations, product managers, and designers. Together you have an immensely smart team that cares deeply about the experiences we’re creating and the impact it has on our riders and drivers.
Nick Jones, Data Scientist
You got your start at HQ back in 2014. What drew you to Uber Amsterdam?
I had several colleagues from Amsterdam come to San Francisco and they would always talk about how great it was. So, when the opportunity to work in our Amsterdam office on our Payments Platform team came along, I was intrigued. I did a lot of research and spoke with my Amsterdam colleagues to get a sense for the full experience. The more I learned, the more amazing it seemed, and it hasn’t disappointed. Every day I bike through Vondelpark, the Central Park of Amsterdam, and along beautiful canals to get to work. So many places are a quick plane or train ride away, and the quality of life is very high here.
I was also drawn to this role because Cash Payments is such a super high impact team. Having played a part in that, and being able to move the needle for the company so much, makes me enjoy my current role quite a bit.
What does it mean to be a data scientist at Uber?
To be a good data scientist at Uber, you need to be part statistician, part engineer, and part product manager. My team relies on me to design experiments that will let us decide if what we are building is best for our users, and sometimes this can get pretty tricky because of Uber’s two-sided marketplace (three-sided in the case of Uber Eats). If what we are testing affects the whole Uber ecosystem, then your experiment is going to be biased, so sometimes you have to go beyond a traditional A/B test to understand the true impact our product is having.
You also have to understand the product very deeply or you might measure the wrong thing. I constantly ask myself, “Would I care about this? Would I use this feature? What am I trying to get out of this?” I went on a research trip to Singapore and Jakarta with my team’s product manager, researcher, and designer to really understand what users wanted in those markets, and what metrics I define to capture their experiences. This made me design more effective experiments, and improve our team’s roadmaps as a whole.
How does your role fit into engineering?
I recently had to architect a machine learning system to make predictions in real time to customize users’ in-app payment experiences. The statistician part of me liked iterating on the algorithms, features, and hyper-parameters, but setting up the infrastructure to derive features, move them from Hadoop to Cassandra, compute in real time, and serve a prediction to our back-end services also took a lot of effort. We had to test the actual API calls and set up long-term model performance monitoring. Some people think of data scientists as just running SQL queries and making dashboards all day, but we also deploy code to production that powers the entire product, which can be very exciting, because how good of a modeler/machine learning engineer you are can determine the quality of experience that Uber users have with the app, so you want to make sure to get it right.
There is a fair amount of engineering involved with experimentation as well. We have to make sure that the treatment groups are balanced, that our mobile code and backend code is logging events properly, and that the integrity of our experiment metrics is sound. And if we are doing a more complex experiment setup, like a multi-armed bandit, we have to make sure that the parameters we are trying to optimize are being tested appropriately. We also fundamentally drive the engineering roadmap through experimentation and opportunity sizing, working with the product managers to decide what we will build next.
What is one of the most challenging projects you’ve tackled since starting with Uber?
One my most challenging projects involved a partnership where riders got a 20 percent discount, and trying to empirically evaluate what Uber’s incremental trips were from that partnership. Of course, we couldn’t hold back a control group and not give them the discount to compare them with those that did, since the partner had marketed this to everyone. So instead we used some Bayesian statistical gymnastics to estimate how those that received the discount would have behaved in its absence, and then compared that with what we actually saw. It was a rigorous project, and one that was very fun to work on.
Amrita Banerjee, Product Manager
How did you get into product management?
I would say that product management happened to me rather than being a career choice. I was a business development manager for a mobile financial product suite. Being in business development involved traveling 25 days out of 30, and eventually I decided to move away from the ‘up in the air’ lifestyle. Sensing my desire to travel less, my manager offered me a product manager role building the products that I was selling so far. That is how I got into product management. I do feel like I found my calling and I am going to do this for the rest of my life.
Why did you decide to join Uber’s product management team?
I started as a product manager at Uber in April 2017 in our Bangalore office. I was part of the Asia Strategic Payments team in India building payment products for the Asian market. When global growth was merged into the core team, I was offered a product manager role on the Payments team. When I transferred to the Uber Amsterdam office, I joined the Cash Payments team.
You were working at Uber in India prior to joining the Amsterdam team. What prompted the move and what has been your favorite part about living in Amsterdam so far?
Coming from India, I think there are two things that I appreciate the most about Amsterdam: I can bike everywhere, there is very little traffic, and I can spend my weekends going to museums, parks, or even an old castle—the possibilities are limitless. Other than that, what I love about work is the kind of diversity we have here. I have learnt so much about countries and cultures while working with people from literally every continent.
What does success look like to you?
Success manifests itself in a multitude of achievements. As a product manager, success to me is all about building products that solve a problem, meets a need, and results in user delight. As a people manager, investing in the success of my team and helping them meet their professional goals is paramount, and a happy team is how I would measure success. On the personal front, if I can make a good human being out of my three-year-old son, I’d be delighted.
Can you tell us about one of the most interesting/exciting projects you have worked on since joining?
I am very excited about my current project, a new means of collecting Uber’s service fee from partners in cash markets. It is extremely complex in terms of what our partners think and feel when they need to pay back the cash they collected on behalf of Uber from our riders. What makes it complex is the global nature of the business and how payment behaviors differ between countries.
Chris Laffra, Software Engineer
Why did you join Uber Engineering?
I grew up in the Netherlands and got my computer science degree at the Vrije Universiteit of Amsterdam, focusing my studies on programming language implementation and operating systems under Andy Tanenbaum. After pursuing my PhD at Erasmus University, I moved to the U.S. and lived there for 25 years, working at places like IBM Research, Morgan Stanley, Bank of America, and Google. Last summer, I moved back to the Netherlands to be closer to my family.
I started at Uber in January 2018. When I first visited the Uber Amsterdam office, I was immediately struck by the passion and intellect of the engineers I met there. I could tell that I would get the chance to work with smart people on projects that can ignite opportunity for our users.
What do you do on the developer platform team here at Uber?
I lead the team that tries to solve the problem that companies often face when they build products used across iOS, Android, and the web. Rolling out features can be tedious and time-consuming due to delays in production and app store publishing. To counteract these forces, we started focusing on optimizing runtime performance and avoiding possible lags in the process. We designed our own language, built a compiler, engineered three runtimes, wrote a backend to host the screens, and created an integrated development environment to construct screens really quickly. Additionally, we interact with many teams at Uber on a daily basis, so in the process we learn a lot about Uber’s business and how software is built at scale.
What is some advice you would offer to new team members?
When you first set out on your career, try to work on something in your comfort zone, just to get you going. Once you are settled, keep delivering your assigned deliverables. However, feel empowered to take on responsibilities outside of your direct scope. Pick up something you are passionate about, go the extra mile, and own your new contribution. Demonstrating leadership and your ability to make an impact is important for your career growth. For example, consider refactoring a gnarly component, presenting at a public meetup, writing a blog article, creating extra tests to increase the quality of your team’s code, or helping a customer use your APIs.
What is something you really love about working in Amsterdam?
You can reach almost everything by bike. We actually have an order of magnitude more people commuting to the office by bike than by any other mode of transportation. In fact, the bike storage at our office was recently enhanced with a second story to hold all the bikes! Also important: the food at the Uber Amsterdam cafeteria is the best I have had at any tech company.
Gergely Orosz, Engineering Manager
What do you do here at Uber; can you share your story?
I joined as a software engineer in July 2016 on the payments team, and my first project involved rewriting the Uber app from scratch. I then moved into engineering management, heading up the team I started working on. One of the great things about a place like Uber is that, due to our constant growth, there are always interesting opportunities to pursue, just like I did.
What brings you to Uber and Amsterdam more specifically?
I moved to Amsterdam after living in London for several years. When my daughter was born, my wife and I started to look for a place that is more family-friendly to live—getting around with a stroller on the crowded tube was quite the nightmare. The fact that Uber’s Amsterdam office was one of its biggest global offices made the decision to move here a lot easier.
How would you describe engineering opportunities at Uber to job candidates?
We are a fantastic place for technologists who are comfortable translating their ideas into working and reliable code and have an entrepreneurial streak. We have a lot of freedom to decide how we reach goals as a team. This means our engineers make a lot of decisions on what kind of tradeoffs we take when building systems, what languages, libraries, processes we use, and what the most important things we should focus on are.
Also, when I joined, I was surprised to find that there are engineers with a depth of knowledge in many areas who are really open to mentoring. I joined Uber with the experience of having built and shipped production systems at scale for over 10 years and was humbled by how much more I could learn in this environment from some really excellent mentors.
What is your favorite part about working at Uber Amsterdam?
I had (and still have) many moments each week when I realize that I work with people who know a lot more than me in an area, giving me new insight on technical challenges I’ve tackled for almost a decade. Within the company, any time a team intends to start a project, they send around a plan of what they want to do. When reading these plans, I kept seeing references to things like strong consistency, durability, message persistence: distributed concepts I did not have to previously use.
I did a lot of reading, as well as talking with other engineers, learning as I went. In the end, I ended up writing a summary of what I have learned about distributed systems in the time I have been here, a post that seems to have resonated well within the engineering community. It’s this continuous learning that I enjoy the most.
Subscribe to our newsletter to keep up with the latest innovations from Uber Engineering.