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.
- 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.