Scatterbrain

by Colby Duke

Uber Intern: First Impressions

06/13/21

This entry will be the first of a few in which I write about my experiences as a software engineer intern at Uber. My goal is to provide an overview of an Uber intern’s work without diving into particular details – both to keep the length of these posts down and to avoid accidently leaking some non-public aspect of Uber I did not realize was secret.

As of tomorrow, I will begin my fourth week (out of 12) at Uber and have officially concluded both my onboarding and project planning for the internship. So far, everything is flowing smoothly. I attended “Engucation”, Uber’s onboarding talks for engineers, during my first week. For the second week, I finished my remaining onboarding tasks, met my team, and familiarized myself further with Uber’s development flow. The majority of the third week was spent writing my Engineering Review Doc (ERD) for my first project and researching/practicing how to begin development. This timeline is standard for SWE interns.

With regards to my first impressions, I have plenty to share. I would consider Uber a medium-sized tech company at this point in its lifespan, because it employees 3,500 engineers. This summer, around 300 U.S. and Canadian interns (both business and engineering) joined the company. From my observations, Uber appears to take on one intern for every 10-20 fulltime employees and follows the standard “mentor + manager per intern” system. On the engineering side, the entire development process is extremely streamlined, with a very straightforward workflow for finding and proposing new features to test and deploy. Uber currently utilizes 3,000 microservices across over 100k servers – a rather staggering scale, but understandable when you consider that Uber’s platform is utilized by over 100 million unique users on a monthly basis. Uber has always been a very impact-driven company which values ideas over hierarchy. Interns are no exception to this rule and are given high-impact projects to work on – almost always the same projects a member of their team would have developed if the intern had not joined. I believe this is currently the aspect of Uber which has pleasantly surprised me the most: as an intern, it is rare to work on projects which are this important to the company’s success.

The other aspect of Uber which initially surprised me is the degree to which its engineers develop and use in-house tech for their tech stack. Almost everything at Uber is developed in-house: the cloud services, databases, physical servers, git repository website, scaffolding programs, machine learning platforms, etc. I suppose I assumed Uber would simply adopt a similar tech stack to everyone else, but they take pride in their tools and I personally have been impressed by borderline unnecessary amounts of tools they have developed. I begin development on the Go monorepo starting Monday, so I am excited to put all my new skills and knowledge into practice come morning.

In a week or two, I will write a follow-up post to this one about my programming experiences.