Programming Systems Research Scientist

Uber Overview

About Uber

We're changing the way people think about transportation. Not that long ago we were just an app to request premium black cars in a few metropolitan areas. Now we're a part of the logistical fabric of more than 600 cities around the world. Whether it's a ride, a sandwich, or a package, we use technology to give people what they want, when they want it.

For the people who drive with Uber, our app represents a flexible new way to earn money. For cities, we help strengthen local economies, improve access to transportation, and make streets safer.

And that's just what we're doing today. We're thinking about the future, too. With teams working on autonomous trucking and self-driving cars, we're in for the long haul. We're reimagining how people and things move from one place to the next.

Job Description

Uber Engineering is growing quickly as we look to tackle some exciting opportunities at scale and in challenging regions around the world. As we grow our team and code base, there is a growing need for automatic analysis tools to keep our code quality high while ensuring our engineers can continue to move fast. To support this need, the mobile developer productivity team is looking for talented, experienced engineers to build new static analysis tools and help apply them to Uber Mobile apps.

The team is aiming to build analyses to detect a wide variety of bugs in both Android (Java) and iOS (Swift) apps. The work includes a mix of both building or extending core analysis infrastructure and developing new analyses targeted at key issues. Analyses will be used to detect properties like crash freedom, isolation, lifecycle safety, and security. The team is also responsible for finding new ways to annotate or modularize code to enable better analysis scalability and precision.

To succeed in this position, you will have a strong understanding of state-of-the-art program analysis techniques and experience in developing static analyses. You should also be passionate about writing clean, efficient, well-tested code, and should have some familiarity with mobile app architectures.

Job Requirements

  • BS/MS in Computer Science or Computer Engineering, PhD preferred
  • Previous experience developing new static analysis techniques or applications
  • Solid understanding of the current state of the art in static analysis techniques
  • 3+ years of software development or developing infrastructure
  • Excellent coding skills and software design skills

Bonus points

  • Published works in the field of static analysis
  • Experience analyzing large, production code bases
  • Experience developing mobile apps and/or mobile testing frameworks/tools
  • Hands-on experience with dependency injection and unit testing



  • Employees are given Uber credits every month.
  • The rare opportunity to change the way the world moves. We're not just another social web app, we're moving real people and assets and reinventing transportation and logistics globally.
  • Smart, engaged co-workers.


  • 401(k) plan, gym reimbursement, nine paid company holidays.
  • Full medical/dental/vision package to fit your needs.
  • Unlimited vacation policy; take time when you need it.

Uber is an equal opportunity employer and enthusiastically encourages people from a wide variety of backgrounds and experiences to apply. Uber does not discriminate on the basis of race, color, religion, sex (including pregnancy), gender, national origin, citizenship, age, mental or physical disability, veteran status, marital status, sexual orientation or any other basis prohibited by law.

See Inside the Office of Uber

Back to top