Recently I talked a little bit about FreeMind (ok, maybe not as much as I wanted, but at least I mentioned it a few times). While I use it for sampler concepts and overview ideas instead of painting everything on paper and erasing it like 20 times until is is completely unreadable, I find it still to hard to add new nodes (hotkey: Insert) or to edit them (hotkey: F2).
For example my TODO list usually contains 5-20 entries per day and I have it open in Visual Studio side by side with my code and try to complete the tasks I give myself in addition to more general tasks from OnTime and fixing bugs if I have to (do not really like that part, code should just work, but sometimes there is not enough time to ensure that with unit tests). Anyway, having this TODO list outside Visual Studio is not a good idea for me, I tried many different TODO list programs, from websites to sidebars like Google Desktop or Vista Widgets, standalone programs like TODOList, etc. After a short while I went back to my messy TODO lists, for Arena Wars in 2004 I had a big TODO list with about 100k lines because I threw everything in there I was every thinking of for a few years. In later projects I just created a TOOD list for each project and it got less messy, but it was still hard to go through it after a while. I also had to refactor the lists a few times when things changed, which was especially painful if it was already too big to manage easily.
I tried using FreeMind or similar tools in the past, but importing the .txt files did not work out (mostly because older TODO list had not much of a tree structure) and getting it back to a useful .txt file was not possible. I also used my TODO list for dumping ideas, which was not a good idea because it got much harder to find actual work items between all the crazy ideas.
Now I use a strict ruleset for my TODO lists and they are like XML tree based and I only allow one entry per line (thats what word wrapping is for if lines get big). Now my TODO lists also are structured a lot more like a schedule for the project I'm working on. I still add TODO lists entrys at the bottom, but they get moved around if they can't be done in a day or week. It is important to notice that I never plan more than 1 week in advance for specific tasks. Each Monday I take the week plan, which is an overall idea what should be done this week and split it up into days and work tasks. It is also very agile and I change the overall direction a lot, which is exactly what my company requires ^^
Let's take a quick look at a simple example (by the way, very realistic for the kind of TODO lists I create every day):
TODO: Project "Taking over the world"
TODO: Week 1 2007-05-21: Build world formula
OK: Monday: Hire mad scientists
OK: Install tools and instruct everyone.
OK: Setup team in bunker for all the operations!
TODO: Tuesday: Kill some people, just make sure everyone takes you seriously from the beginning!
TODO: Wednesday: Still not serious? Hire Jack Bauer or someone similar
TODO: You also need programmers, without them your project is lost.
TODO: Buy some more mad tools, outsourcing is good thing, even for evil people
TODO: Thursday: Get everyone together, make a big evil plan.
TODO: Make sure everyone is on board.
TODO: Kill everyone else!
TODO: Friday: The weekend is probably not the best time to take the world over, wait for next week
TODO: While you are at it, try developing the world formula, which was the task for this week!
TODO: Beat some people up, make sure you are still taken seriously!
TODO: week 2: 2007-05-28: Time to take over the world
TODO: week 3: 2007-06-04: Make sure no enemies survive
TODO: week 4: 2007-06-11: Wait for everyone to accept you as their leader
TODO: week 134: 2009-12-20: Keep on waiting ...
Now we can take that bunch of genius material and just copy+paste it into an empty FreeMind project (make sure it is FreeMind 0.8, in 0.9 beta copy+paste does not work the same way yet), which will result in the following picture (I just dragged over all nodes to the right side, I like that much better. I also scaled it down, click on it for the full version):
Well, its cool and easy to use and best of all: I still can use my lovely good old TODO lists as .txt files, exporting back after resorting and rearranging the items in FreeMind is also easy, just press Ctrl+A to select everything (or just select a parent node) and copy it into your clipboard, then in NotePad, UltraEdit or Visual Studio paste it in again. Sometimes it also copies some other strange FreeMind data, but that can easily be removed and your TODO list is up to date. I also print out the TODO list each week for my colleages to let them see what I'm working on and what evil things I have planed for them :)