Reviewing my time at graduate school

Intro: I was a graduate student pursuing a Ph.D. in Computer Science at UC Berkeley. I recently graduated with an M.S. and am joining Google shortly. This memo is mainly for me to reflect on time at graduate school. I decided to share my decision process here in case someone finds it helpful somehow or just becomes interested in reading about it.

Why I decided to do a Computer Science Ph.D.

I started learning computer programming when I was in elementary school. My mother opened the door to the world of the computer when I turned 101. I grew up in an island in South Korea, the farthest away from the most advanced city of the nation. My mother suggested me taking a class at the only programming cram school in my hometown. Learning how to program, I saw the potential of computer software to dominate the future. It was just a gut feeling of a 10-year-old without a great rationale behind it. Since then, I have never stopped learning about computers. Before I went to college, I was almost always the only student who can actually program in my class.

I have just loved studying Computer Science itself. It was not just a means of implementing software or getting a lucrative job for me 2. I felt understanding how computers work and acquiring knowledge in this field is something that actually defines me and differentiates me from other peers simultaneously. Moreover, its practicality has always fascinated me. Even a theoretical class like Computer Algorithms taught me how to solve real-world problems fast using a computer. Just taking Computer Science classes and graduating with a Bachelor’s didn’t look fulfilling enough for me.

Thus, I decided to try research. I asked a professor to do research in operating systems with the application of cloud computing because the field looked most practical to me. It was challenging to participate in research as an undergrad, but the outcome of our project was quite fruitful. Our team published a paper successfully and it has been cited more than 100 times so far. I also did networked and distributed systems research. One of the projects turned out well and I first-authored another paper published at a prestigious venue. Overall, I had a strong conviction that I enjoy doing research and I painted a rosy picture of my graduate study.

Expectation and reality of being a Ph.D. student

I was extremely lucky to join the RISELab at UC Berkeley. RISELab was formerly an AMPLab, where impactful research projects such as Apache Spark and Apache Mesos were started. I was amazed by the chance to work with and learn from the smartest and passionate people from all over the world. Indeed, the expectation was met much more than I imagined. Not to mention the faculty, the group of the best of the best scholars, all my peers were a set of the brightest people I have ever met. Interacting with these folks has always been inspiring, and I will certainly miss all of them.

The other thing was obviously about the research I would conduct. I was eager to do important and publishable research and become a prolific graduate student. I didn’t doubt much about achieving this goal by doing enjoyable research at the lab that has had a great impact on the real world. However, it didn’t take too much time to realize I didn’t raise more important questions in the first place.

Advisors and peer students are all crucial factors for a successful Ph.D. study. However, what matters most is the candidate herself. What kind of research I truly enjoy? What are the problems that “I” think indeed important? I paid too much attention to peripheral issues such as the prospect of sub-fields, interests of my advisors, and publishability of projects. I started computer security research beginning my graduate study. I soon realized that I am not even sure if I like this field and have a good aptitude for doing relevant research. I struggled a lot to find a good project that I can fully devote my time and energy to, even though the lab has a wide variety of projects and members to collaborate with. Without answering the important questions to myself early on, all my efforts were like shooting with no definite targets.

I finally settled down to a project and made slow progress thanks to my supportive advisors. However, those important questions I raised later on evolved to more fundamental ones about myself: Do I really enjoy doing research? Will I be able to solve problems “I” think important as a researcher ultimately? These are the ones I didn’t doubt before I started my Ph.D. study, overshadowed by the small success I accomplished in college. Two years of endeavor was long enough to draw a conclusion that my answer to these questions is no. When I was an undergrad, the projects I did were already well-defined by my supervisors. Also, research was an optional quest that did not have a big downside. Even if I had failed to publish papers, no one would have blamed me including myself. Doing research as a Ph.D. student was vastly different in contrast. As a Ph.D. student, I had to (or quickly learned to) find and scope a problem to solve. It has to be at the intersection of what I think important and academics agree so. I found an almost irreconcilable mismatch between me and academia here.

Deciding to leave grad school

I love problems in which I can see the tangible near-term impact of solving it. As a graduate student, however, finding this type of problem felt difficult if not often undesirable in academia. Students usually learn about problems in their fields from their advisor and senior students or by reading published literature themselves, and so did I. However, I was not able to convince myself of the importance of these problems. Are these real problems for people outside of academia to care about? I realized that the answer to this question is often hard to find and actually does not matter much. The problems solved in academia has to be novel. However, they should not necessarily be the ones already prevalent in the real world. In fact, this kind of problem is often avoided because of the existing academic solutions occupying the publishable territory. The remaining problems are considered a matter of engineering. This makes sense taking the purpose of research into account: broadening the horizon of human understanding and knowledge on a certain subject. Research thus tends to precede the development in the real world. Even though only a tiny fraction of them becomes relevant in the future, the farseeing nature distinguishes research from industry works. Academic and real-world problems are not mutually exclusive at all, but I concluded that the chance of me spotting the overlap is slim.

Every Ph.D. student feels lost and unhappy several times throughout her journey to the dissertation. To successfully get through these hurdles, I think a candidate should have either deep affection toward doing research or a strong conviction that she is doing important research. I admitted that I had neither in the first place after a couple of years of graduate study. I initially blamed other minor factors such as changing my research field from systems to security. If I truly love doing research, however, I had ample opportunities to resolve small issues like that. My affection for research was just too shallow to endure the difficulties of doing a Ph.D.. I didn’t have the same degree of conviction I had when I was 10 towards research.

Once I concluded that I won’t be in academia, the value of the Ph.D. degree diminished drastically. Neither did I appreciate the research topic enough to become an expert in the relevant industry. Still, I forced myself to complete a project I led. After getting it into a publishable shape, which took longer than I thought, I told the final conclusion to my advisor. Before I made the decision, I had discussed my concerns with my advisor already. Here, I cannot appreciate her enough. She not only understood my trouble but also sincerely encouraged me to take a decision whatever makes me the happiest. She let me focus on my job search during the Summer and even helped it by connecting me with people in the industry. I am tremendously indebted to her for all the support I’ve got.

Job search

When I was about to start a job search for a software engineer position, the COVID-19 pandemic hit the world. Lots of companies implemented hiring freezes. I became so anxious about my job search. However, there’s one important thing I did right: (human) networking. RISELab is one of the most renowned research groups in the industry. Our lab is distinguished for its wide and close connections with companies that sponsor the lab. RISELab holds biannual retreats, weekly seminars, and annual tutorials where hundreds of researchers and engineers from industry join. Every time I attended these events, I had many 1-on-1 chats with seminar speakers and participants if s/he is in the fields of my interest. It was mainly a way to get a sneak peek of interesting problems in the industry. Little did I anticipate that these connections I made would open a lot of job opportunities. Even though I didn’t do any internship, people I spoke to remembered me and kindly provided valuable referrals.

Algorithmic problem solving is a major form of interviews for software engineers in the tech industry. I had competed in the national competitive programming contest before I entered a college, but haven’t done it for many years. I was able to spend the Summer sharpening the interview programming skills.

The unexpected flexibility of Google

When I started my job search, Google was not on the top of my list. Google is still regarded as a symbol of Silicon Valley and I once dreamed of working there when I was younger. However, I wanted to join a company that has a bigger upside-potential in terms of my personal growth and equity. I learned there are numerous other exciting and promising companies that are up and running in the Bay Area. In contrast, Google became a giant from a nimble and fast-growing startup long ago. Moreover, I heard from several Googlers that Google is quite conservative in the level of the offer. Since many candidates still accept an offer from Google even if the level of the position is lower than the others, Google enjoys this advantage in the recruitment. I assumed that even if I get an offer from Google, the level would be lower than the other offers.

Fortunately3, I got a handful of great offers from multiple thrilling companies. One of them was the one I wanted to join most when I started my job search. It’s a famous pre-IPO company with excellent potential and reputation. I finished the interviews of both Google and this company around the same time and I felt I did very well in these interviews. Before I got an offer from the other company, the Hiring Committee of Google reviewed my interview performance and then offered a chance to raise the level of the offer by taking an additional interview for senior candidates.

In fact, the hiring process of Google was much more flexible and fair than I expected. None of the other companies I got interviewed gave me a chance to level up the offer based on the result of the coding interview. If you pass the bar, you normally get an offer of a level that an employer decided based on your years of experience. If you don’t, you just lose the offer in general. I felt Google is most confident about their interview questions and interviewers. Google cared about the interview performance more than any other company in making the final offer. I felt this is more reasonable than taking mostly the years of experience of a candidate into account for the decision. The interview experience with Google changed my impression of the company a lot.

I passed the additional system design interview as well and finally decided to join Google. I was mainly deciding between Google and the other company that I wanted to join most. The other company’s offer had a better upside potential clearly and the work encompasses hotter technologies than the ones I will use at Google. However, I focused on myself more this time to make the decision.

At Google, I will work at the Systems Infrastructure (SyInfra) group. The group manages the issues arising out of the massive scale of the computer clusters where services like search, YouTube, and Maps are running on. As more and more services from other enterprises using Google Cloud also rely on the compute infrastructure, I guess the group has become even more crucial inside Google. I was excited about joining a group that I can easily appreciate its significance intuitively. Moreover, I was confident that I will enjoy the work at Google more than at any other company. I already had several years of positive experience in operating systems, computer networks, and distributed systems before I started my graduate study. These are the key foundation stones of any large scale compute clusters in data centers. I wanted to return to the systems territory that I am both familiar with and fond of. Obviously, Google has maintained the largest scale of clusters in the world and led the advancement of this field. I wasn’t able to find a stronger force to join in the battlefield. My decision may not be the right choice when I look back in the future. However, I believe I raised the right questions this time at least.

Looking ahead

Almost 5 years ago, I wrote a post (in Korean) which ended with a resolution:

Am I working on what I think important? I will constantly ask this question to myself. When I can’t confidently answer yes, I will stop it and search for another important work

The question led me to a grad school and then made me leave it. Now the answer convinced me to go to industry and work as a Software Engineer. My answer will not stay the same as it didn’t already. I may decide to come back to academia after several years. Who knows? However, asking this question has not just guided me to the right path but also given me courage. I will keep using my answer to it as an indicator. I hope my tenure at Google will be lengthy so that I can accomplish too many great things until I leave!

  1. She emphasized the importance of learning two important skills as a millennial: one was computer, the other was English. She often described them as the wings that will empower me to comfortably explore any new realm of human knowledge, and realize my own goals in the future. In retrospect, she had better insight than any other teachers I’ve ever learned from in my life.

  2. Software engineer was not a popular job in my country even when I was in college. The CS major took off around the year of 2014 and now it became the most popular major nationwide.

  3. I am not saying this word for humble-bragging. I learned that luck plays a significant role in the interviews since one bad (or mismatched) interviewer is enough to fail you. It is thus important to apply to plenty of companies to make luck be on your side.