About the Role
Our engineering culture is the same across all our engineering offices: in Amsterdam, this is no different from San Francisco or our other locations. Amsterdam is one of the largest mobile engineering offices outside of our Bay Area headquarters. We are a diverse group, with talented people from over 30 countries working together.
Engineers working at Uber are highly autonomous, involved in decisions impacting the business and systems. We have a high bar for engineering quality, which starts by a transparent planning process before we write code - any engineer can get involved here. We have dedicated teams building efficient developer tools and keep improving our Android monorepo. We are big on constructive code reviews, accompany business logic with automated tests and have robust deployment and beta testing processes in place. We balance code and architecture quality with good execution speed, supporting the continued growth of Uber.
Mobile architecture for many of the Uber apps is based on the cross-platform RIBs architecture which we have open sourced, several mobile engineers from the Amsterdam office contributing. We write Android code mostly in Java, starting to introduce Kotlin to some codebases. We use Motif for dependency injection, RxJava for asynchronous event based programming and tools like NullAway for advanced static analysis. We frequently share work and learnings on Android and mobile on our engineering blog and our regular Android internal engineering meetings.
Engineering managers at Uber are also hands-on with coding and architecture - you can bump into some of our Amsterdam managers speaking at mobile conferences. Product managers here are also technical, many of them having been engineers in the past. Other people engineers interact with daily, in the office include data scientists, designers, and UX researchers.