|What it looks like to do a PhD: the view from my desk.|
One prospective student put it well when she said that she knows how she is in other work situations, but she has never done a PhD before, so she does not know what it will be like. She had been curious about things like my relationship with my advisor, my research trajectory, and whether I had hobbies. She mentioned speaking to other people at various points during the PhD, but not having the whole picture much. After this conversation I decided it would be helpful for more people to talk about their PhD experiences in entirety. Now that I am a few months out of my Computer Science PhD at MIT and am about to begin an Assistant Professor position at Carnegie Mellon University, I can talk about my PhD experience in whole. This is my version of Philip Guo's The Ph.D. Grind.
Like many other academics, I will say that graduate school was one of the best periods of my life. I grew immensely, made many friends, and learned about the research process. During my PhD, I largely got to determine my own research agenda and day-to-day schedule. I developed my tastes as a researcher. I developed my tastes as a human being. Also important to me is that I developed some of the most intellectually and emotionally fulfilling friendships of my life. I loved graduate school so much that I decided to stay in academia.
But this does not give the entire picture. "Loving graduate school" is different from loving a good meal, a thought-provoking film, a pet, or another person. A PhD is about training you to become a researcher. The further you are from being in an experimental field, the further this growth is about concrete skills and the more it is about existential questions of how you want to be. If you want to stay in academia, you must also balance the growth with ensuring you have enough to show at the end for the intellectual coming-out party that is the academic job market. This growth is painful and anxiogenic. Even if you are in a supportive environment and have great work-life balance, a PhD is not supposed to be a comfortable ride. The flip side is that, as my friend Alex describes it, during your PhD every day is "epic."
Enough philosophizing. Here, concretely, is what my PhD was like.
Summer 2008. At the end of the summer, I move into my office at MIT, where I am to be co-advised by Mike Ernst and Saman Amarasinghe. Saman pays for me to start early. I spend a couple of weeks reading papers, mostly about parallelism, and report to him every morning about what I've read. He gives me lots of advice about what life is going to be like. Mike Ernst has been in Europe this whole time. The last week of the summer, Mike Ernst calls me and tells me he is moving to the University of Washington.
2008-2009 (Year One). I'm recovering from a repetitive stress injury in my neck, so Saman advises me to take hard theory courses that involve little computer use. I take Advanced Algorithms and Machine Learning in the fall and Advanced Complexity Theory in the spring.
I get involved with and become lead author on a PLDI submission with Saman and Martin Rinard about a programming language for trading off power and accuracy. This paper is pretty good for having come into existence over the course of 1.5 months, but not objectively a great paper--and it gets rejected.
Ras Bodik, a professor at Berkeley who tried to recruit me, emails me telling me his student Armando Solar-Lezama is starting a professorship at MIT. I meet Armando and he sends me many papers to read. Soon we are meeting and working so much I no longer have time for the other project, which was a suboptimal fit anyway for various reasons. I like how much bandwidth Armando has for technical discussions, especially since he has no other students or teaching duties at the time. I am nervous that this high meeting frequency is unsustainable, so I try hard to recruit other students to Armando's group.
Armando and I submit a paper to OOPSLA but it is not good because we don't start writing it until three days before. I also submit a paper to the Haskell Workshop about my senior undergraduate thesis, but it is not good because I don't know how to write papers. My friend Jean-Baptiste who reads it asks why my blog is so good but my paper drafts are so bad.
Since I am still figuring out what I want to do, I schedule many meetings with professors and ask them how to do research. In addition to Saman's group meeting I also attend Daniel Jackson's group meeting. I go to many PhD defense and job talks. Both Martin and Saman tell me that in order to become a good researcher, I have to flounder and fail. I have never failed before. I take it as a challenge to do work risky enough to fail.
January of this year I attend my first conference, POPL. Martin pays for me to go after I email him asking how I can get to go to POPL. I meet many people, including many people at Microsoft Research. This eventually leads to my first internship.
Outside of work, I try to avoid using my computer due to my repetitive stress injury. Because of the injury, I am also aggressive about working 8-hour days and taking breaks on weekends. I am too lazy to make many friends so I spend my free time reading, cooking, doing yoga, and running.
Summer 2009. I intern at Microsoft Research in Redmond with Chris Hawblitzel. I had seen Chris's talk at POPL about verifying garbage collectors using Boogie and thought it was one of the coolest projects I had ever seen. I had not thought I was qualified to intern with him, but some of the people I met at POPL recommended me to him. This summer, we build Verve, an operating system verified for type and memory safety. I had never verified anything or built an operating system before. I work hard, 10-12 hours a day, because there is so much to learn and because the project is so fun. I work closely with Chris and he teaches me an incredible amount about working with low-level code. Outside of work, I hang out with the other interns. I live in Redmond but on weekends I go into the city, where I have two friends I stay with.
2009-2010 (Year Two). I continue to work with Armando, on the project that eventually becomes the Jeeves programming language. My first year we started with a vague idea that dynamic constraint-solving was useful for handling corner cases that static program synthesis could not handle well. We apply this to data imputation. We learn over the course of 1.5 years of paper submissions that people don't care much about data imputation, especially since our results are not particularly good. By the end of my second year, we start thinking that security might be a better application domain. This cumulative work is my masters thesis. We still have many things to figure out at this point so I am not that excited about my thesis. I try to ask for an extension but Armando tells me to just turn it in.
In the spring, Saman and I start what becomes an annual off-site retreat of all the research groups related to programming languages at MIT. People give research talks and we have philosophical discussions about the future of research, publishing, and education. At the first one, we realize there are many more people who have common interests than previously thought. After the first meeting, the professors meet together and decide to do more activities together from now on. From this point forward there is more cohesion and activities like weekly PL-related meetings.
At the beginning of this year, I start telling people that I wish I had more female friends, since I realize that there are many fewer women around me than before. My friend Neha Narula tells me to respond to a call for people interested in starting a graduate women's group and I meet Kay Furman, a PhD student in the Health Science Technologies program. Along with a couple of other graduate women we start Graduate Women at MIT. Such a group had never existed and our proposals are met with a fair amount of skepticism, more from students than from administrators. At this point I still don't have many friends, so I spent many evenings and weekends working on building the organization: recruiting, fundraising, inviting speakers, writing materials about why we need such a group, etc.
As part of my acquisition of more female friends I join a feminist discussion group, also invited by Neha. We get together about once a month for a dinner hosted in one of our homes. These discussions and my friendships with the women in the group shape many of my views over the next few years.
During this time, I look into acquiring more hobbies. I take some break-dancing classes at the Dance Complex but decide it's not my thing. I take up acrobatics (silks, rope, and static trapeze), for which I continue weekly classes on and off for about a year until I realize I am not serious enough about it (and travel far too much) to make continuing worthwhile.
Summer 2010. I intern with Nikhil Swamy and Juan Chen at Microsoft Research Redmond. They have a dependently typed language called Fine for verifying security properties. I ask to intern with them because I want to take my work in this direction. I spend most of my time working on a tool for stuffing proofs into bytecode and taking them back out. I learn a lot, but the proofs are too big and we never quite manage to get it to work. I also participate in many meetings and calls about the F* language, which is like Fine but supports proof erasure. I learn a lot about dependent type systems and security concerns.
I live in Seattle this summer, in a studio apartment on Capitol Hill. For traffic and productivity reasons, I take the 7am bus to work and stay at work until 7pm. There is a heated vinyasa yoga studio I go to after work most days. I love having a routine and Seattle in the summer and the energy of Capitol Hill at night, so I am very happy with my life. This summer, thanks to Chris's nomination, I also participate in the Lindau Meeting of Nobel Laureates, where Nobel laureates give talks about science, the research process, and the future of the world. I make friends with scientists from around the world and find the talks inspiring.
Chris and I have a paper on Verve that appears at PLDI. We win Best Paper Award. I am too young to realize that not all projects go this smoothly and not all papers are this good, so I am confused. Since this is the first paper I ever published, this becomes my new standard for paper goodness. It takes me years to realize that it is possible to do much less and still publish a paper.
2010-2011 (Year Three). Now I am done with classes, have no more routine, and have to return to working on my project I am not that excited about, so I am less happy than before. I have this OCaml interpreter implementation for proto-Jeeves that I have been working on. To make things scale, I implement a C backend and a garbage collector. It integrates with the Yices constraints solver. It is hard to do anything with this interpreter because it requires a lot of work to experiment with language features. I do not feel much hope about the project. I shop around for other projects. I consider doing an internship in hardware synthesis with David Bacon at IBM Research, but after talking to some people decide I should not switch to this area.
In the fall, I TA a new program analysis course taught by Arvind, Martin, and Armando. The professors are excited for me to help revamp the course. There are four course staff total and six registered students. Most of the work involves doing the problem sets to make sure they work. It takes a surprisingly amount of time to grade six assignments, since each assignment is likely to make different design decisions. I hold weekly recitation where three people attend. All three students are strong, so most of the time we talk about fun PL topics.
To take a break after going straight from turning in my masters thesis to doing a internship, I treat myself by taking a two-week vacation. I take a road trip through Romania (and also parts of Serbia and Hungary) with my friend Florian who I met at some conferences. My friend Kate, who I met through the feminist discussion group and who has moved to Europe for an Erasmus masters program, meets us in Vienna, where Florian is studying.
In February I attend my first workshop at Dagstuhl, a German castle that hosts focused computer science workshops. I have involved discussions many computer scientists working in similar areas. I find it excitiyng. Afterward I meet my friend Kate for a weekend in Brussels and we have adventures as usual.
This year, I also start to make more friends. I become good friends with my "cohort," the other students interested in programming languages and software engineering who I started with. I also become friends with many female scientists. I never had many female scientist friends before and this makes me happy because I feel much more understood.
Summer 2011. I decide to stay around MIT to focus on research. My groupmate and officemate Kuat Yessenov tells me it would be simple to implement my language as an embedded domain-specific language in Scala. Kuat makes a prototype implementation and begins to collaborate with me on the project. This changes everything. All of the sudden, the language has hope of becoming practical. A nice story about Jeeves emerges: it is a convenient and practical programming model that lets you factor out information flow policies. It seems natural and like the way to go--but formalization is not entirely straightforward and there are some interesting theoretical properties too. It is great to collaborate with Kuat, who is very smart. We submit a paper to POPL. We work hard, staying long nights in the office. I briefly become nocturnal in response to receiving feedback from my advisor in the evening and feeling compelled to make the changes before I sleep.
It rains a lot this summer and we both become sad. One day, Kuat leaves a fortune cookie fortune on my desk that says "It cannot rain every day."
2011-2012 (Year Four). Armando starts putting pressure on Kuat to return to his project so Kuat stops collaborating with me. I am now collaboratorless and still haven't published anything on this language, now called Jeeves, so I become more and more hopeless. A couple of my friends, Marek Olszewski and Michal Depa, leave school to do startups. Marek invites me to join him. I'm not ready yet, but I have significant FOMO (Fear Of Missing Out). I take a class about startups and become friends with Tiffany Kosolcharoen, then a student at Sloan. Tiffany and I spend hours together every week and she teaches me an immense amount about the startup world.
My friends begin to worry I will quit graduate school. My groupmate Rishabh Singh stops teasing me about my inferiority for the first time, looks at me seriously, and says, "Miss Yang! You cannot quit. You are an intellectual." Someone leaves a fortune cookie fortune on my desk that says "It does not take guts to quit." Sasa Misailovic, another one of my cohort, has an intervention lunch with me telling me that I like graduate school the most out of all of us, so if I quit then what does it mean for everyone else. I tell him everything is meaningless.
Our paper gets into POPL and everyone is relieved. I am relieved to confirm there is life after Verve. Armando is relieved for obvious reasons. My friends are relieved because they stop thinking I will quit graduate school.
During the spring I build a small conference management system using Jeeves, not because I want to but because Armando says it is important to build things to see what breaks. This takes a lot out of me because Jeeves doesn't really work yet and I previously knew little about building web applications. We run out of memory all the time and I have to wake up in the middle of the night to restart the server. For weeks after, my friends make fun of me by sending emails telling me my server is down. For weeks, Armando and I wake up with nightmares in the middle of the night that our server is down. During this process I also realize that in order for language-based solutions to work, we have to have a better story with interfacing with the database. I feel proud that I convince Armando this is an important direction of future work. I also concede that it is important to build things.
This spring I do some traveling. I win a Facebook Fellowship and travel to the Bay Area to give talks at Facebook, Google, and Berkeley. I attend another workshop at Dagstuhl and spend the weekend in Paris beforehand and meet my friend Kate in Barcelona after.
My social life becomes fantastic this year. I find the "party circuit" orbiting a nucleus of social Harvard and MIT graduate students. I meet many interesting and brilliant people.
Summer 2012. I intern at Facebook to gain "privacy street cred." I start in July because it's after the POPL deadline. The other interns starting at the same time are all Eastern European college boys. This becomes my friend group for the summer. I live in the city and commute to Menlo Park every day, staying on campus for 10-12 hours. I work hard, building a verifier for privacy policies using Haskell. I like the work but find it isolating because I'm the only person working on my project and it's not clear what I am allowed to talk about outside of work. I take daily walks with my friend Pieter Hooimeijer, who I knew from research and went to Facebook after his PhD. I work harder than I want to because of the potential high impact of this project: it is tied to a pre-launch project and if it launches well, this could be a really nice example of verification in production use at a large company. Armando flies out to Facebook at the end of the summer to discuss my project under NDA. I am so happy to see him.
2012-2013 (Year Five). I return to school but continue contracting for Facebook. I work on my verifier one day a week and fly out to the Bay Area every few weeks for a few days at a time to continue working on my project. I maintain two social lives, one in Cambridge and one in San Francisco. The bigger project I'm a part of gets cancelled around February, for political and not technical reasons. I feel very disappointed, especially because my verifier had been very close to being put into production. I also feel relieved, because I'm exhausted from having two jobs and two social lives. I make some small efforts to try to publish on what I built, but Armando is not excited and the team at Facebook has scattered. We file a patent.
The rest of my research is not satisfying this whole year. I work on extensions to Jeeves that Armando tells me are necessary for the work, but that I am not excited about. We work on integrity extensions to Jeeves that I don't think make sense. What I really want to do is figure out how to extend the Jeeves programming model to the database, but I can't work on this until after we finish this other stuff. I submit an uninspired paper to CAV. One of the reviews says, "I cannot believe there are four authors on this paper and so many typos." I am not excited about anything by the end of this year.
In the spring, I take a class in the Media Lab with Ethan Zuckerman about new media. Half the students are technologists and half are mid-career journalists at Harvard and MIT on various fellowships. This gets me thinking much more about media, online communication, and civic participation.
Summer 2013. I stay around school to work on the integrity story for Jeeves, which I continue to not believe in. Armando tells me it is time for me to graduate and go on the academic job market. I tell him the academic job market is a big commitment because 1) I don't know that working alone forever is the best way to achieve the things I want to achieve and 2) the work/life balance doesn't seem great. He says 1) is a result of how he chose to run his group, but if I don't want to put in the work of being a professor then I should wrap up my work as quickly as possible and move on with my life. We are both sad.
2013-2014 (Year Six). I spend a month having in-person and Skype meetings with people about other career paths, for instance working at LogicBlox or Jane Street Capital. After my mother reminds me I don't have to do computer science anymore, I consider becoming a writer or an artisan specializing in linocut block prints. Rocky, who works on my floor, tells me that usually everyone on the seventh floor can hear when I laugh, but he has not heard me laugh for six months.
During this time, I also visit Andrey Rybalchenko and Byron Cook at Microsoft Research Cambridge. I enjoy myself immensely and have many stimulating meetings and become exposed to the field of executable biology. (Later I find out this was a secret interview.) I determine that nothing else is as exciting to me and even though academia is a big commitment it seems worth it. I tell Armando I'm ready to go on the job market and he says he already told everyone I wasn't anymore and plus it's better for me to wait. I am more than fine with this, since a big issue had been that I don't want to leave yet.
After I determine that one of my main issues with my project is that nobody uses Scala for prototyping web apps, I decide to switch to Python. Armando lets me take on an MEng (masters) student to convert our implementation to Python. I find Travis Hance. He finishes the conversion in the fall and we spend all spring collaborating on building a web framework based on Jeeves. I am really excited to finally be thinking about the problem of extending the programming model to the database, especially as this is something I had wanted to do for two years. I love having Travis as a collaborator. We decide to submit to OSDI. During the weeks before OSDI, we work together for 10-12 hours a day. I introduce him to many Kendall Square restaurants. During our breaks, we create Haskell Ryan Gosling.
During this time I also decide to take my interest in writing more seriously. The previous year I had come across a former problem set partner Carl Schoonover on Business Insider's list of sexiest scientists in the world and discovered he had been achieving my science writing dreams: writing a book, speaking about science, and even starting a group called NeuWrite to promote collaborations between scientists and science writers. I had brought him to MIT to speak, which led to two things: 1) me assembling an RSVP list of Harvard and MIT graduate students interested in science writing and 2) Carl deciding I was a good person to take over the NeuWrite Boston group, as group membership was shrinking and the current leaders were moving away. One of the journalists from my new media class introduces me to science writer Amanda Gefter and we take over the group. We build a new group from the event RSVP list and Amanda's writer friends. I spend much of my free time 2014-2015 building the group, thinking about writing, and writing. I start publishing not only on my own blogs but also in more public venues. A couple of my Quora answers get published on Forbes and my pieces for The Muse get chosen to run in Forbes and Newsweek.
Summer 2014. PLDI is in Edinburgh at the beginning of June and my friend is getting married in Croatia at the end of June. Since Armando is paying for the trans-Atlantic flights, I scheme to remain in Europe for the month. I set up another visit to Microsoft Research Cambridge and a visit to the Max Planck Institute in Kaiserslautern, Germany. I get good feedback on my work during both visits. I then spend a long weekend in Berlin visiting my friend Kate and a week wandering around various parts of Croatia for vacation purposes. I see Oslo for a day on the way back. I find the entire trip relaxing but find it difficult to return to normal life after.
Our OSDI submission gets rejected, so I spend the rest of the summer cleaning up the paper and doing more work to submit to PLDI. I feel an incredible amount of angst about my uncertain future as I prepare for the job market. I spend one day a week doing extreme exercise, cycling 50+ miles or running 11+ miles, to obliterate all thoughts. For various reasons I also spend a lot of weekends in New York and make more friends with people working on data and journalism.
2014-2015 (Year Seven). I spend most of the fall preparing a submission about the Jeeves-based web framework to PLDI. I also work on my job applications. I go on the job market, interview, etc. I get some offers, accept a position at Carnegie Mellon University, and defer a year to collect myself before beginning and also to explore my interest in applying programming languages and biological modeling.
To keep myself from thinking about my uncertain future all the time, I start a cybersecurity accelerator, Cybersecurity Factory, with my friend Frank Wang, with the goal of helping research-minded people start companies. After Frank and I ran out of research things to talk about the natural next step was to develop a project of mutual interest and we're both interested pushing academic research into the world.
I don't have much of a social life this year. For a couple of my interviews I stay with friends beforehand and they listen to my talks. My friends Alison and Tobi make sure to force me out of my house for non-work reasons every once in a while. Every few weeks my friend Angela comes over and cooks me dinner. I remain grateful for my friends.
Summer 2015. I spend the first part of the summer working on writing up the Jeeves-based web framework work, which has continued to be rejected from every conference. I get the framework to be much faster and work with my collaborators on a cleaner semantics. We submit to POPL and then I work on my thesis. The introduction and related work take much longer than expected, maybe about a month.
During this time I spend maybe about a third of my time working on the accelerator and doing public communication about cybersecurity. We accepted two teams for our Cybersecurity Factory pilot program and we work closely with them to make sure they are getting the support they need. I spend a good amount of time on the phone with media people getting press for our program. I write an op-ed for the MIT Tech Review.
Somewhere in there I take a 36-hour trip to Singapore to give a talk at a data privacy workshop Saman is organizing. Saman gets the people to fly me business class so I can sleep in transit. It is my first time flying business class. I am confused about what to do with such frequent deliveries of hot towels to my seat.
I don't have much of a social life during this time either. Several people text me "you have to eat sometime" after I repeatedly decline meal invitations.
2015-2016. I defend! I take two weeks off and then start a postdoc at Harvard Medical School. I slowly ease myself back into having hobbies and seeing friends. Our POPL submission gets rejected and I finally spend a lot of time thinking about how to sell the work (rather than how to do the work). I learn that despite pressures to make the work better until the last minute, I need to fight to spend a long time on the writing, especially if the proposed idea is outside of the mainstream. A nice story emerges about a new and practical web programming model that allows programmers to factor out information flow policies across the multiple runtimes of the application and database. Our paper finally gets accepted at PLDI. I feel relieved to publish the final part of my thesis. And here we are now.
For those wondering what to take away, it is important to note that every PhD experience is unique influenced by factors such as the advisor relationship, institutional requirements, the funding situation (both professional and personal), and the academic and social environments. I am privileged to have had a relatively supportive environment and few additional pressures. My experience is most likely to generalize for other computer science PhD students at top schools, where the funding situation tends to be good and advisors tend to give students a fair amount of freedom.
You may also be interested in other posts I've written about my PhD:
- On Quora: Do Ph.D. students get time to pursue their hobbies?
- Reasons to Pursue a Ph.D.
- The Life of an Academic, Explained
- How Science Really Works
- You may be interested in reading the comment thread for this post on Hacker News.
- My friend and former groupmate Nadia pointed out that during 2014-2015, I claim to have no social life "but we went to so many cool parties." It's true. Over the course of the year I did go to some cool parties.
- My friend Michael, who I once dated, said I should mention the existence of romantic relationships during the PhD to provide a more complete picture of my life. Chris Martens also says in her blog post about her PhD that she is frustrated when people don't discuss the interplay between romantic partnerships and work. Over the course of my PhD I was in a few committed romantic relationships, mostly with other academics, mostly in other fields. Some of the time I was in relationships coincided with periods of extreme work. This was difficult to balance, but other academics tend to understand. I was never in a relationship where someone else was routinely doing any portion of the domestic labor. I was also single for a significant portion of my PhD.
- Berkeley PhD student Stephen Tu has begun compiling a list of PhD reflection here.