Interning at Uber is simultaneously challenging and exciting. Uber moves millions of people around the world every day and as an intern, you work on the bleeding edge tech that powers the intersection of the digital and the physical worlds. It’s an incredible learning experience.
In the summer 2017, I had the opportunity to intern as a software engineer at Uber. I worked on Express Pool, a new direction for Uber Pool at the time that was fundamentally changing the rider experience. My 12 weeks at the company helped me discover that I loved building technical products but also that I was drawn towards identifying user needs, sizing business opportunities, and developing product strategy. This sparked my interest in product management. In 2018, my internship ultimately brought me back to Uber but in an adjacent role as an Associate Product Manager.
Recently, I had a chance to sit down with Thuan Pham, Uber’s CTO, to find out about his early engineering experiences, and how his career ultimately brought him to Uber Engineering. Fun fact: we both shared an early fascination with coding and went to the Massachusetts Institute of Technology (MIT) to study computer science and engineering.
My interview with Thuan clarified what the trajectory of my own engineering journey might look like and, more broadly, offered valuable guidance on how to choose the right technical path for your career:
When did you realize you wanted to pursue a career in engineering?
Growing up, I knew I would end up in a science-related field. In fact, I broke my arm a few times when I was a kid and began fantasizing about becoming an orthopedic surgeon someday. I had an affinity for science and did very well in it at school. I was quite set on becoming a doctor, but then I discovered computers.
In high school, a friend’s dad bought one of the first IBM PCs and let me play around with it. Soon, I started writing instructions for computers to do little tasks, and was fascinated by how fast and tirelessly they would complete them. Tinkering around like this made me realize I had a knack for programming.
Deciding where to go to college was an important decision for me. It came down to a choice between pursuing an accelerated medical degree at Johns Hopkins or going to MIT. Although MIT offered a pre-med course, you didn’t go to MIT to do pre-med in the 80s. Finally, I made the fateful decision to study computer science and electrical engineering at MIT, which ultimately led me to a career in technology.
What was your favorite engineering project in college?
I was particularly proud of a project I built for a course called Digital Systems Design. Basically, I was given a breadboard with a whole bunch of chips and had to design a computer from scratch, just using logic gates. Over eight weeks, I ended up building a computer that played video games and rendered even faster than commercial video game arcade boxes. It was a phenomenal experience. I had to design the hardware architecture, the instruction set, the bitmap graphics, the display, and all of those things. At MIT, when students finish in the top three to five in a class, they get a letter of recommendation from the professor. I received one for this class and was invited back the following semester to be a TA. As a junior, I was teaching some seniors and graduate students in the class!
That project sounds like a lot of hard work. How many all-nighters did you pull in college?
All the time, that’s what we did. You know how college life is. You never go to bed before 3:00 a.m. anyway. Even if you have nothing to do, you hang out with your friends in the dorm lounge. But yeah, probably about once a week I would pull an all-nighter. Fun times.
Can you tell me about your first internship? Where was it and what was your role?
I got into a special three-year “6-A” internship program at Hewlett Packard for Electrical Engineering and Computer Science (EECS) students at MIT. I spent two summers between my sophomore and senior years there, and then in the summer and fall term leading into my graduate year I did research at the company for my master’s thesis.
During my internship, I had a particularly wonderful manager who shaped my entire career. I grew up on the East Coast, but my internship was at Hewlett Packard, right on Page Mill Road in Palo Alto. I was fresh out of my sophomore year in college, new to California, and when I show up for my first day, my manager welcomes me, sets me up with a cubicle and a computer, and gives me an assignment. I had to write a parser for a new language called C++ so that we could ingest code into a structured knowledge base. Long story short, whenever I hit a particular milestone, he gathered my teammates around my cube and let me demo the work. He really celebrated our accomplishments and made me feel good about learning on the job.
The team was also super nice, and this manager treated us all like friends. He even took me mountain biking and wind surfing on the weekends. I didn’t see him as my superior, but as my friend, and that’s how I treated my employees when I became a manager a decade later. I liked that experience and wanted to provide it for everyone else. That first summer of my internship shaped how I approach building and managing teams 30 years later.
My first manager and I still get together once in a while. He still calls me “the kid,” and he will always hold a special place in my heart.
How would you say internships have changed since your experience?
There are some big differences in the technologies you have to work on, but there are many tried and true things that remain the same. The way we work today is a lot faster. Interns go into Uber and can ship real features. Back when I started, interns weren’t allowed to do very much. There were fewer resources at our disposal in order to learn new things. Now, you all can learn really quick. Anything you want to learn you can find on the internet. In the stone ages of the 80s, I’d go to the library, search for copies of ACM Magazine, and read printed articles. Interns today can make far more of an impact than interns back then.
What remains the same is how those internship years serve as learning experiences. You learn how organizations run, learn how to work with other people, and learn what industries people are thinking about. You don’t want to be so busy cranking out lines of code that you forget about the intention of the internship experience–to give you a broader view and insight into how the industry works.
If you expose yourself to different environments, outside of a classroom, you become more adaptable and insightful in your thinking. Don’t lose that as part of the internship. That stuff existed back then and still exists now. That is actually the most important part of the internship.
If you want to make a big impact in technology, how should you decide between spending more time in academia or jumping right into industry?
It’s hard to say. PhD’s are awesome. They devote the first 30 years of their lives to become a technical expert in something they are passionate about. If you feel that way, then totally pursue a PhD. But the world can also use generalists. I stopped with my master’s and went into industry to build software. I don’t have the depth of a PhD, but I have the breadth of being an industry engineer. However, over my career, I developed depth in being an organizational leader. That’s sort of my PhD on the job, if you will.
Still, there’s no right or wrong answer. You have to ask yourself, what is my passion? What is it that you do where you can work all night and not feel tired? If that’s earning a PhD or becoming the world-renowned expert in machine learning or whatever technology it is, then go for it. If your passion is ultimately to work with people and organizations to leverage all the talent and channel that into something big then you might want to climb the corporate ladder.
When you interview people, what’s your favorite question?
One set of questions I really like to ask people about are their failures. What big mistakes have you made in your career and what have you learned from them? It is interesting to me that some candidates have never thought about that. Many people do not take the time to reflect on and learn from their failures. I always think about my failures because I find those battle scars really valuable.
As a leader in technology, you have to keep abreast of all the new developments going on in the space. How do you educate yourself on new advances and ensure that Uber is keeping pace?
When you get to this position, something has to give. Honestly, I cannot be on the forefront of technology on all fronts. In areas where I don’t have much technical depth, I hire leaders with world-class expertise. My background is in infrastructure. While I did enough front-end web development to know how to build client applications and user-centric features, most of the time I worked on servers and back-end architecture.
I spent eight years at VMware doing infrastructure. My strengths are in cloud computing, hardware compute storage, workload balancing, and management optimization. Now, I have lots of opinions about where and when we should use cloud infrastructure. Even in those areas, my direct reports–the leaders that we have in infrastructure–know far more than I do now. So, I don’t presume to tell them exactly what to do, but I know enough to set the direction for the business. As a team, we know what we are good at, we know what other people are good at and how we complement one another. Managing that has become my specialty.
Rewinding to the first day of your job, what were some of your biggest challenges architecting Uber’s technological vision?
From the first day, the first month, the first year, it’s all been the same theme, especially for the first six months. When I came to the company, we did not have software and services that could scale. There was no central architecture. If a machine went down, the city went down with it because it was a single-threaded process. At the time, the only way people could make things scale was by taking that process and running it on a more powerful box.
When I started, we supported over 30,000 rides a day, which seemed like a big deal at the time. But how do we get from there to now, when we have over 14 million rides a day? Things had to become more resilient, and they have.
In the early days, I spent a lot of time making sure we had the right people for the work we needed to do. I built our engineering team incrementally, one talent at a time. As I built out the team, we could dream bigger and solve bigger problems.
Finally, what’s your best career advice?
That’s a hard one! I have several. First, focus on what makes your work meaningful and what makes you happy in the job as an engineer. It could be many things, but whatever they are, either find them or help create them.
Second, keep learning. We stretch our abilities by learning new things. In order to have longevity in a particular job, the job that you do has to be meaningful beyond just earning a paycheck.
Third, radiate goodwill. If you are a tremendous teammate, that will rub off on your peers. At the end of the day, the moment you walk away from a job, nobody will remember how flawless your code was. Things that people always remember is how kind you are to them, how you helped them in their career. They will remember that for decades. Like I said earlier, I still remember my first manager, from when I was an intern, thirty years later and how that person shaped my life.
To summarize, my key pieces of advice are: find meaning in your work, keep learning, radiate that good will, that awesomeness in everyone else, and the rest of the path will be a whole lot smoother. Most importantly, however, you have to do these three things without expecting anything in return. You will find, instead, that the good will you accumulate over the years will radiate and make your lows not as low and your highs much higher.
Interested in working on large-scale technical problems with Sudhanshu, Thuan, and the team? Consider applying for a role with Uber Engineering.