I received by email my receipt saying that my PhD dissertation was accepted by the UBC library for archiving. That means I am no longer a student; I'm Dr. Brett Cannon.
It's stil quite the statement to be able to make. I started junior college in September 1997, and for about 11.5 years over these past 13.5 (forced to take time off between PCC and Berkeley, year off between bachelors and masters, and then time off during my three internships at Google), I have been in some form of post-secondary education. To have it finally be finished is somewhat astonishing. I am literally no longer a student; I'm flat-out done and will never be working towards another degree again in my life. That's almost unthinkable.
So the question that I have been asked over the past several months as I worked on my dissertation and towards today has been if I thought this was all worth it. My answer to that is "I don't regret it, but I would not have done it if you told me what it would end up entailing". Basically I would have stopped at my masters degree and gone to work for Google if I knew then what I know now.
Why is that? Well, you need to understand what a computer science PhD entails. You start by taking classes; the 2005-2006 school year for me. For me that was somewhat painful as I had to take an algorithms course for the first time and that is my weakest subject in CS. After that you try to find a dissertation topic. That took me some time as all of my ideas turned out to either be done, too small (e.g., masters level), or too big (multiple PhD students working for years on one massive project), or not enough research behind it (once again, more like a masters thesis). But I was lucky enough to finally have inspiration strike me in my supervisor's office in the summer of 2007. Then you live and breathe that idea until you get a published paper out of it; March 2009. After that you then expand upon the idea, quite possibly with more publications, until it is big enough to warrant a dissertation that is over 100 pages. In my case I diverged in my work and came up with another idea in around April 2009 which got published in April 2010. You then write up your dissertation, get your supervisory committee to sign off, defend it, make final corrections, and then get it to the university library to archive for eternity; that last bit happened today.
In that whole process, there were multiple points of frustration for me. A big one was getting published. It turns out that I don't write like most CS researchers. Coming from my philosophy bachelors, I have a natural writing style which is somewhat flow-y, with more of an emphasis on telling a story. CS papers, on the other hand, are very dry and to the point (something, if you have ever talked to me in person on a topic for any great length, I am not good at doing). As Eric, my supervisor, has always told me, write a paper like a program: repeat points as necessary, be very structured, etc. This drove me nuts. When I wrote CS papers I had to mentally force myself to write in a style that I did not like. If I had my way that stupid paragraph at the end of every introduction I ever wrote that outlines what each section was about would not exist; read the section titles to know what they are about! The paper is only 10 pages! You can flip through it to see what is coming up!
And then there is making sure a paper is done in a way that pleases the conference you are submitting to. You don't simply write a paper for yourself and then try to get it accepted at some conference in your field. No, you write a paper for a conference. That always pissed me off as I felt like I was no longer doing the work simply for the benefit of research, but instead to get a publication. It's an age-old problem with academia and it simply rubbed me the wrong way. It especially upset me when I got rejected for what seemed like bogus reasons because one reviewer just didn't like my approach.
And it didn't help that the programming was not always fun. Java is a blight upon computer science which has a stronger hold upon CS academics than it does enterprise programmers. The great irony of CS academia is that you are usually developing cutting edge techniques with old tech. Programming in Java, using CVS for version control (svn if you are very lucky), all on Windows. My security work was all in Java and I hated it. It's my own fault for coming up with an idea that required AspectJ and thus using Java, but that doesn't mean I have to like Java or my time programming. At least my object persistence work used JavaScript which is better. And thank goodness I got to write the server part of my object persistence work in Python on App Engine.
It was the frustration of being distracted from my research to get published, not always doing the fun stuff even when I was only focusing on my research, and just the amount of time I had to spend on a single idea that causes me to say that I would have skipped the PhD had I known what it was going to take. Had I got to simply focus on the research then I probably would have absolutely no qualms about the PhD.
And now here is where I act as the wizened old man, helping CS students decide whether they should pursue a CS PhD. First, you should make sure you actually enjoy programming. I know this seems like a silly thing to say, but I have met CS academics who actually find it really weird that I enjoy programming enough to do open source work in my spare time. But if you don't have that kind of love for programming you might end up going nuts.
Second, make sure you love research. Not everyone can stand to read research paper after research paper on the same topic. I know way too much about security in PHP for a person who has not programmed in PHP in years. But that's what happens when you have to be thorough.
Third, realize that you will have to do publications and that you will not enjoy it. Publications are just part of the game of academia. You will be expected to put the time in and it will be not a highlight of your academic career. If you want to become a professor you better hope that you can at least tolerate the publication aspect.
Fourth, don't expect your research to make any sort of impact. While the entire point of your PhD is to push the boundaries of mankind's knowledge, the amount you will push it is small. And the importance of the push is even smaller. I know I don't expect any of my work to ever be used for anything other than as something to cite in other publications.
Fifth, you need to be self-driven and organized. If you are not then the freedom afforded to you in a PhD will lead to you wasting a lot of your own time, postponing your graduation that much more.
My failure was liking research but not loving it combined with not knowing how much I would hate trying to get publications. But at least I met Andrea through all of this so that's a perk. Plus I get a spiffy title.
2 comments:
What? You're not starting work on your second?
Congratulations. This is a huge accomplishment. I always thought that when you turned in your dissertation, confetti ought to fall from the sky. Probably still no budget for it.
Post a Comment