To do lists are hard, as one can tell from the hundreds upon hundreds that exist out in the interwebs today. And for the most part, they all tend to do the same thing. And that is they keep a list of text items in a list-based format, and then allow you to set different statuses upon them, such as completed, important, and pending.
But is that a usable use case?. Is it what one requires in a to do list, if you will. Just recently, I found myself working on a to do list application that would change the world for programmers. It'll do this, and that, and it will do it super fast. Etc. The usual coding ideas that float around. And at first it was good. It was fast and efficient and it didn't take too many clicks to accomplish something.
And soon after the usual problem that happens with all to do lists, happened to this one. And now all that is left is a list of items that have nowhere to go and an overseer of said items that doesn't know which ones to let go.
The underlying problem
To do lists are designed to eat tasks and to keep them there until some unforeseeable moment. However, work, does not follow that flow. We don't receive tasks, and then it ends there. We receive tasks, over and over and over again. Here is a more common scenario.
1. Think of a task
2. Jot down said task
3. Jot down 2 or 3 more tasks
4. Finish a task not on the list
5. Forget about the task on the list
Do this enough times, and you end up with a hundred items, which may or may not be of importance. And like that, your to do list becomes a to-don't list. It's a great measure of how much you haven't completed this week, which is sort of a productivity tool, but not the one that we initially had in mind. But hope is not lost just yet.
If we're to do fix this problem, we need to try something new. Take bold steps and such. The mentality of "Doing the same thing over and over and expecting a different outcome" won't fly anymore. So here are a few possible solutions to this issue.
Only allow 'n' number of items
Controlling the flow of data is important if one cannot handle the current throughput. If you want to add more, then go finish a task. Then based on the rate at which your are completing tasks, you will be able to add more. It's a bit more involved than simply just adding an item or two, but sometimes slightly forcing the hand is needed.
Warn about deletions
Let's be honest, if an item is in your to do list for 56 days, more than likely, you're not going to touch it ever again in its life. But you won't know that fact, because it is buried among 120 other items of equal or lesser importance. So let's get rid of those items. With a friendly warning ahead of time, so that people won't get too confused as to where their tasks are going.
Some visual cues sometimes get the idea across more effectively. Moving an item downward on a list, or making it more opaque as the time progresses might give the user a good indication that they either need to finish that item, or just wait until it vanishes into the ether.
"You need this?"
What better way to get to your to do list, but with a non-closeable modal box that picks your oldest item and asks you if you really are going to work on it. If you want to get to the rest of your list, you will need to answer the question. Much like the traveler answers the trolls question under the bridge.
Just a few ideas to help improve a much used product that hasn't changed much in the past few years and that is in much need of a tune up. To do lists are great in concept, but maybe the execution leaves much to be desired.
Did you find this article helpful?
Stay up to date with my weekly coding tips!
Walter G. is a software engineer, startup co-founder, former CTO of several tech companies and currently teaches programming for a coding bootcamp. He has been blogging for the past 5 years and is an avid BMX rider, bio-hacker
and performance enthusiast.