Stay in Touch



Software Engineer - Routing Algorithms, Maps






San Francisco, CA, US


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

About the Role


Are you excited by the idea of reliably and efficiently moving people and things, in hundreds of cities around the world? Are you passionate about implementing cutting edge solutions to problems that have not been solved before? If you have answered yes to any of these questions, you might be a great fit for this team at Uber!


The routing engine we build solves one of Uber’s fundamental business problems: how to most efficiently get our customers from point A to point B, whether it is driving, biking, walking or something else. This engine is deeply intertwined with all steps of an Uber trip: our routes are used to generate upfront prices and rider/driver matches before a trip even starts, to provide in-app navigation for drivers and ETA estimates for drivers during the trip, and many other crucial parts of an Uber trip experience. Our work is mission critical to Uber’s success and has a direct, measurable impact on the bottom line.


As a Software engineer on the Routing Algorithms team, you’ll work on challenging algorithmic problems that are tailored to Uber’s unique requirements. We build software that is fast and reliable enough to support a real-time use case, handling request volume at Uber scale. You will work with product managers, data scientists, and other engineers as we work to improve the accuracy, efficiency, and flexibility of our routing engine.


What you'll need?


  • Strong algorithmic skills. Familiarity or expertise in pathfinding algorithms like Dijkstra’s, A*, contraction hierarchies, etc. is a strong plus but not required.
  • Experience working on distributed systems: developing reliable, high performance, highly scalable software (primarily in Java)
  • Ability to work with data scientists to launch and interpret results of experiments. This can involve interacting with large data processing pipelines, distributed data stores, and file systems.
  • Bonus points if you have experience geospatial services and datasets before, such as maps data, routing algorithms, traffic patterns, etc.



Why join us?


  • Truly unique set of problems. The nature of Uber’s business imposes a distinct set of constraints on Maps that cannot be found elsewhere.
  • Teammates. Work with empathetic, smart and motivated teammates in a fast-paced, collaborative environment.
  • Impact. Routing is central to Uber’s success. You’ll be working on mission critical projects that are visible both inside and outside of Uber.
  • High scalability engineering. Build world class engineering for high throughput and low latency distributed systems. We take ownership in creating elegant and reliable code.
  • Fun problem solving. We love solving challenging problems with cutting edge algorithms. We move fast and build things that have never been built before.

Apply for the job

Subscribe to our blog.


Blog & Newsletter Signup