Jed Irvine was a Senior Faculty Research Assistant I in Oregon State University's School of EECS. He worked with the Machine Learning group from 2004 until the beginning of 2024. Throughout this time, Jed informally mentored many students, and in 2018 started a coaching practice specifically for grad students where he would meet 1-on-1 with those who needed help with any non-technical issue that was undermining their success.This toolkit is his final contribution to OSU before retiring, capturing many of the best practices he noted along the way. (See the bottom of the page for more details on Jed's work at OSU.)
The toolkit contains over 30 videos (5-20 mins each), organized into eight series plus some documents and supporting information. Also included are the 28 episodes of the podcast Jed created during COVID lockdown to share insights with a wider audience of grad students.
The first two series are not specific to any course of study, covering things that likely apply to all grad students, no matter what discipline they are working in. These focus on how to prevent or minimize various obstacles to your success from popping up and slowing you down. Even if you're already years into your PhD, you will likely get value from these - ways to improve things for the rest of your journey.
The Grad Student / Advisor Dynamic
During my time as a faculty research assistant, I helped out on numerous research projects where grad students and advisors collaborated. This gave me an excellent vantage point to see when things went well and to see when challenges arose. In this series, I talk through the various dynamics that play out in these collaborations that can set the stage for success or problems arising. The ideas covered in video 2 are covered in more depth in the linked podcast episode.
Video 1: The Grad Student and Their Advisor - The Big Picture
Video 2: The Grad Student as Employee or Entrepreneur ...covered in more detail in Podcast ep. 3 Employee vs Entrepreneur
Video 3: Collaboration Bandwidth
In my time as a Faculty Research Assistant, I found that issues arising for students could be put into two categories. Issues that arose from within the student such as reluctance to ask particular questions, anxiety about an upcoming meeting, and procrastination, I came to refer to as "drag" -- a kind of internal friction that slows the student down. Issues that arose from outside the student I came to refer to as "headwind."
Many forms of headwind can arise when the student and their advisor suffer from communication issues or drift apart in their understanding of what should be happening in the collaboration. This series has many tips for how to get in sync, and how to stay in sync.
Some of the videos below are covered, sometimes in more depth, in the linked to podcast episode.
- Video 1: Expectation Management ...covered more colorfully in Podcast ep. 4 Expectation Management
- Video 2: Expectation Dashboard Part 1 and the referenced Dashboard document
- Video 3: Expectation Dashboard Part 2
- Video 4: Expectation Dashboard Part 3
- Video 5: Unmet Expectations
- Video 6: A Structured Status Update and the referenced Format and Status Update Template
- Video 7: Beware the Abstraction Gap ...covered in more depth in Podcast ep. 18 The Abstraction Gap
Software Development
The remaining videos are focused on software development in a research environment. NOTE: The amount of software development experience that grad students possess when they start out varies greatly. The videos each address some knowledge gap that certain students had, so some of the content may seem basic to those more experienced.
This series covers some basics about GitHub and containers, and some tips about some other tools that may save you time.
- Video 1: Git and Github
- Video 2: Apptainer Containers
- Video 3: Miscellaneous "Good to Know" Things
This series puts some context around the following question: "How much time and effort should I invest in code quality in the research context?"
Video 1: Rapid Prototyping vs Maintainability
Video 2: Maintainability vs Time Invested
Video 3: Testing Research Software
Each video in this series touches on issues Jed has seen in grad students' code that made it difficult to understand and modify.
If you have lots of experience coding in teams, you may already know much or all of what is covered in these videos. Also, you may find some assertions I make that you disagree with or know of techniques you understand to be better. What I present here is what I found to work best, given my experience and preferences.
The software development landscape is so vast, that if any one person managed, by some miracle, to "know it all", it would only be for a moment, because everything changes so quickly. The less ego investment one has about what they know, the freer they are to update that knowledge with different ideas. Consider this my attempt at a lofty nudge to get experienced developers to watch these videos, just in case there is a useful tidbit to be had.
- Video 1: Functions Should Do One Thing
- Video 2: Naming Functions
- Video 3: Preserving Context When Naming Variables
- Video 4: Naming Variables Without Making the Code Harder To Read
- Video 5: Variable Naming Examples
- Video 6: Naming Variables When Handling Files, Filenames, and Pathnames
This series showcases a number of design approaches that can reduce your stress by simplifying your workflow or investing small amounts of time up front to save lots of time down the road, expecially around deadlines when time is short.
- Video 1: Simplicity vs Efficiency
- Video 2: The Spec File Pattern
- Video 3: Easy Safe Modification with Constants
- Video 4: Hiding Complexity to Reduce Cognitive Load
- Video 5: Some Thoughts On Logging
Another pass at stress reduction, this series shares a number of things to think about when you are writing tools to help you with your workflow.
- Video 1: Simple Complexity Wrappers
- Video 2: Designing For Reuse
- Video 3: Enabling Grand Gestures
- Video 4: Having Fewer Scripts
- Video 5: The Q and A Wrapper
The single video in this series offers a technique to keep the writing process organized by using a phased approach. Each phase adds a particular aspect of the story, with the benefit that each sentence lands automatically in the proper place. This reduces the amount of wondering about "where should we include this bit?"
I came up with this technique near the end of my time as a Faculty Research Assistant, so never had the opportunity to pitch its use, but the technique was inspired by my prior experience helping out on papers and seeing various challenges unfold. In the video, I demonstrate the technique on a pretend research paper I cooked up.
It may be that some professors already use a flavor of this process, or have committed to other approaches. My recommendation is to run it by your advisor to see what they think.
The technique can be applied to other writing contexts as well, and I've found it helpful on some non-technical personal writing projects.
IMPORTANT NOTE! I realized that I omitted one key point in the video. Read the NOTE below after watching it.
- Video 1: Storytelling In Technical Writing (Here's the link to the workflowy.com document shown in the video.)
NOTE: There are 5 phases described:
- 7 Second Story
- Rival Researcher Story
- Fascinated Friend Story (concepts named)
- Expert Overview Story (concepts explained)
- Convincing Reviewer Story (analyze & compare)
Once everything is fleshed out, the sentences written during the first two phases are thrown away. Transposing the sentences from the final 3 phases into your paper editor is what gives you the content of the paper. This should be intuitively obvious, but I neglected to state this in the video.
As a Senior Faculty Research Assistant I, Jed worked on a wide range of research projects, with 75 students and a number of professors:
- TaskTracer/CALO (Tom Dietterich, Jon Herlocker)
- UIL User Initiated Learning (Tom Dietterich, Alan Fern, Prasad Tadepalli)
- Bootstrap Learning (Tom Dietterich)
- Bioacoustics (Xiaoli Fern, Raviv Raich)
- MACHINE READING (Tom Dietterich, Prasad Tadepalli, Xiaoli Fern)
- DEFT (Tom Dietterich, Prasad Tadepalli, Xiaoli Fern)
- MLFeedback (Tom Dietterich)
- Stratagus HIL (Alan Fern)
- Birdcast (Tom Dietterich)
- Avatol (Tom Dietterich, Sinisa Todorovic)
- ADAMS (Tom Dietterich, Weng-Keen Wong)
- EXACT Explainable AI (Alan Fern, Margaret Burnett)
- Machine Common Sense (Alan Fern)