Lessons learned as an Engineer at Uber
I’ve enjoyed many smiles, triumphs and lessons learned as an ML Engineer at Uber. Today is my last day at Uber, and I’ll start a new role at Stripe on Monday. With this in mind, I’d like to reflect on my time at Uber, and capture some “notes to self”.
In particular, I thought it’d be handy to focus on 3 questions:
- What to keep?
- What did I learn?
- Any advice for my past self?
To give a bit of context, the bulk of my work at Uber (and in my career) has been leading ML projects in the Risk & Fraud space where heuristics have failed and there is a clear and present need for something better. Uber is the first company I’ve ever worked at that wasn’t founder-led, and that is entirely because of the high regard old coworkers had for Dara, Uber’s CEO (praise I can now confirm he’s earned).
Moreover, I actually never passed an Uber interview - I was hired by Postmates a few months before Postmates was acquired by Uber. However, I chose to stay and had the pleasure of being a tech lead for 3 major projects, and an innumerable number of smaller efforts.
Lastly, there are already reams written about what isn’t working in tech and where Uber should improve (Blind alone has more advice than any person could hope to read). With this in mind, I’d like to focus on what has worked well.
What to keep?
Cross-functional collaboration style
A friend once said that different disciplines (e.g. project management, data science, back end engineering, ML engineering, legal) effectively speak different languages, no different than English, German or French. While an engineer might be conversant in project management, or a data scientist can speak enough legal-ese to get by, it can be incredibly difficult to form a lingua franca, and get everyone rowing in the same direction.
Through an emphasis on teambuilding and shared KPIs, Uber (and Uber’s Risk team) do a phenomenal job of making sure that the different disciplines effectively communicate, and are able to move in lock step towards a common goal.
Clear, sustained leadership vision
Seven years ago, Uber was the black sheep of the valley - a warning of what poor culture, ego and VC funding could cause. However, under a new leader Uber has become a darling of the valley - finding profitability, joining the S&P 500, and becoming the largest source of work on Earth.
At many points this trickle of changes has been too slow to see or feel. However, consistent goals - be the best platform for earners, create magical user experiences, reduced the controversy surrounding Uber - have led to Uber becoming one of the most valuable companies in the US
Clear and well defined processes
The flow from a product review doc (PRD) to an engineering review doc (ERD) to an experiment design and experiment readout is a quick and seamless way to design, implement and measure new changes.
This process is followed by default for all medium and large changes, and allows a level playing field for other ICs and teams to provide feedback, while documenting the decision making process for future engineers.
What did I learn?
Big companies are underrated
At Uber, even small changes can result in millions of dollars in savings each month, and each project launched is scaled out to a massive, global user base. It’s cathartic to know that you’re changing the world in a meaningful way.
Additionally, despite the large size of Uber I was surprised by how easy it was to provide clear and direct feedback up the food chain. I was fortunate enough to ask a few dozen All Hands questions which were directly answered by the CEO and leadership, and were met with thoughtful and elucidating responses (and sometimes even change).
How to effectively lead a high performing team
Though this lesson may not be specific to Uber, I was lucky to be in the position to lead a handful of multi-disciplinary teams, and work out my own style of leadership and accountability. From small concrete practices (writing an agenda and keeping everyone on track) to larger skills (finding alignment and presenting upwards), Uber is the place where I was able to refine my style as a tech lead.
Not everyone has the same goals, and that’s fine
I’ve been fortunate to work with individuals from many different learned and lived experiences.
At Uber it’s been reassuring to understand that folks prioritize quality of work, title, comp and work life balance differently - and that’s OK. Actually, in many ways this diversity of personal goals reduced competition and allowed folks to collaborate better; those interested in a promo might ask for challenging and higher visibility work, and those focused on work life balance often sought out consistent and well defined tasks.
Any advice for my past self?
A few parting words that I’ve given to new Uber hires, and I wish someone would have shared with me when I joined.
The stock price will sink to $18 and rise to $71
Working at an unprofitable, publicly tech traded company is a crazy journey. I joined Uber when the stock was at $60, and could palpably feel the morale in the elevators when we hit $18 (dejection) and $70 (wouldn’t a summer house be nice?). I’ve done my best to treat equity as monopoly money or rainy day savings, but it’s tough to overlook the current mood and have faith in the future.
The hardest part will be building trust, choosing what to work on, and bringing everyone along with you
None of the projects I launched were technological marvels. They created tens of millions of dollars of annual impact, but they did not involve state of the art machine learning research or crazy new technologies (or anything close to a leetcode question). Rather, this impact was found by listening to the pain points of users, sharing those anecdotes and related data with my peers, and getting everyone rowing in the same direction. This process – many individual conversations with ICs, managers and directors, followed by a doc, followed by larger meetings – allowed me to build confidence that these problems were solvable and worth solving.
What got me here, won’t get me there
The sorts of work that got me a role at Uber (delivering ML models and back end work) was helpful as I continued in my career. However, I needed to develop entirely new skill sets (building trust, understanding how to get ICs rowing in the same direction) to continue my trajectory. It took me longer than I’d like to admit to realize this, but acknowledging this gap in my skill set allowed me to focus on developing those muscles and continue in my career.
Wrap up
I’m grateful for the experiences I’ve had at Uber over the last few years, and the many people who’ve shared them with me. As I step into the next phase in my journey, I hope that I’m able to keep the best of what makes Uber unique, while layering on the values and structure that set Stripe apart.