Adam An

Agile for Academia

September 29, 2024


I used to work a software engineering job in industry. There, we used a collection of practices loosely organized under the buzzwordy umbrella term Agile to manage and schedule our work. Here’s how I’ve adapted those for solo use as a PhD student.

The basic idea

You pick a short timeframe, you decide how much work you can do, and then you pick tasks that add up to that amount of work.

Two words:

Owing to these ideas’ origins in product management, tasks are supposed to be called stories. I think that’s awfully highfalutin’ and doesn’t always apply to academia, so I don’t use this term here.

The trick is that points are used to measure both sprints and tasks. Each sprint, I can do a certain number of points, so I do tasks that add up to that many points.

How much is a point?

Everyone has a different answer to this. My answer is adapted from how my team in industry did it.

The only point values tasks can have are the first few Fibonacci numbers: 1, 2, 3, 5, and 8. If I’m tempted to go bigger, I have to break it up into smaller tasks.

These numbers don’t align to any hard measure of time. Rather, points are relative to each other: a 2 is bigger than a 1, etc. They flexibly accommodate a variety of factors that affect how I work: If it’s hard and I’ll be fried for the rest of the day, if I’m unsure how long it’ll take, or if I just really don’t want to do it, I give it more points.

The way I currently point is, very roughly:

The reason that this wishy-washy approach works is because the number of points per sprint is also flexible. I observe how many points I naturally complete, which over time helps refine my points per sprint and per task.

Under my current system, I knock out 40-ish points in a Monday-to-Friday sprint. By contrast, on my team in industry, each person was expected to complete only 8 points in a two-week-long sprint. One academia point is obviously way smaller than one industry point. But my tasks in academia are also way different than the tasks in industry - that’s why flexibility is key.

How to do it

I use the free plan on Trello. This tool lets you create columns that you can move tasks between, which is perfect for this system.

To set up, I created three columns called “this week”, “in progress”, and “done”. Then, I created more columns called “backlogs”. I organize these backlogs by theme: classwork, readings, projects.

When I create tasks, I put them onto a backlog. When I write a task down, I give it a number of points, which I record in the title of the task in Trello. When it’s time to start a sprint, I commit to a number of points. Then, filling my sprint up is simple: I pick tasks off the backlog until they add up to the right number.

By rule, a task has to have points before I do it. An unpointed task means I still don’t understand what I’m committing to. If a task is very big, breaking it up into smaller, 8-points-or-less tasks can be a 1-point task itself.

Lastly, the night before a new sprint begins, I do a bit of cleanup: first, I clear everything in the “done” column. Then, I adjust the points of any leftover stories in the “in progress” column to reflect the work that remains on them. I reflect on my capacity for the next sprint and pick a new number to commit to. Then I pick more tasks from the backlogs, and the cycle begins again.

How I do it

At time of writing, I’m in a coursework-heavy first year of my PhD. As such, a majority of my points go to coursework and an RA-ship. It’s sometimes challenging to reserve time for my own research and learning.

To help with this, I have a Trello label called “self-inflicted”. When I plan a sprint, I start with the coursework, and then I fill in the remaining capacity with self-inflicted tasks. Some weeks give me more capacity than others for these, but this system helps me move things forward at least a little bit each week.

I often assign my self-inflicted tasks due dates, as well. It helps to turn a large task like “read a ton of papers” into, say, a one-paper-a-week reading plan using staggered due dates. (The only annoying part is that, if I need to postpone one, I have to postpone all the others.)

I put my non-academic chores and errands on here, as well. I’m so scatterbrained that if I’ve got to get an oil change, I’ll be thinking about it all week, so it draws from the same budget that the academic tasks do.

Lastly, I use a few Trello automations:

Flexibility

I diverge from what my industry team did in a few ways. Firstly, I leave a few “wiggle room” points for small time-sensitive tasks that pop up during the week. Whenever possible, I add things to the backlog for later sprints, but sometimes things just gotta get done. These tasks are way more frequent in academia than in industry. In industry, wiggle room points would have left bandwidth unused most of the time, but in academia, I need every single one of them.

Secondly, I’m not precious about exact numbers. If I want 40 and I end up with 39, big whoop. This was a bigger deal in industry. My team’s points were much larger than mine, so being off by one point was a more drastic under- or overcommitment. But also, the suits were tracking our points, as if a precise number could ever be a meaningful measurement. I think that’s futile. I allow myself the luxury of approximation.

Also, “insurance points” work well to account for uncertainty. If I don’t know how much work something is, I’ll give it extra points that reflect a worst-case scenario. If I overbudgeted, then I use the extra bandwidth by bringing more tasks into the sprint on the fly… or by relaxing!

Why I like it

You face smaller amounts of work. If I think too hard about how much work a PhD is, I’ll start panicking. Committing to a reasonable weeklong chunk of work lets me focus on what’s right in front of me with confidence that long-term things can stay long-term.

You get to see your work move across the columns. It feels good to complete things. Dragging a single task to a new column gives you something nice every day, and watching a sprint’s worth of tasks collect in the “done” column gives you things to celebrate as you move through time. If you put the party popper emoji 🎉 in the title of your column, Trello even gives you a confetti animation when you move something there.

You can easily balance multiple things. This system helps distribute bandwidth across different streams of work. If you’ve got one backlog per project, you pull from each backlog to make sure everything gets some love.

Things chill on the backlog till the time is right. Remembering all those “I’ll do this eventually” tasks is overwhelming. The backlogs give me reassurance: I can forget about things and know they won’t slip through the cracks before their day actually comes. Specifically in academia, I love to transfer a semester’s worth of assignments onto the backlog at a time.

The 1-point minimum accounts for planning and context-switching. Sometimes it feels silly to make a thirty-second “click this button” task worth a whole point. However, one point is never just the work of the task itself. You need to remember the task, write it down, prioritize it and put it in a sprint, stop whatever you were doing last, and wrap up and figure out what you’re doing next. Because of this “context switching”, one point plus one point is greater than two points. Forcing even the smallest tasks to take a minimum chunk of your sprint’s capacity elegantly accounts for that extra work.

If bandwidth needs to shift on the fly, you can more precisely reprioritize. Even with my “wiggle room” points, sometimes I get slammed with a big task in the middle of a week. The point values help you decide what you have room for. If you suddenly need to take on three more points of work, you can find three points to move out of your sprint and rest assured that your total load remains about the same.

Dedications

AL, BM, CD, DW, JH, JR, KK, LK, LP, LS, RJ, SM: I wouldn’t be doing this without you - thanks for everything.