As I have recently graduated, I have become a bit introspective about my PhD process. If I could talk to myself two or three years ago, what advice would I give about working towards a thesis? Many people discuss advice to an incoming graduate student, so I will not deal with that. Below are three relatively simple pieces of advice that would have likely made my thesis better and easier to write.
1) Use a version control system
This should probably be obvious to most computer science students, and I do use some form a source control for larger programming projects. What I did not realize until recently was how useful it can be for writing. In a larger writing project, like a thesis, the writing goes through many changes. Several times I deleted whole pages only to realize a few weeks later that I needed that exact same text in a different location. With version control, this is a simple fix.
Now that I am writing longer journal articles, I also find it useful to maintain tags for each iteration. I can just as easily grab the text of the original submission as the version that was just rejected for the third time (hopefully I won’t need a tag for the fourth rejection). I recently found a small typo in one of my conference papers; version control allows me to fix the copy on my website, but still keep the actual published version too.
I find Git easy and simple to use for small, personal projects; every new paper gets its own git repository when it is started. I am sure other software would work just as well, but I do not know enough about other systems to make any recommendations.
2) Save figures in an easily editable format
My adviser will often return comments on drafts that include “simple” changes to figures like changing the color of a bar or the scale of an axis. However, unless you have saved the figure in a format editable by the original program used to generate the figure, this typically requires recreating the entire figure. If the figure is part of a set, it may mean recreating the entire set of figures. Saving a copy of the figures in an easily editable format will save you much time. It will also save you from explaining to your adviser that you ignored his comment about the figure because it did not seem worth it to spend so much time on a minor change.
3) Write up partial and incremental results
When writing up my final system, I realized that I did not have any formal justification for design decisions made more than a year ago. At the time of setting certain parameters, I would try various settings on a development set. My results from early preliminary experiments were often missing or incomplete; either I could not remember exactly how the results were generated or only had results for a few settings instead of the entire range of possibilities.
Due to this oversight, I found myself rerunning experiments to retroactively explain certain design decisions. If I had taken a little more time and care, I could have saved myself many headaches at the end of the process. Also, I could have included further interesting experiments that may never be published elsewhere. Even if an experiment does not work out, you should write up the setup and detailed results. You never know when those results may prove useful later.