Learning as a New Grad on the Uber Engineering Money Team

Cory McDowell
5 min readbeginner
--
View Original

Overview

The article discusses the experiences of a new graduate working on Uber's Money Team, highlighting the challenges and learning opportunities encountered while transforming Uber's trip data model. It emphasizes the importance of personal responsibility and collaboration in a fast-paced engineering environment.

What You'll Learn

1

How to transform a PostgreSQL database into a sharded, schema-less datastore

2

Why understanding service dependencies is crucial in software engineering

3

How to effectively communicate and coordinate during a code deployment

Prerequisites & Requirements

  • Basic understanding of database design and service architecture
  • Familiarity with software engineering practices in a team environment(optional)

Key Questions Answered

What was the first major task assigned to the new grad on Uber's Money Team?
The new grad was tasked with transforming Uber's largest PostgreSQL table into a sharded, schema-less datastore to accommodate high trip volumes. This involved a complete redesign of the trip model and required collaboration across multiple engineering teams.
What mistake did the new grad make during the deployment?
The new grad's code change resulted in all trip fares displaying $0.00 in the driver app receipt due to not accounting for the impact on downstream services. This led to confusion among drivers regarding their earnings.
What lessons did the new grad learn from the deployment mistake?
The new grad learned the importance of understanding service dependencies and effective communication during code changes. The experience highlighted that mistakes can be valuable learning opportunities in a supportive engineering culture.
How did the team respond to the outage caused by the new grad's code?
Multiple engineers quickly assisted the new grad in diagnosing the issue and coordinating an emergency deployment to fix the problem. This collaborative effort emphasized the supportive nature of Uber's engineering organization.

Technologies & Tools

Some links below are affiliate links. We may earn a commission if you make a purchase.

Key Actionable Insights

1
When working on large-scale systems, always consider the impact of your changes on downstream services.
Understanding service dependencies can prevent significant outages and enhance system reliability. This is especially important in environments like Uber, where changes can have widespread effects.
2
Embrace mistakes as learning opportunities rather than failures.
In fast-paced engineering environments, mistakes are inevitable. A supportive culture allows engineers to grow from these experiences, fostering a more resilient team.
3
Communicate effectively with your team during code deployments.
Clear communication can help mitigate risks associated with changes. Engaging with team members ensures that everyone is aware of potential impacts, leading to smoother deployments.

Common Pitfalls

1
Failing to account for the effects of code changes on interconnected services can lead to significant issues.
In complex systems, changes in one area can have unforeseen consequences in others. It's essential to thoroughly understand the architecture and dependencies before deploying code.