Networking

"Push a button, get a ride" is the manifestation of a magical experience . In a matter of minutes, you can launch the Uber app, orient yourself on the map, request a ride, and a car shows up to take you anywhere you want to go.

Consistently providing this experience requires a fast and reliable network connection. , However, , as Uber grows and expands into new markets the variety of network conditions we encounter increasingly requires our app to be more tolerant of temporary problems and failures in the underlying network. Developing the fundamental technologies that allow all Uber apps to do this -- and measuring their performance -- is the responsible of the Mobile Networking team.

Network performance can sometimes be counterintuitive, so we instrument our network calls to gather real-world performance data. This gives our developers visibility into our how app performs worldwide and identify the best areas to optimize. We also develop and maintain the foundational networking libraries used across Uberapps. Our mobile developers used these libraries to make API calls, fetch assets, and interact with the network . Our goal is to develop powerful abstractions, beyond traditional request/response interaction patterns, that prevent the app from being blocked by network limitations.