Company Description
Ready to Ride?
This isn't the kind of place where you follow a playbook — it's where you help write one. If you're driven by impact, energized by challenge, and ready to shape how the world moves — we'd love to hear from you.
You may be eligible for bonuses, equity, and other compensation, as well as a range of benefits. Explore our benefits.
Offices remain key to collaboration and Uber's culture. Unless approved for full remote work, employees must spend at least 50% of their time in-office. Some roles, like those at greenlight hubs, require full-time in-office presence. Ask your Recruiter for details about this role's requirements.
Uber is proud to be an Equal Opportunity 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.
Job Description
**About the Role**
Uber's applications are a critical part of daily life for hundreds of millions of users globally. Ensuring a seamless, stable, and high-performance experience across a diverse range of devices, OEMs, Android versions, and network conditions is a monumental challenge. This is where the Mobile Observability team comes in. We build the foundational Android SDKs that provide deep, real-time insight into the health of all Uber applications (Rides, Eats, Freight, and more). Our mission is to proactively detect, diagnose, and resolve critical issues like crashes (JVM and native), ANRs, out-of-memory errors, memory leaks, jank, and performance bottlenecks before they impact our users. You will help engineer the lightweight, highly efficient observability tools that are embedded within every Uber Android app. These SDKs are the "flight recorder" for our mobile fleet, capturing the diagnostic data needed to identify and fix the most complex bugs that happen in production. If you enjoy solving low-level problems, like debugging hard issues, and want to build tools that directly improve stability for hundreds of millions of users, this is the team for you.
**What You'll Do**
- Design, develop, and maintain components of the core Android observability SDKs for crash reporting, ANR detection, performance monitoring, and bug diagnostics.
- Write performant, low-overhead code. Our SDKs run in the critical path of every Uber app and must have minimal impact on startup time, runtime performance, battery life, and app size.
- Investigate crashes, ANRs, memory issues, and performance bugs from across Uber's Android apps, perform root cause analysis, and implement platform-level fixes.
- Build tooling and heuristics to automatically detect and classify bugs, from UI glitches to multi-threaded race conditions.
- Detect and diagnose OEM-specific and Android-version-specific issues across the device landscape.
- Work with backend engineers on the data ingestion pipelines and dashboards that process terabytes of diagnostic data from our mobile fleet.
- Support feature teams across Uber with guidance, tooling, and best practices on Android stability and performance.
- Uphold rigorous standards for code quality, testing (especially unit and integration testing for an SDK), and on-call practices for a Tier-0 service.
**What You'll Need**
- Bachelor's degree or equivalent in Computer Science, Engineering, Mathematics or related field OR 3-years full-time Software Engineering work experience, WHICH INCLUDES 3-years total technical software engineering experience in one or more of the following areas: Programming language (e.g. Kotlin, Java, C/C++)
Note the 3-years total of specialized 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 year of specialized experience is not necessarily in addition to the years of Education & full-time work experience indicated.
**Bonus Points If**
- 3+ years of Android development experience, with strong proficiency in Kotlin and Java.
- Experience shipping production Android features in a large codebase.
- Solid understanding of Android internals, including the app and process lifecycle, the main thread Looper/Handler model, and the Android framework, with interest in going deeper.
- Working knowledge of memory management on Android (garbage collection, heap usage, Context and Activity leaks) and concurrency (Kotlin coroutines, threads, executors, RxJava).
- Hands-on experience debugging crashes, ANRs, and memory leaks using Android Studio Profiler, heap dumps, and LeakCanary.
- Experience building libraries or SDKs used by other teams.
- Exposure to native code (NDK, C/C++), native crash tombstones, or system tracing tools such as Perfetto or simpleperf.
- Familiarity with mobile observability and crash reporting tools (Android vitals in Play Console, Firebase Crashlytics, or similar).
- Experience working on apps with tens of millions of users or more.
- Ability to own well-scoped components of platform projects and see them through to production.
Strong focus on writing performant, testable, and resource-efficient code.
Uber's mission is to reimagine the way the world moves for the better. Here, bold ideas create real-world impact, challenges drive growth, and speed fuels progress. What moves us, moves the world - let's move it forward, together. Offices continue to be central to collaboration and Uber's cultural identity. Unless formally approved to work fully remotely, Uber expects employees to spend at least half of their work time in their assigned office. For certain roles, such as those based at green-light hubs, employees are expected to be in-office for 100% of their time. Please speak with your recruiter to better understand in-office expectations for this role.