Senior Software Engineer, PhD - Backend
Uber Engineering is growing quickly as we look to take on some exciting opportunities at scale and 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 and performance high while ensuring our engineers can continue to adapt quickly. To support this need, the Programming Systems Group is looking for hardworking engineers to develop new optimizations, static and dynamic analysis tools, and programming models, and apply them to Uber's code base.
The team is seeking to build tools to improve performance and reliability across a variety of languages, including Java (mobile and backend), Swift, Go, Kotlin, and TypeScript. The work includes a mix of both building or extending core infrastructure and developing new optimizations/analyses targeted at key issues. Recent work by the team includes Piranha & NullAway static analysis tools. The team has upstreamed changes to the Swift compiler to improve specialization of protocol-based code including contributions to LLVM for optimizing mobile app binary-size. In general, we like to make our tools open source and write about our work in blog posts and academic papers. 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 in developing static analyses or compiler optimizations. Understanding of machine learning concepts and its application to program analysis problems would be preferable. You should also be passionate about writing clean, efficient, and well-tested code.
What The Candidate Will Need / Bonus Points
---- What the Candidate Will Do ----
- Drive exciting, ambitious, previously unsolved projects from end to end.
- Thrive in ambiguous product requirements.
- Collaborate with product managers and data scientists closely.
- Make data driven decisions, with exceptional execution.
- Be motivated to own projects and push them forward with independence.
- Most importantly, have a passion to make Uber better for our customers.
- PhD in Computer Science, Computer Engineering, or related field.
- Prior experience with compiler optimization, static analysis, dynamic analysis, and machine learning applied to program analysis.
- Solid understanding of modern program analysis and machine learning techniques.
- Excellent coding skills and software design skills.
- Published papers in program analysis or code optimization.
- Ability to communicate effectively with both technical and business partners.
- Experience in simplifying/converting business problems into technical problems.
- Research mentality with a bias towards action to structure a project from idea to experimentation to prototype to implementation.
- Experience presenting at industry-recognized academic conferences.