Ask HN: Whats your ideal PhD workflow
I'll be starting a CS PhD (specifically comp bio/biomedical datascience) at Columbia this September and have been thinking a lot about what sort of workflow/tech stack would be best to use during this period of time. I've only ever worked in academic research and haven't always had the most structure which would usually resemble a waterfall type workflow.
So far I'm thinking kanban to organize ToDos, SciWheel for citation management, Evernote for general notetaking, overleaf for LaTeX, and Doom Emacs as an IDE all used in an Agile-esque way.
Are there any suggested organizational methods/tools that you might recommend?
48 comments
[ 4.6 ms ] story [ 126 ms ] threadBiggest thing I can recommend here is don’t conflate tools with process.
Take 7-10 articles on a subject -> diagram and extract main sentences into a text file -> reorganize all of the extracts into an outline of what you want to write (I use a kanban board for this) -> rewrite to get an extremely condensed 'first draft' -> export back into a text file, rewrite again, and expand and elaborate to get a second, readable draft.
Also, references in Zotero => https://www.zotero.org/
There is a good Android client for Zotero, so toting around research on a tablet is a cheap approach.
Can you easily share/edit LaTeX files with multiple people (2-10 ppl) with them?
Overleaf is probably easier for casual interaction, but for substantial work with savvier collaborators, why not git?
Org-mode publishes to LaTeX, and org-babel does tangle/untangle round-tripping for literate programming. Whether there is any prior art could tangle-untangle a LaTeX file for Overleaf interaction is unknown to me, and sounds like a Rube Goldberg workflow at best.
You don’t have to go all in on org for notes and TODO tracking (I’ve tried and haven’t made it stick).
https://github.com/jkitchin/org-ref
2. Instate some reasonable rules about managing data and figures, i.e. don't accidentally loose anything - I tend to get distracted easily, so I usually don't let my scripts even try and overwrite previous output.
3. Latency is awful, think about not using Overleaf for LaTeX (this depends on what kind of workflow you need) as it's quite slow. And if you do use Overleaf try to integrate it into some git workflow, it doesn't have to complicated, but PhD's are not done in a week so don't even allow any risk of getting lost in your own work a year or two down the line.
4. If your work is in any way at risk (e.g. Is your thesis - literally and figuratively - reliant on some non-fungible data?), keep backups.
I also think it's probably very easy to overthink this. If we were talking about PhD "workflows" I would focus on working effectively with the people around you (and put your career in the right hands), and finding ways to incentivize yourself to do what you need to do on time (Reading your post you sound organized, so that might not be a problem).
https://en.wikipedia.org/wiki/Social_technology (In industry, engineering is very often the easy part compared to actually building healthy and productive companies)
*What's your
Work to understand that team and find ways to help it achieve its goals (among them will be success in your research).
It isn't so much about specific tooling as it is iterating to help the team find the right path forward.
Tools-wise: keep it simple, try to align with your group's existing tools, be flexible so you can iterate and adapt.
If you're already in contact with mentors/advisors at Columbia, ask them, not us! :).
Don't be afraid to change tack completely or give up on things. The most important thing I learned during my PhD (though too late) was how important disproving and discarding ideas quickly is. Repeatedly doing the simplest, quickest, easiest thing to disprove your current ideas can take you a long way. Persisting because you believe (without doubting and checking) is a recipe for wasted time and effort. This applies both to research and to systems for notes, citations, development, etc., and you shouldn't underestimate plain text files or even handwriting (even though paper can't be searched automatically, you can flick through and compare pages quickly, and can scan for backups and type up anything important). I wasted too much time trying to figure out and use technological ways of doing things. It's also often hard to drag collaborators into good technology practices.
I haven't continued in research, so take this with that grain of salt, but I don't think I'm saying anything inaccurate.
PS "you're" means "you are"; you want "your".
Yes, I think this is extremely important. Although I haven't experienced the "positive" of this yet, I've definitely experienced the opposite where I spent way too much time then I should on a problem that wasn't even that well defined in the first place. I suspect (because I've so far only experienced what doesn't work) that quick experimentation and iteration on your chosen idea and topic is very important. Otherwise you just keep digging a hole that gets harder and harder to get out of.
Not sure why your question is focus on tooling though, I doubt that would really be your biggest problem
"In 1939, a misunderstanding brought about surprising results. Near the beginning of a class, Professor Neyman wrote two problems on the blackboard. Dantzig arrived late and assumed that they were a homework assignment. According to Dantzig, they "seemed to be a little harder than usual", but a few days later he handed in completed solutions for both problems, still believing that they were an assignment that was overdue.[4][6] Six weeks later, an excited Neyman eagerly told him that the "homework" problems he had solved were two of the most famous unsolved problems in statistics.[2][4] He had prepared one of Dantzig's solutions for publication in a mathematical journal.[7] This story began to spread and was used as a motivational lesson demonstrating the power of positive thinking. Over time, Dantzig's name was removed, and facts were altered, but the basic story persisted in the form of an urban legend and as an introductory scene in the movie Good Will Hunting.[6]
Dantzig recalled in a 1986 interview in the College Mathematics Journal, "A year later, when I began to worry about a thesis topic, Neyman just shrugged and told me to wrap the two problems in a binder and he would accept them as my thesis."[8]"
https://en.wikipedia.org/wiki/George_Dantzig
[1] https://en.wikipedia.org/wiki/Alberto_Calder%C3%B3n
[2] https://translate.google.com/translate?sl=es&tl=en&u=http://...
I can imagine the struggles of the research. Does the thought "Damn! I should have chosen a different problem" cross your mind when researching (which leads to question #1)?
PS: I am just a graduate with no intention of doing PhD.
Basically I define schemas for types of data I want to handle (tasks (which you can view as kaban boards), papers I’ve read/want to read, ideas, meeting notes, documents) and then define them as notion databases. Extensively use tags to make things searchable, cross-reference, custom views (via linked databases).
My biggest piece of advice, that resulted in my biggest push of productivity, was a daily routine tailored to how your performance varies over the day.
For me
(1) sitting down and writing (anything: paper, thesis, proposal, blog) first thing in the morning, before emails. You want the habit of writing, and feeling weird if you don’t. This is my peak performance for the day, the hardest thing for me.
(2) celebrate your writing with a nice coffee and find a nice place on campus to study a paper. My 2nd most demanding task.
(3) Lunchbreak with colleagues. Socialize, discuss ideas but also just fun.
(4) My low point after lunch, I’ll try to have meetings here or do some routine stuff (forms, reimbursement, news, internet).
(5) Exploratory research, programming, planning, ideation, discussions, brainstorming.
(6) Exercise, sport.
(7) Later in the day my programming would come back strongest towards the evening.
(8) If you have family, go see them and have dinner with them. If not, I’d get another coffee and see how far I can go.
EDIT: (9) Write the todo list for the next day and open the document you want to work on the next morning. You don’t want to waste any brain cycles in the morning deciding what to work on.
Of course this is different for everyone, but matching your productivity to the task will make it a habit and much more effective.
Especially the part about daily writing.
It worked wonders for me until I realized my research subject is going to shit and that I science is not really my think.
Any manual step like "resize the figure window until the proportions look good", or "run script A, then run script B", or "upload this file to Overleaf" creates an opportunity for your results (figures and tables) to become out of sync with your source code. This can cause big problems.
I use Makefiles, Anaconda, and Github CI to accomplish this [1], but the techniques don't matter. The point is the end goal.
More broadly, in research it's always tempting to do things quick and dirty. Conference deadlines loom. Code bases are usually small and short-lived. But in my experience, your 4-months-later future self will appreciate tests, documentation, etc. just as much as your 4-years-later future self.
You can still be quick and dirty when it comes to project scope. This is where you get most of the speedup anyway. Go ahead write a function that doesn't handle edge cases, but add a comment about it!
[1] https://github.com/jpreiss/reproducible_papers
For lit reviews, I just do it in overleaf + bibtex. I wasted a lot of time with reference managers that I never seemed to use when I was actually writing my papers. When you read a paper you think you will need to cite, write two sentences describing the result and put a reference in an overleaf. That will serve as a great cognitive map when you're trying to find "that thing you read last year" but can't remember the names.
Best part of this is your toolchain is light and flexible (these days I just use git, vscode, conda, and overleaf), and you will have clean github repos to show off when you're looking for the next step post-PhD.
https://www.scholars.io
Use org-roam for a zettlekastem notes (that count to the 500 word limit)
And trying to use Literate programming (org-babel) to make your articles reproducible.
Use nixos in your personal computer so that you can control exactly what dependencies and libraries your papers need.
It isn't necessarily in the spirit of your post, but online kanban-like boards and zettelkasten notes are another option for those who aren't technically or have one or more coauthors.
http://dustintran.com/blog/a-research-to-engineering-workflo...
Use github (or any VCS) for your papers and thesis to keep actual track of changes.
github has great kanban boards that u can use (just make private repo and create a project inside it)