In Part 1 of this series I explained my need for better time and goal management software, and my rationale for creating that app rather than using one or more off-the-shelf products.
Now it's time to start sketching out a few requirements:
- Enter goals
- Enter tasks
- Assign tasks to goals (tasks to goals is a many to many relationship)
- Easily track time allocated to tasks
- Pop up a reminder when the computer has been idle, asking what to do with apparently unallocated time
- When switching to a new task, immediately stop tracking time on any previous task
- Allow for categorization of tasks
- Add tasks without allocating them to a category or a goal - a way to jot down notes and figure out what to do with them later
- Report on a day or week or any arbitrary block of time and see
- How much time was spent per category
- How much time was spent per goal
- How much time was spent per task
- Pre-allocate blocks of time in a day for certain tasks/categories and have the app remind me when it's time to switch
- Have templates for pre-allocated blocks so I don't have to enter them each time
- Add appointments/events to a calendar
- When appointments/events come up, have the option to defer or reschedule
- Mark appointments/events as completed
- Show a running tally of time used compared to time as planned
- When creating a new task, look for older tasks that may be a match just in case I've already been there and have forgotten
- Be able to assign values for importance and urgency (a long time ago I wrote a "four quadrant" todo list manager based on Stephen Covey's technique, and I still have a fondness for that approach)
That's a start. I'm a little fuzzy on how I want to handle categorizing of tasks. OfficeTime uses projects and categories, neither of which is dependent on the other. That's okay, but I've found it a bit clunky as changing tasks usually involves changing projects and changing categories. I almost think I want to be more task-centric - when I set up a task I assign whatever categories I need to assign, and then I switch between tasks (somehow) with a single click. Whatever UI I use for displaying the tasks should show the most recently-performed tasks first.