TL;DR: I frame time management maturity around a set of questions. I talk about how some systems fail to answer these questions, and why am optimistic that I can answer them with a project managment software called TaskJuggler.


Background

I like being involved in multiple projects. But this has some downsides. New opportunities appear often, and I sometimes find it difficult to say no. This leads to overcommitment, and overcommitment can lead to poor results.

I have been aware of this problem for a while. I’ve also been aware of the kind of solution I would want. To answer questions about whether I can allocate resources (my time) to a particular project, I would like to be able to keep track of how my time is already allocated, to see where the new project might fit in. I’d like to be able to test what happens to my schedule if I accept an incoming project.

The way that I used to attempt this was based on a task tracker + a calendar. For a while I used Sunsama, which integrates both of these features. I’ve also done this using e.g. Todoist and Google Calendar, keeping the time allocations in sync by hand. No matter the software, this approach runs into problems.

This boils down to the fact that a calendar only tracks a single (projected) state of reality, and rendering that projection is done by hand. To answer questions about if/when I can take on some new project, I need to be able to consider multiple scenarios. Each of these scenarios requires its own scheduling run. With the calendar system, my options are working the scenarios by hand, or eyeballing the calendar and estimating the scenarios in my head. The manual calculation approach is time-consuming, and it’s subject to Programmer’s Distaste. The eyeballing approach doesn’t work for me, since it’s too easy to be overly optimistic.

I caught the Emacs bug about a year ago, and I’ve gotten comfortable using Org for task management. I have been looking for a solution for automating scheduling my tasks, and even spent some time prototyping my own solution. I think I was looking in the wrong vein — the functionality that I want is really project management, rather than task management.

I recently found that Org can export to TaskJuggler, an open source project management software. I’m exploring TaskJuggler as a way to manage my own time allocation, and so far it’s checking a lot of boxes.

The rest of this document is about questions. It feels natural for me to view my time allocation as an analytical problem. Analytical maturity models (usually applied to businesses) place emphasis on the kinds of questions that businesses can answer. Likewise, it seems natural that my own “maturity” about time allocation depends (partly) on what kinds of questions I can answer.

Questions for Time Management

Here are some questions that I think I need to be able to answer, and how I can answer them in TaskJuggler. If I can answer (at least) these questions, then I can consider my time and project management capabilities to be “mature”.

What do I have to do?

  • Trivial in any task management software/to-do list app

When am I planning to do X?

  • Trivial in any calendar

How long will it take me to do X once started?

  • Trivial in most task management software/to-do list app

Do I have time for X?

  • I can answer this question using a resource report, once projected time on all committed projects is already in the report. I have time for X if the estimate for X fits with the available time in the appropriate resource area for X.
    • Requirement: all committed tasks need to be estimated and scheduled
      • This requires that I can find tasks that are not estimated and scheduled quickly and reliably.
      • Enabler: linting my org file for tasks that are not estimated and scheduled.

When can I do X?

  • This question has two varieties: When can I do X if I keep existing time allocations the same? When can I do X if I shuffle my work around?
  • Keeping time allocations the same:
    • I can answer this by looking at the resource graph and seeing when I have availability for X. No need to rerun the scheduler — without moving anything, this should be the first available time for X.
  • Moving time allocations
    • I can answer this by estimating task X and rerunning the scheduler. The scheduler will move things around depending on the relative priority between task X and other tasks, as well as other constraints.

If I agree to do Task X by date Y, how are the rest of my projects impacted?

  • The impact to the rest of my projects is one factor in my willingness to agree to take on any particular work. I can answer this question by estimating Task X, fixing its end date, and running the scheduler. I could also answer a relaxed version of this question: “If I agree to put Task X at priority Y, how are the rest of my projects impacted?“. I can do this by setting priority levels for X and running the scheduler.
  • This kind of question also requires an ability to diff between different planning results, or diff between scenarios within a planning result.

When will X be done?

  • The gantt chart provides a calculation for the end date of each task, based on the scheduling results. Currently I’m only tracking task initial effort estimates. Taskjuggler has features for projections based on completion status and/or based on logged work hours, and running multiple scenarios. These could probably give a better estimate of when X will be done.

Is X on track?

  • ”On track” is a question about correspondence between plans and reality. A project or task is on track if it is expected to be completed at the planned completion date.
    • Without recording completion, this estimation happens in my head. I can look at the chart and see if it seems reasonable that the scheduled end date is the actual end date.
    • Enhancement: Learn how to use TaskJuggler completions