I’ve fielded questions recently from undergraduate students interested in, but unsure about, pursuing a PhD. I distilled some thoughts into an email, but actually these thoughts are better spent in public. I have previously written on the process of a PhD elsewhere, from a different perspective.
The following was written retrospectively, after I had submitted my own PhD dissertation, and long after I completed my undergraduate career. It’s also written from a UK perspective: other countries may have teaching requirements for PhD students, or may have taught classes that students must attend. UK PhD programmes also have a time limit within which you must submit your work for examination, and that time limit may be different or non-existent in other countries.
Here’s a universal truth: studying for a PhD is vastly different to studying for your undergrad. Here’s how:
During your PhD, you will do a lot of reading (hundreds of papers), and you will learn what is good work and what is bad work. Reading papers is initially tough; papers are dense, and sometimes a paper will have been edited to within an inch of its life to meet a page limit. You’ll eventually figure out where there’s a gap in your chosen field: something that hasn’t been done before, or something that was done incorrectly before, possibly where you know of a better solution. You’ll probably write some code, churn some numbers, then ultimately write a paper on the results.
After you have read lots of papers, done some work and gotten some results, writing papers is the next important skill to learn. Scientific writing requires practice, as does accepting the inevitable rejections. Everybody gets papers rejected. Top conferences might have acceptance rates of, say, 15% of all submissions. Getting your work accepted is tough. Getting your first rejection is tough.
Writing code is ancillary to all this. When writing a paper, you need to give sufficient detail on what you did to get your results, but to detail the cool new framework you built to achieve it would be to waste space.
Broadly, the PhD process often looks something like this:
“Stuff” is nebulous and depends entirely on your topic. The rate at which you write papers depends on the nature of your work, how heavily prescribed your work is, the size of the group you’re working within, when conference or journal deadlines are, and the nature of the project. PhDs in the UK tend to be fairly solitary affairs. This can lead to your attribution on fewer papers, but you will probably have a higher stake in those papers that are accepted for publication.
Hopefully some of your papers will be accepted. (I managed four papers during my PhD, which in hindsight is pretty good for my field.) If so, you should get to go to conferences/workshops. How the travel costs are handled is dependent on whether you’re funded through a research project, whether your supervisor has funding to spend, whether there’s a central pot for conference travel, and whether student grants are available from conference organisers. Ultimately, you go to these meetings, and you stand up and you talk about your work.
That’s more or less the core of how a PhD works. In a good office, it’s fun. You talk about cool work and you share papers and you proof-read the work of other struggling PhD students.
Your supervisor is key. You have to like them, because they’ll be criticising your work for the next 3-4 years. Equally, although obviously you’re learning the skills of the academic trade from them, at some point you know more about your topic than they do. You mature as a student and become considerably more independent when you realise you know the work intrinsically, and your supervisor is offering guidance rather than instructions.
A word of caution on supervisor selection: some supervisors treat students as a resource they can use for labour. Don’t let them do so, not without question. It’s your PhD, so use the critical thinking skills you’re learning to determine whether any task is to your benefit or not. Talk with your secondary supervisor if you think your supervisor isn’t doing a good job. I’ve seen people sit thoroughly miserable PhDs because they haven’t felt that they can question the role of their supervisor. You can, and changing supervisors can happen without affecting your outcome.
Funding is, obviously, important. Funding, to an extent, depends on where you’re studying, so this is Glasgow/Scotland-specific:
I was the former. I had a lot of freedom, and it was great. There are other scholarships available that your future supervisor may recommend that will be similar to that former category of funding.
The alternative option to going straight from your Honours year into a PhD programme is provided by the MSci programme that Glasgow runs. Yes, this adds another year on to things. But, here’s the thing, it adds another year on to things. Seriously, a maximum of four years isn’t that long when you’re trying to do good work in a competitive field. Taking a year to learn how to critique papers (about 50% of workload on the MSci year) is not a bad thing to do. The MSci year is a harder year than the Honours year. Arguably, it’s tougher than most of the PhD (a sprint vs. marathon analogy is appropriate, here). There’s much more reading, and possibly less coding, than your Honours year. Reading isn’t amenable to late night red-bull-fuelled sessions, and nor is (good) writing. You get a sort of a taste, albeit a concentrated taste, of what a PhD might be like. The other advantages are that the MSci boosts your salary potential, gives you a specialism of sorts, and grants you time to decide if a PhD is really what you want to do.
If you have the option of the MSci or progressing straight onto a PhD programme, I’d encourage you to consider the MSci. Consider it, at the very least, as a free year onto your PhD.
I don’t mean to imply in the above that you don’t learn any new technical skills. You do, it’s just that it’s absolutely not your outward focus. That doesn’t preclude learning the correct tools for the job, keeping your code properly version controlled, keeping your data backed up appropriately, keeping your toolchain in good condition. I emphasise this because most people, at the end of their undergraduate careers, aren’t aware of computing science as anything other than software development.
During my PhD, I learned a lot about bash scripting. I learned lots of more advanced stuff in make, bash, awk, sed, etc. I learned lots about how to build pretty plots using gnuplot, and how to automate data collection, processing, and plotting. I learned statistical programming in R. I learned Scala as a more functional language that runs on the JVM. I learned new ways to distribute code to use multiple hosts, either by hand with my own shell scripts or by using tools like GNU Parallel. I learned to use Scala’s Actor model to trivially max out all the cores on multicore machines.
Additionally, since you’re normally not a university employee, you retain your intellectual property and you can release code as you please. (But some institutions will hold your intellectual property on your behalf, so check first.) There’s a lot of freedom here, the main thing is to be pragmatic. The point is to learn some new technology to achieve a goal, and not necessarily to burn time on it just because “it’s fun”. That said, in the earlier years when you have more time, “it’s fun” can sometimes be reason enough.