Why you, too, can PhD

It’s getting to the time of the year when graduate programs are accepting applications and deadlines are approaching. Graduate school is a bit of a misnomer, since it’s not really school or a job. If you’re not sure what grad school is all about, you’re not alone. It took me a good while to figure it all out myself. To make the process easier, Cornell’s CS’ very own Professor Ross Tate made a video about common misconceptions about graduate school. It’s mostly aimed at people interested in getting a PhD in Computer Science, but if you’re interested in a different field this video might still be useful. Some common questions answered are:

  1. What is graduate school all about?
  2. Will I get paid to go to graduate school?
  3. Is graduate school only for people who want to become professors?
  4. Do graduate students have a life?
  5. How should I pick a graduate school to apply to?

If you’re curious about any of these things (or graduate school in general), take a look at this video. If you have any questions that weren’t answered, leave a comment either here on the YouTube page and we’ll try our best to answer it.

Graduate School Semester 2

I’m about a month into my second semester of graduate school at Cornell’s excellent Computer Science department. (Shameless plug: If you applied and got admitted you should definitely come visit, we’re awesome. If you’re thinking of applying contact me with questions.) The first semester involved a fair amount of getting used to grad school life. It’s pretty different from undergrad and I covered my initial impressions before. There’s a lot of autonomy (even in the first few semesters) but that means it’s all that much easier to screw up. The most important lessons I’ve learned are to start early, make plans and schedules and set up routines and environments that make getting the work done the default (this applies to both school work and research). I’m definitely not perfect at it, but I try to suck a little less each day.

While last semester was a good learning experience I got a lot less done than I could have. While I don’t want to cry over spilt milk I certainly don’t want to make the same mistakes again. My class load and TA work are about the same as last semester. However I have a better idea of how much time each takes so I can schedule blocks of time more effectively to get large chunks of work done at a time (and not worry about it otherwise). That in turn means that I can have more time for research (which is something I definitely want to do more of this time around).

I’m really happy about the choice of classes I have for this semester. I’m taking Advanced Programming Languages and Datacenter Networks – both are areas in which I have an interest but I know less than I would like to. I have great professors in both and so far the material has been very interesting (and useful). I’m the TA for a class on functional programming which is turning out to be a good learning experience as well. I’ve done some amount of functional programming but not a lot and not in a structured way. I’m working through the exercises and homeworks myself so that I can better help out the students and learning a lot in the process. Since I’m going to be doing a lot of functional programming in the future (Haskell programming in particular) this a good way to level up as well as get my TA duties done.

Last semester I had a small research project which was more of way to get familiar with the concepts and tools I’ll be using later. I am a little disappointed in that my final deliverables weren’t as complete as I would have liked but the experience will come in handy. This semester I have a more concrete (and more ambitious) project. I’m also starting sooner and thanks to last semester I have a far better idea of the challenges I’ll face and how much work it will take to get around them. My main interest in programming languages and right now the project isn’t very language-oriented. But there is a lot of cool systems-hackery involved and once the foundations are laid I can move on to the more higher-level language-oriented parts of it. I’m still taking baby steps (figure out build systems, building testbenches and having rather intense discussions with my compiler) but within a week or two I want to progress to the real meat of the project.

Aside: In case you’re wondering, it involves networks and trusted computing, but more on that in a future post.

Apart from school and research work I’m hoping to do some more exploring. Cornell has a really nice campus but I only saw a small fraction of it last semester (and probably spent a bit too much time in my apartment). I’d like to be able to get out more and take advantage of everything that Cornell has to offer. That’s a bit easier said then done in winter, but that’ll change as things get warmer.

I’m still trying to work out the best “work life balance”. While things like Cal Newport’s fixed schedule productivity seem appealing it might be unworkable for me right now. More importantly, I’m still not sure how separate my work and my life should be, or even what constitutes “work”. I haven’t decided if I consider my writing or my on-the-side hacking (which I’ve been doing far too little of recently) to be work, play or something else. Part of me would like to think that the work-life distinction is only applicable to a more Industrial Age setting where you don’t like your job and want to spend as little time doing it as possible. Ideally you should do work you love (which I’m gradually approaching) and have no need to draw a distinction. While that seems appealing I’m afraid it might lead to sitting (or standing) in front of my machine all day which is not what I want to do. Luckily these aren’t questions I have to answer definitely right now, but I can keep refining my answers over time.

I’m hoping that the rest of the semester will have lots of great learning, cool hacks and maintaining some semblance of a life away from my machines. I know that graduate school can easily become a drag and very stressful and I’m determined to not let myself end up in such a position. Luckily I’m in a good department with great support from friends, family and professors. I’d like to see this semester be more productive and a step on the way to deciding exactly how I want my grad school experience to turn out.

The first week of graduate school

I’ve been trying to think of a good topic for a blog post for a few days with no avail. So instead of one my usual tech posts I have some reflections about the first week of graduate school. Before I dive in, the usual disclaimer: I speak for myself, not for my employer, professors or colleagues. Additionally all this is based almost solely on my experience at Cornell University, your mileage may (and probably will) vary.

First off, let’s get one thing clear: graduate school is not school. If anything, it’s a job with a good amount of freedom. And you take classes for a few semesters. Like Professor Matt Might says: “if acting a certain way would get you fired from a real job, then it’s probably a bad idea to try that in a Ph.D. program too.” I make it a point to treat this gig as a “real” job: I’m getting paid to do actual work, there are deliverables, there are deadlines and requirements, there are people I report to.

That being said, there are a lot of the same challenges that you go through when you end up at school for the first time: you don’t know very many (if any) people, you don’t know where things are (or how to get there), you have to choose classes and you’re constantly on the lookout for free food. Luckily, meeting people is largely a case of being persistent about it (same for finding free food). The social aspect is not to be underestimated: if you’re going to be here for the long haul you might as well make friends with people who are going to be here with you. You never know when you might need a shoulder to cry on. I once read somewhere that in your first week at college you should go to every party you can. I didn’t do that and I’m not sure if I regret it. But it holds for graduate school too (and perhaps any new place you go to). As for free food, there seems to be free lunch almost everyday. Unfortunately most of it is the usual carb-and-sugar heavy stuff you’d expect to find. You probably want to stay away from most of it if you want to eat healthy.

In keeping with my idea of treating graduate school as a job, I’ve been trying to hit the ground running and spend as much time as I can on research. However, this is turning out to be easier said than done. For starters, classes do take up a good amount of time and energy. Accepted wisdom says that for each hour of class you should put in 3-5 hours of work outside of class. But if I plan on getting any actual work done (not to mention having a life) I’m going to have to categorically ignore this formula. Luckily I’m past the point where I get graded on effort and putting in long hours isn’t the same thing as being productive. Though classes aren’t consuming my life (and I’m going to work to keep it that way), it hasn’t been easy to make time for research either.

Though I’ve been power-using iCal sticking to a schedule isn’t easy. As they say, no plan of battle survives contact with the enemy. There are lots of little things that come up during the day (like two fire alarms yesterday) and sometimes estimates are just plain wrong. Since I’m still in the phase where I’m meeting professors and scoping out potential hobbies and activities, my nice time-chunked calendar frequently gets perforated. I’m hoping some of this will subside over time, but this much is clear: any time you want to yourself, whether it be for research, hobbies or just winding down, you have to fiercely defend. I think it’s a good idea to start with a calendar that is all blocked out instead of one that is clear. That way if someone (or some event) wants a slice of your time it’s immediately clear that you’re taking away from something else you could (should?) be doing.

On the topic of research, coming up with good research topics is hard. I have two classes in which I need to do substantial projects and I have very little idea of what to do (except that I want to experiment with some cool technology that could be useful later). Part of this is due to my professional immaturity: I don’t know enough of the field to be able to tell what would make for a good grad-level project. However, becoming more conversant with the state of the field is part of my education and figuring out what to do for a project is a good trial for deciding on a PhD topic in a few years time.

One thing about research that doesn’t get much attention is that it is very draining, both mentally and physically, in terms of energy and time. After a good few hours of reading, thinking and coding it’s hard to get up the energy to do anything else. I can just feel my energy drain away once it gets too late in the afternoon. Personally I have a bunch of side-projects (including this blog) that are distinctly not research-oriented and I’m not sure how I’m going to make time (or energy) for them. One way (again taken from Professor Might) is to keep work and play separate. Since I have a pretty decent office space I want to do all my research at work. I’ve started to move some of my books into my office, I’ve set up a standing desk and generally trying to make it a place I want to work from. Ideally I would like to do all work in the office (again, treating it like a real job) and once I left I’d be done with work for the day.

Finally some logistics. All the new graduate students have been provided with pretty amazing office machines (lots of cores, lots of RAM, fast SSDs). Since we have full root access I can get serious work done on them. It also helps with my plan of not bringing work home. Though I love my office machine, I prefer my Macbook Air for reading and sometimes writing. Also having a mobile work station is nice for the times I want a change of scenery (which can be refreshing). But having two machines also brings up the synchronization problem which is something I really want to avoid. I’ll revisit these issues once I get a better idea of how much time I spend working, where and on what.

So to summarize: grad school is a job, not school. Meeting new people is largely a matter of persistence. There’s lots of free food, but a lot of it is not very healthy. Research and classes burn a lot of time and energy so you have zealously guard what you have left and make sure you spend it on what matters. Keeping a distinction between work and play is a good in theory, the practice remains to be seen. Maintaining multiple machines sucks.

If you have any opinions on graduate school (or just work in general) I’d love to hear.