Please enable Javascript
Skip to main content

Programming Systems

At Uber's Programming Systems Team, we are at the forefront of innovation, harnessing cutting-edge advancements in programming languages, software engineering, distributed systems, and artificial intelligence to make Uber more efficient and reliable. Our mission is to pioneer transformative technologies, integrating state-of-the-art static and dynamic program analysis, compiler optimizations, and performance tuning to push the boundaries of software capabilities.

A key pillar of our work is revolutionizing developer productivity. By combining sophisticated program analysis with Generative AI, we empower engineers to tackle complex challenges, from bug detection and advanced debugging to program synthesis and automated program repair. Our solutions are designed not just to enhance the quality of engineering output but also to minimize the burden of routine tasks, enabling developers to focus on innovation. Committed to advancing technology for the broader community, we proudly contribute the majority of our tools as open-source projects and publish at top research venues.

Meet the team

Shauvik Roy Choudhary

Engineering Manager, PhD. 🎓

Milind Chabbi

Sr Staff Research Scientist, PhD 🎓

Peng Liu

Staff Software Engineer, PhD 🎓

Sonal Mahajan

Staff Software Engineer, PhD 🎓

Farnaz Behrang

Senior Software Engineer, PhD 🎓

Yuxin Wang

Senior Software Engineer, PhD 🎓

Akshay Uttare

Software Engineer II, PhD 🎓

Chris Zhang

Software Engineer II, PhD 🎓

Diego Marcilio

Software Engineer II, PhD 🎓

Hunkar Tunc

Software Engineer II, PhD 🎓

Nikhil Parasaram

Software Engineer II, PhD 🎓

Yufan Xu

Software Engineer II, PhD 🎓

Projects

AutoClean

Feature flags, frequently used for gradual rollouts and feature experimentation, often leave behind unnecessary code once the experiment concludes. This increases complexity, bloats the source and binary, and can lead to bugs and misconfigurations. AutoClean leverages our Piranha code transformation toolset to automatically eliminate these stale feature flags from production and test code.

NullAway and NilAway

NullAway for Java and NilAway for Go are static analysis tools designed to prevent null/nil-related errors. NullAway uses @Nullable annotations to ensure pointers are not null when dereferenced, while NilAway employs an inference engine to catch potential nil panics at compile time without requiring manual annotations. Together, these tools enhance code safety by addressing null/nil-related issues proactively.

CRISP

Modern microservice architectures bring scalability and flexibility but often introduce challenges in diagnosing latency and errors. CRISP is a tool that helps engineers analyze performance issues by identifying critical paths and visualizing bottlenecks using differential flamegraphs. It provides actionable insights into latency and error propagation, assisting teams in improving system reliability and efficiency.

Dr.Fix

Automatically Fixing Bugs in Software

Dr.Fix is a project designed to automatically fix bugs, enhancing both software quality and developer productivity. Dr.Fix introduces a novel hybrid approach that combines program analysis with generative AI, providing robust solutions to real-world problems. Currently, Dr.Fix streamlines various developer workflows: it repairs concurrency issues in Go, optimizes Go services, and fixes flaky tests.

Last Diff Analyzer

Last Diff Analyzer is a multi-language, platform-agnostic tool for automatically approving behavior-preserving code changes. By integrating with code hosting platforms, it streamlines workflows by approving updates and bypassing costly CI tests. With support for Golang and Java, its extensible framework unifies language structures while allowing for easy expansion to Kotlin, Swift, TypeScript and more.

LeakGuard

Automated Detection and Remediation of Resource Leaks

LeakGuard is a suite of tools that work together to find and fix leaks in Java and Go applications. These tools use a combination of static and dynamic analysis, generative AI, and new runtime techniques to find and fix performance bottlenecks and memory issues. By using LeakGuard, developers can save time and effort while also making their systems more reliable and efficient.

Publications

Technical papers, talks and blog articles featuring current and former team members*

*Disclaimer: The views and opinions expressed in the publications are those of the authors and the publications are not affiliated with Uber Technologies Inc.