Work

Developer Platform

Uber Studio

Internal tooling so engineers could simulate the marketplace — riders, drivers, trips, failures — without a real car.

Role
Practice Lead, Design
Years
2016–2018
Deliverables
Product Design, Design Systems, Research, Prototypes

Testing Uber meant needing a rider, a driver, a city, and money for every engineer, every day. Studio made the whole marketplace simulable from a desk: spawn accounts, run trips through every state, and interrogate any internal service from one surface. I led design for the platform.

Uber Studio trip simulation against a live map beside the API explorer for internal services

A trip needs a rider, a driver, a route, a payment method, and a dispatch system willing to connect them. Before Studio, that meant test phones on desks, personal accounts, and real cars driving real blocks to reproduce a bug. Or it meant not testing at all.

I led design in Uber's engineering platform group, where the users were the company's own engineers. The brief was simple to say and deep to build: make the entire marketplace something you can simulate without leaving your chair.

Studio's core surface puts simulated accounts against a live city map. Spawn a rider, spawn a driver, set pickup and dropoff, request a fare, and walk the trip through its real states, from dispatching and en route to pickup confirmed or canceled mid-request, with each account inspectable at every step. The states aren't mocked. They run through the production state machine, so what an engineer sees is what the system actually does.

The design problem was density with orientation. A single simulation might hold five accounts in different states, and the engineer needs to read the whole scenario at a glance: who is waiting, who is dispatching, what just failed. Account cards carry their state as structure, the map carries the geography, and nothing hides behind a modal.

Five accounts, one scenario: state as structure on the cards, geography on the map

The other half of Studio was the API explorer: browse any internal service, read its Thrift docs in place, compose a request with real headers, and see the response, including the failure, without leaving the tool. Before that, interrogating a service meant finding its owner, its docs, and its quirks across three internal wikis.

Designing for engineers sharpened a conviction that has run through my work since. Expert users don't want simpler tools; they want denser ones that never lie. That is designing for operators, and it is why busy software still has to breathe.

Studio's job was to show the system exactly as it was and make that exact state fast to reach. It became part of the default toolkit for engineers across the rider, driver, and payments teams.

Users
Uber's own engineers across rider, driver, and payments
Surfaces
Marketplace simulator, API explorer
Principle
Denser tools that never lie