Job Information
Uber Software Engineer II, PhD in San Francisco, California
About the Role
Uber seeks exceptional program analysis experts to join our programming systems group within the Developer platform organization. We are looking for experts in Java static program analysis with in-depth knowledge of Java compiler, runtime and bytecode. An ideal candidate has research and industry experience building developer tools for Java program analysis and integrating them into the development workflow.
About the Team
The Programming Systems Group at Uber aims to accelerate performance, reliability, and developer productivity across various computational domains. We focus on research in programming languages spanning Go, Java, Swift, Kotlin, and TypeScript, to name a few. The research includes the right mix of innovation, advanced development, and critical extensions to core infrastructure to address novel problems in computer science and adjoining domains. The team's recent work includes static analysis tools such as NullAway , NilAway, Last Diff Analyzer , and Piranha ; dynamic analysis tools such as CRISP , datarace detection , and LeakProf ; optimization tools such as swift protocol specialization , code-size optimization , and profile-guided optimization in Go; and Generative-AI tools for fixing concurrency bugs and resource leaks in Java . We make our tools open source and publish our research as academic papers at premier conferences and blog posts. We also participate actively in the research community, including attending conferences, organizing workshops, and serving on program committees.
To succeed in this position, you will have a solid understanding of innovative program analysis techniques and experience developing static analyses or compiler optimizations. You should also be passionate about writing clean, efficient, and well-tested code.
What the Candidate Will Do ----
Drive exciting, ambitious, previously unsolved projects from end-to-end
Thrive in ambiguous product requirements
Iterate fast to explore possible solutions
Make data-driven decisions with exceptional execution
Collaborate closely with product managers and data scientists
Be motivated to own projects and push them forward with independence
Most importantly, have a passion for making Uber better for our customers
Publish your work at top computer science conferences
---- Basic Qualifications ----
Must be Ph.D. in Computer Science, Computer Engineering, or related field
3+ years of professional software development experience with prior experience with compiler design/optimization, static or dynamic analysis, abstract syntax trees (ASTs), intermediate representations (IRs), and formal methods.
Proficiency in Java and experience developing Java analysis tools using frameworks like Soot, WALA, Spoon, or ASM.
Knowledge of different compilation steps (and ability to troubleshoot) in languages such as Go, C, C++, or Java
Strong publication record in relevant conferences (e.g., PLDI, OOPSLA, ICSE, ASE, FSE, ASPLOS).
Note that up to 3 years of the total required software engineering experience may have been gained through education and full-time work experience, additional training, coursework, research, or similar (OR some combination of these). The years of specialized experience are not necessarily in addition to the years of Education & full-time work experience indicated.
---- Preferred Qualifications ----
Deep knowledge of JVM, LLVM, GraalVM, or JIT compilation.
Familiarity with software verification tools like Errorprone, Z3, CBMC, or Infer.
Experience integrating program analysis tools into CI/CD pipelines.
Ability to communicate effectively with both technical and business partners
Experience in simplifying/converting business challenges into technical problems
Research mentality with a bias towards action to structure a project from idea to experimentation to prototype to implementation
Experience building and iterating on code review (phabricator, GitHub), automation test infrastructure (unit, integration, E2E), and build systems (Bazel / buck)
Experience working with teams spanning geographic locations and time-zones
Linux and Kubernetes system knowledge
Experience presenting at industry-recognized academic conferences
Experience with machine learning or Generative AI for program analysis is a plus.
Excellent coding and software design skills
For San Francisco, CA-based roles: The base salary range for this role is USD$167,000 per year - USD$185,500 per year. For Seattle, WA-based roles: The base salary range for this role is USD$167,000 per year - USD$185,500 per year. For Sunnyvale, CA-based roles: The base salary range for this role is USD$167,000 per year - USD$185,500 per year. For all US locations, you will be eligible to participate in Uber's bonus program, and may be offered an equity award & other types of comp. You will also be eligible for various benefits. More details can be found at the following link https://www.uber.com/careers/benefits.
Uber is proud to be an Equal Opportunity/Affirmative Action employer. All qualified applicants will receive consideration for employment without regard to sex, gender identity, sexual orientation, race, color, religion, national origin, disability, protected Veteran status, age, or any other characteristic protected by law. We also consider qualified applicants regardless of criminal histories, consistent with legal requirements. If you have a disability or special need that requires accommodation, please let us know by completing this form- https://docs.google.com/forms/d/e/1FAIpQLSdb_Y9Bv8-lWDMbpidF2GKXsxzNh11wUUVS7fM1znOfEJsVeA/viewform