One of the hardest things from switching from software engineering to research has been the open-ended nature of research and measuring progress. For me, software engineering usually has more explicit objectives, and it’s easy to make a plan to get from 0 to 100. This post will share some tools I’ve been using to help me “do research” and explore potential research project ideas.
I’ve been trying to write down as many of my thoughts as possible. As a software engineer, it was rare to have a day where I was not writing code. As a researcher, it’s common to have days where you’re consuming papers and thinking. It’s easy to think you haven’t done much all day when you don’t have any output of your work. I’ve found that writing helps me solidify my learnings while clarifying any ideas and questions. Since my notes are just for me, I’ve been writing down all and any thoughts I have as I’ve been brainstorming and learning. I’ve been using Obsidian, which is a notetaking editor similar to Roam. Things I like about Obsidian is that it’s all local, and I can write notes on my other devices as well. It’s effortless to find mentions of an idea by using backlinks. Obsidian has helped to add structure to my day as I’ve created a daily note template and added a set of morning questions to help focus my day and a set of evening questions to reflect on what I’ve worked on. It’s easy to lose momentum in research, so I’ve been trying to have an exact next to-do item for each day, so I have something to work on.
I’ve been trying to read as many papers as I can to get exposed to new ideas. As someone new to research, it’s easier to find inspiration from other work. Many papers discuss potential future directions from their results, and that’s been an excellent source for my own project brainstorming. Another great reason to read papers is that it’ll give you a better idea of how researchers think about things. Being able to (quickly) evaluate work critically seems to be an essential skill as a researcher. Two features have been necessary for me regarding papers - searching through papers and taking notes. I’ve used Zotero to keep track of papers I’ve read/skimmed, but since using Obsidian, I’ve used Obsidian to keep track of my papers. I’ll copy the title, abstract, and link to the paper, so it’s easy to search. I’ve been using MarginNote for taking notes for papers. Some excellent features it has are that you can import websites to markup and create flashcards. They have many other exciting features, such as mindmaps, which I haven’t used as much.
As I’ve been learning new concepts, I’ve been heavily relying on Anki, which uses space repetition to augment your memory and learning. It’s easy to export cards directly into Anki from MarginNote. I’ll try to spend at least 15 minutes every day going through my notecards. There are many different ways to organize your Anki cards. I don’t have any strong suggestions for how you should use Anki, but I recommend making your cards instead of downloading other people’s decks. Writing learnings in my own words help me to solidify new facts. With spaced repetition, it’s become easier and less intimidating to learn important key concepts at a high volume.
Using all of these tools have been useful in validating potential research ideas. It’s easy to track new ideas and expand upon them. During project exploration, I’ve consumed a lot of information. Finding tools to process and efficiently learn the new information has made this exploration phase less hectic and added more structure.
I’ve also found these reads useful for how to think about your research: http://joschu.net/blog/opinionated-guide-ml-research.html https://web.mit.edu/tslvr/www/lessons_two_years.html
Let me know if there are any tools you’d recommend for research!