The Hunt for the Project List - Part 3 [GTD Wannabe]
Some time ago, I discovered that I didn’t really have a projects list. So, I decided to do something about it. I did some searching to see what other people did with their projects lists, and then came up with my own solution. Basically, I kept a “list” in MindManager, divided by kind of project. Then, in the weekly review, I would make sure that every project had an NA, and every NA had a project. Or something like that. I also included EverNote, as that’s where my project support materials live.
Well, that kind of manual checking, editing, tweaking, changing, etc. lasted for exactly two weekly reviews. No go. Manually checking to make sure that every project has an NA - ugh. And for every project NA in my todo.txt file, make sure that there’s a project in the mind map, and in EN? Double ugh. There had to be a better way to do it.
Unfortunately, in my searches, I haven’t found many programs that would let me do my NAs the way I want, and keep track of my projects, the way I want. I think that something like Tracks would come closest, but even then, there are things missing, for me. What to do? Well, I’m obviously loath to give up my Perl/DOS todo.txt scripting goodness, so was there a way to make this system work with projects?
Turns out that there was. It took a few hours of coding, spread out over a few weeks, but I now have a project list management system that I’m really pleased with. It works beautifully in the weekly reviews, which is when I need it most.
Background
I keep my next actions in a text file, called todo.txt. Some of these next actions have projects assigned to them, e.g., [Blog] Blog about blah…, where [Blog] is the project name. Some of the requirements that I had for a project list management system were the following:
- It had to be easy to add and delete projects from the list.
- It had to allow me to have different types of projects, e.g., “now”, “later”, “deferred”, “waiting”, “someday”, and “recurring”.
- It had to allow me to easily move a project from one category to another.
- It had to link with my next actions, automatically. Specifically, I wanted to be able to retrieve the following information easily:
- Which of my “now” projects didn’t have any NAs assigned?
- Were my “waiting” projects really still waiting?
- What were the NAs for a specific project?
- A list of all projects, divided by category.
- A list of all projects that had absolutely no NAs assigned?
- Similarly, a list of NAs in my todo.txt that had projects, but the projects were missing from the project list.
- For “deferred” or “waiting” projects, I wanted to know what the trigger was, i.e., why was a project deferred (basically - unstartable) or what was I waiting for. I had to be able to add or change these triggers easily.
- I had to enjoy using it. I wanted to be able to do all of these things from the command line, with pretty output, and without having to go into the actual text file with an editor.
The System
All I did, basically, was create a new text file, called projects.txt. Each line in this file is a project. Each line looks something like this:
[#Reading] now
where the term in square brackets is the project name (no spaces please) and the next term is the type of project. I also have more complicated lines, such as:
[Aeroplan] deferred trigger(next statement)
where the trigger() just tells me what’s causing the project to be in deferred or waiting mode. Note that I use deferred for projects that I don’t want to start yet, or that need a particular occurrence to happen first. I use waiting for projects for which I’m actually waiting for input from someone else.
After creating the text file, I just started messing with my todo.pl Perl script, adding in subroutines to deal with the projects.txt file. Simple things like adding a new project, or even changing the type of a project were pretty easy. It got more complicated when I got into things like outputting a certain type of project, along with a count of the different kinds of next actions (e.g., doable now, not startable yet, waiting for, etc.) I really enjoyed coding all this functionality, more than I enjoyed the initial coding that gave me the todo.pl in the first place. Part of the fun was discovering Perl’s printf statement, which can be used to output text in columnar fashion - very cool, and you’ll see how I put this new knowledge to good use.
ScreenShots
Now to show you what my new baby can do!
Projects Command
The “projects” command shows me all of my projects, divided by type. I used the printf statement to get the columns so nice. I did have to set it up so that longer project names are truncated, but that’s okay - it was more important to see everything in one row. The purpose of the Unknown column is to simply keep track of any project in my list that hasn’t been assigned a proper type. I’ve also got counts of how many projects of each type.
Showall Command
The “showall” command shows me all of the projects, of a particular type, with counts of the different kinds of next actions for each project. An NA is considered a “now” if it is doable right now. It is a “wait” if its context is @waiting. It is a “defer” if it can’t be started before a certain date, some time in the future. Finally, it is a “someday” if it’s been marked @someday. The purpose of this output is to show me, at a glance, that all of my “now” projects have a “now” next action, i.e., each project has something that I can do, right now, to move it along. All I have to do is look for zeroes in the “now” column.
Show Command
Sometimes I want more detail for a specific project. The “show” command does just that for me. First it shows me a count of each kind of NA for that project, then it lists out the next actions in all their detail. You’ll notice a bit of a goof here though - my “defer” count is 1, even though two of my NAs are actually startable. Obviously I have a tiny logic error somewhere. It’s not major, but I’ll make a note to fix that bad boy later.
Review Command
The purpose of the “review” command is to compare the projects that I have in my official projects list, with those that are read off the next actions in my todo.txt file. It’s possible for me to add a next action, with a project assigned, but to not have that project in the official list. This often when I start off on a new tangent. It’s also possible, actually highly likely, to have projects in my official list, that don’t have any next actions assigned. For example, I might have something like “Learn to Fly” as a @someday/maybe project, but there’s not going to be anything in the NA list for it. Similarly, I have certain projects, that keep coming back over and over, but they don’t always have next actions currently. One example might be something like TweakComputer or Backup.
So, here I can see which projects are in one list, but not the other. The goal is two-fold: (1) there should be nothing listed in the left column; (2) there should be no “now” projects listed in the right column.
Conclusion
I’m not going to release another general purpose exe file, like I did the first time around. I don’t think there’s any demand for it. Instead, anyone with Perl chops can email me, and I’ll send you my script. You can take what you like from it. For the rest of you, I just wanted to show you what I think a good project list management system could look like. If there are any tools (on- or off-line) that can do this kind of thing, while also keeping track of next actions, contexts, deadlines, etc., please let me know in the comments. Maybe there’s more out there to play with
Original post here: GTD Wannabe



Comments: