One of the great things about using to-do lists is that it lets you separate planning from doing. You make a list of what stuff needs to be done and when it's due, and then you turn that part of your brain off. Tomorrow you look at the part of the list you labeled “TOMORROW,” and you just do those things. As long as you make time often enough to turn your Planning Brain back on and make a new list, you're mostly golden.
The thing about computers, though, is that they should be able to automate your planning (and therefore doing) in a way that makes things even easier for you; computers are good at automation—which is why it's so disappointing that most to-do apps are just digital equivalents of pencil and paper, maybe with notifications to remind you as the value-add. I have pencils and paper, and the lists I make with them at least have the benefit that I can give them to someone else if I need to, which I'm probably not going to do with my phone or laptop.
Here's a list of ideas to-do apps could do to help out planning, but mostly don't. They're in no particular order, and I've tried to give some reasonable examples of each.
Make tasks depend on other tasks. Don't even show me tasks whose dependencies haven't been met. For instance, don't show my “Dry laundry” at least until I've marked “Wash laundry” done.
You could even make a configurable delay, so that “Dry laundry” wouldn't show up until 30 minutes or so after “Wash laundry” was done, i.e., right about when the washer would be finished.
I'm not talking project management here, just some obvious clutter removal.
Smarter Repeating Tasks
Some to-do apps don't even allow repeating tasks at all! But most of those which do could stand to be smarter about it. Repeating tasks fall into four groups:
- The task really has to be done as many times as it repeats for. If I skip paying my mortgage in January, I can't just pay for February and be done: I really have to pay it twice.
- One time doing a task makes up for previous times. If I don't bother to get the mail today, I don't have to check it twice tomorrow; I just get the old mail and the new mail.
- The task should be done some period after the last time it was completed. Haircuts, health checkups, oil changes, change your contacts, whatever.
- The task should be done on the next available day. My garbage gets picked up Mondays and Thursdays, so my “Take the garbage to the curb” task should recur on the next available day. You can kinda fake ones like this by having multiple tasks on weekly occurrences.
Apps should allow for all these use cases.
The only thing I'm aware of that gets this pretty right is Org Mode, but Org is less a to-do list and more an information organizer—and you have to know Emacs to begin with.
Automatic Task Disposal
Some tasks if left undone, it makes no sense either to keep them or to mark them overdue. If I don't get around to taking the garbage out Monday, don't show me an overdue task on Tuesday—I literally can't do anything about it! Just delete it or mark it Not Done or whatever status sounds right, and remove it from view.
TickTick allows tasks to be removed as “Not Done,” but as far as I can tell it's purely manual.
Say there's a task I want to get to today if I can, but it's not actually due until next week—maybe a report my boss asked for. Show it as due “Today”; if I don't get to it to today, tomorrow again show it as due “Today.” Don't show it as overdue until it's actually overdue.
Similar to the above, but slightly distinct, allow for tasks that are simply always due “Today.” Some apps do have some similar functionality, but call it “Habits” or something like that (TickTick again, and some specialized habit apps). I personally don't have trouble drinking enough water, but judging by the number of apps available for that alone, some people do.
Most apps allow you to sort tasks by priority, but they generally only let you select High, Normal (or Medium), and Low. Keep these groupings, but within each group allow an optional numeric score for ranking when tasks are listed by priority (most people work from the top down).
This probably isn't useful for most people, as such, but could be for someone with a very large list of tasks. Mostly I mention it because of the next item.
Say on Monday you add a Normal priority task with a due date two weeks in the future, so it gets a Granular Priority of 1.0. On Monday of next week, the GP goes to 1.1, Tuesday to 1.2, and so forth. Maybe on Thursday you pop it from Normal to High, too. Most people work from the top down of a list, so the closer something is to the top, the more likely it is to be accomplished.
My iPhone knows when I get in the car because Bluetooth. Allow me to set a notification like “Remind me to do X when I'm out and about” triggered by that.
Or a shopping list that hides all its items until GPS shows I'm actually at the store. Again, reducing clutter.
Allow for Multiple Modes
Having a smartphone app is great. Having apps for major desktop platforms is even better. But making the app just available on the web is a winner. Everything has a web browser.
Needless to say, these should all sync with no fuss.
Sometimes one person has to manage other people's tasks: parents making lists for their children, roommates sharing out chores, whatever. There are lots of ways this could work, but here's what I see as ideal:
- Every person has an account. They can add their own tasks to their account.
- Anyone can create a shared list with anybody else with an account. The person who creates it owns the shared list.
- Tasks on a shared list may either be unassigned or assigned to one or more list members.
- In general, anyone on a shared list can mark that a task is done.
- Shared lists can optionally be locked down so that only the list owner or designated list members can add tasks, or must approve a task being marked Done.
- Anyone on the shared list can signup for a notification that a particular task is done regardless of whose task it is.
- For repeating tasks on a shared list, allow randomized (or weighted, the way Chorebuster does it) automatic assignment, optionally excluding some list members.
Don't Assume I'm Only Going to Use Your App
TL;DR, let me print things!
And no, the browser's “print this webpage” capability is not sufficient. Take the data and turn it into a nice PDF that actually looks like a to-do list. Have reasonable defaults, but let me specify a subset of tasks with a filter, let me specify a paper size; if it's out of a native app, let me specify a font if I want.
If I'm printing a shared list, let me print both tasks on individual pages by assigned person and a page with the full list. Let me do this at the same time; don't make me print one, go toggle options, and then print the other.
Automatically add a task for “Go to the app and mark these done” at the bottom of any printed list (but not in the app itself, that would be redundant).
At the very base level, give me a way to add tasks automatically. TickTick lets you send email to a special email address; I think I vaguely recall that Remember the Milk does too, or at least did.
Better yet, have an API.
Probably nobody's going to write a to-do app that satisfies me. But at least now I can tell them why I don't like theirs.