Ubers applications are a critical part of daily life for
hundreds of millions of users
globally. Ensuring a seamless, stable, and high-performance experience on such a diverse range of devices, operating systems, and network conditions is a monumental challenge. This is where the
Mobile Observability
team comes in. We build the foundational
iOS 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, hangs (ANRs), elusive bugs, memory leaks, and performance bottlenecks
before they impact our users. You will be responsible for engineering the lightweight, highly-efficient observability tools that are embedded within every Uber app. These SDKs are the "flight recorder" for our mobile fleet, capturing the essential diagnostic data needed to identify and fix the most complex
bugs
that happen in production. If you are passionate about solving complex low-level problems, love debugging challenging issues, and want to build tools that directly improve stability for hundreds of millions of users, this is the team for you. What the Candidate Will Do
- Design, develop, and maintain the core
iOS observability SDKs
responsible for crash reporting, hang/ANR detection, performance monitoring, and broad bug diagnostics. - Engineer highly performant, low-overhead code. Our SDKs run in the critical path of all Uber apps and must have a minimal impact on application performance and battery life.
- Dive deep into complex
crashes, hangs, memory issues, and performance bugs
from across all Uber apps, performing root cause analysis and implementing platform-level fixes. - Develop new tooling and heuristics to automatically detect and classify a wide spectrum of
bugs
, from simple UI glitches to complex, multi-threaded race conditions. - Collaborate with backend engineers to build the data ingestion pipelines and dashboards that process terabytes of diagnostic data from our mobile fleet.
- Act as a subject matter expert on iOS stability and performance, providing guidance, tooling, and best practices to feature teams across Uber.
- Continuously innovate on our diagnostic capabilities, exploring new ways to capture and surface critical health metrics related to
bugs, crashes, and performance
from hundreds of millions of devices
. - 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 Youll 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. Swift, Objective 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.
What Youll
- Extensive iOS development experience, with deep proficiency in
Swift and Objective-C
. - Proven experience in
building, maintaining, and shipping mobile SDKs
or shared, reusable libraries. - Deep understanding of
iOS internals
, memory management (ARC, retain-cycles), and concurrency (GCD, OperationQueues). - Expertise in
low-level debugging
and performance optimization using tools like Instruments
(Time Profiler, Leaks, Allocations, Hangs), lldb, and crash log analysis. - Familiarity with mobile observability, crash reporting, and performance monitoring principles and tools.
- Experience developing for applications at massive scale (handling
hundreds of millions of users
) is a strong plus. - Ability to take ownership and independently drive complex, low-level platform projects to completion.
- Strong focus on writing highly performant, testable, and resource-efficient code.