Skip to main content

Tell us your location

Please enter your nearest city name to help us display the correct information for your area

Senior Backend Software Engineer - Payments (Amsterdam)

Backend, Engineering in Amsterdam, Netherlands

About Uber

 

Uber is changing the way the world moves. Here at Uber, our mission is to bring transportation for everyone, everywhere. We served 4 billion trips in 2017 and are currently operating in more than 600 cities, across 65 countries, enabling 15 million daily trips, and connecting over 75 million monthly active riders with 3 million active drivers. We are currently making significant investments into our systems to support the continued growth of Uber at a much larger scale, globally.

About the Role

 

Uber is looking for Senior Software Engineers to join our payments team based in Amsterdam, at the heart of our international engineering efforts. We are looking for passionate and pragmatic technologists who are able to design, implement and deliver scalable and resilient systems. We look for collaborative role models who are approachable and can mentor the talented people they work with.

We are looking for someone with a passion for designing, building and scaling highly-available, mission-critical systems that support millions of users on a daily basis. Our systems ensure accurate and on-time payments where money is collected from customers and partners are paid timely. In 2017 this meant processing $37 billion in gross bookings which were made with over 4 billion trips.

What You’ll Do

 

  • Provide technical leadership and vision in designing, implementing, testing and rolling out the next generations of our payments systems.
  • Take a full-stack approach. Each project is unique and often requires a back-end, mobile and web component. You will be part of a cross-functional team which is developing the overall experience and architecture, the backend decisions impacting the rest of the stack.
  • Be a role model on acting with good judgement and responsibility. Engineers within the team should look to you for best practices on planning and execute on projects.
  • Manage scale & reliability. Our solutions support Uber's always-on marketplace. Maintaining this platform at scale requires constant investment in security, reliability and monitoring tooling.
  • Up the bar on sustainable engineering by improving best practices, producing best in class of code, documentation, testing and monitoring.
  • Be a humble mentor and trusted advisor for both our talented team members and passionate leaders alike. Deal with a difference in opinions in a mature and fair way, helping the team to commit and move forward.

 

What You’ll Need

 

  • 5+ years of relevant engineering experience.
  • Advanced, inside-out knowledge of at least one OOP programming language.
  • Experience in building distributed and concurrent systems, knowing the tradeoffs between stateful/stateless and synchronous/asynchronous architectures.
  • Good level of understanding of fault-tolerant systems and multi-datacenter/cloud architectures.
  • Thorough technology and architecture understanding both on a theoretical level (e.g. RDBMS vs. NoSQL) as well as on an applied level (e.g. Redis vs. Cassandra, Java vs. Javascript).
  • Applied knowledge of software engineering, as well as coding best practices that minimize tech and architecture debt.
  • Commitment to quality, performance, and efficiency.
  • Good written and verbal communication skills, including the ability to write detailed technical documents.

 

Bonus Points If You Have

 

  • Experience with multiple programming languages and data stores. We use programming languages like Go, Java, Python, data stores like Cassandra, DynamoDB, Redis and MQs like Kafka.
  • Experience working in systems handling high volume financial transactions.
  • Migrated services between microservices and monoliths and understand the practical tradeoffs of one architecture versus the other.
  • Built large scale projects with stream processing and batch processing.

 

About the team

 

Uber's payments team is based in Amsterdam, at the heart of our international engineering efforts. We are a diverse group, with talented people from over 30 countries working together. As a member of our team, you will dig into the complex and rewarding world of money and build payment integration systems that seamlessly connect the world of finance.  

 

The one constant at Uber is growth, and all of our systems are constantly evolving to meet the needs of our high growth environment. We are proactive about addressing both operational and scalability challenges as we grow. We champion great monitoring, alerting, and test coverage and invest in the right tools to help us do so. The services we build on Uber’s payments team are highly scalable, robust, and fault-tolerant. We are conscious about the trade-offs we make in building highly scalable architectures. We balance code and architecture quality with good execution speed, supporting the continous growth of Uber.

 

Engineers on the payments team work closely with groups like Data Science, Machine Learning, Accounting, Finance and Mobile Engineering to address new challenges, co-produce requirements, and improve our operational efficiency. We also work closely with our Risk team to identify bad actors in our payment systems and mitigate financial risks. Supporting and collaborating with these and other groups within Uber is a key part of scaling our business.


See our Candidate Privacy Statement

At Uber we don’t just accept difference—we celebrate it, we support it, and we thrive on it for the benefit of our employees, our products and our community. Uber is proud to be an equal opportunity workplace. We are committed to equal employment opportunity regardless of race, color, ancestry, religion, sex, national origin, sexual orientation, age, citizenship, marital status, disability, gender identity or Veteran status.