The Driver Growth team leads the acquisition and retention platform and product efforts for drivers, couriers, and other earners worldwide.
We are rapidly growing in Amsterdam, building mission-driven product teams that will be meeting the sign-up and onboarding needs of the millions of people worldwide who come to Uber to bolster their earnings opportunities, as well as tools and systems for our Operations teams who help them get on the road.
The team is full-stack and cross functional. There will be significant, challenging problems in the backend, web, and mobile engineering spaces and the team will have embedded collaborators from Product Management, Design, and Data Science.
About the Role
Uber is looking for Software Engineers to join our Driver Growth 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.
What You'll Do**
Provide technical leadership and vision in designing, implementing, testing and rolling out the next generations of our Driver Growth features and tools.
Take a full-stack approach. Each project is unique and often requires a backend, 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
3+ 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.
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.
At Uber, we ignite opportunity by setting the world in motion. We take on big problems to help drivers, riders, delivery partners, and eaters get moving in more than 10,000 cities around the world.
We welcome people from all backgrounds who seek the opportunity to help build a future where everyone and everything can move independently. If you have the curiosity, passion, and collaborative spirit, work with us, and let's move the world forward, together.