What You’ll Do
- Design, build and enhance complex web applications both on the frontend and the backend. The solutions you will build will be used by many teams within Uber, each with unique needs, which we need to support by making things customizable and extensible in generic ways.
- Build functional APIs on top of the Uber systems to power the experiences. Understand the capabilities and limitations of the systems you build on top of, choosing pragmatically on extending them versus building new services on top of them.
- Work collaboratively with talented engineers, designers, product managers, data scientists to ship delightful experiences.
- Build with scale & reliability in mind. Our solutions support Uber's always-on marketplace. Maintaining this platform at scale requires constant investment in security, reliability, monitoring and reporting tooling.
- Keep the bar high on sustainable engineering by following best practices, producing best in class of code, documentation, testing and monitoring.
What You’ll Need
- 5+ years of relevant engineering experience.
- Solid knowledge of at least one OOP programming language.
- Applied knowledge of software engineering and best practices such as testing, documentation and code reviews.
- 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
- Expertise in building customer-facing APIs that follow best practices on key areas such as clarity, security, versioning and error handling.
- Previous experience in building large backend systems.
- An understanding of how large-scale distributed systems work, including messaging systems and data storage.
- Experience in operating large-scale, mission-critical systems and familiarity with things like monitoring, alerting, resilience.
- Advanced, inside-out knowledge of at least one OOP programming language.
- Applied knowledge of coding best practices that minimize tech and architecture debt.
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 care about great user experience, not only for the “happy path”, but also for the edge cases when something goes wrong. 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. 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 continued 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.