Anthony Scopatz

I think, therefore I amino acid.

Advice to Grad Students

This was originally published at inSCIght.

One of my friends, who is a graduate student in Math and Statistics and is a rock-solid developer besides, asked me for some advice today.  They have seen posted around their university offerings for positions (presumably in other departments) for graduate students who can program.  It is true; there are some savvy professors out there who want to get their hands on a primo “Unit of Research.”

What follows is the advice I gave upon reflection of my own, all-to-recent experience.  It is just advice, but we’d love to hear about your experiences in the comments!

As per graduate students working as programmers goes, I would say yes, go for it, it is a lot of fun.  However there are a couple of caveats that you should be aware of.
  1. Make sure that the math / science is something that you find genuinely interesting or could be interested in.  You can always find fun code challenges, but there isn’t much you can do if the application is boring.  You don’t have to be the expert in the field, but you should find it engaging.  (e.g. Maybe you always though genetics was super neat but could never hack it as a “real” biologist.)
  2. Publish or Perish: Ensure that you can publish on the application (if not the software).  The key to being a happy grad student for me was writing conference proceedings so that I could travel  a lot.  And if you are not at least trying to write things up, you won’t be a successful grad student.
  3. CRITICAL:  Make sure that the PI or adviser understands that research code is both Research & Code.  Just because something is in a working state today, doesn’t mean it should be tomorrow.  If they don’t grok the idea of refactoring (even after you explain it), I would think twice.
  4. Make sure you can use your own tools as long as they don’t interfere with other group members. A perfect and sad example of this is version control.  Maybe the project you’ll be on uses subversion (or more commonly no VCS at all) but you like to use git.  As these tools play nicely with each other, your adviser shouldn’t arbitrarily limit your productiveness just because it makes them feel warm and fuzzy to have everyone on the same platform.  This goes for OS, language, etc.  This is one of the benefits afforded by academic freedom; do not let your adviser squander it!