I just started keeping logs of what I did every day. I keep it in a personal cvs repository, and whenever The Boss asks, “What have you been up to lately?” or anything of the sort, I whip it out and show it to him. I take printouts to meetings. Pretty soon after I started, other people saw that it really helped, and a few other people started doing it.I have found success along similar lines with VimOutliner. I tend to context-switch rapidly as various things get blocked on various other things, whether it be as simple as a long-running computation or more social problems like needing to get a consensus during an upcoming meeting, so I have top-level bullets that are each of my projects, sorted by priority. Beneath each of these I have a list of what needs to be done to move them forward.
I also have a cronjob generate an HTML version of it that I publish to my intranet website, but I’m not sure that’s actually useful. (But if you do end up using this I’d be happy to send you the code.)
VimOutliner helps by coloring different indentation levels differently and doing outliner-style folding. It also adds some keystrokes. One is simply “append current date to this element”, which I add on bullets like “get so-and-so to do [x]”-style of projects as a reminder to myself to nag them if enough days elapse. Another is “add checkbox” along with “check off checkbox”, which also checks off parent tasks whenever all of the subtasks are complete.
It’s really easy for me to get distracted (by, say, posting to LiveJournal!) so it’s good for me to have a simple list: what do I do now? Just take the top unchecked item off the list and do that.
(PS: I found this after being inspired by mattm doing a similar thing in emacs.)