Task management has become a passion of mine; for the last two years or so I've been trying to build something close to what you're describing. I think it's cool that you're giving this a shot. Here are some of my thoughts:

  • Start small. Building good task management software is a hard challenge, potentially several orders of magnitude harder than you're expecting. I continually underestimated how much effort it would take to build my task management software.
  • If you want to work on this full-time, consider joining an existing team. Companies such as Asana are already in the task management space, and they have teams of software engineers and data scientists working on cool things. Joining an existing team allows you to specialize on a part of the software, whereas you might spread yourself too thin if you are responsible for all components of the project. Joining an existing team is basically what I'm trying to do now, after I decided pursuing my startup further was suboptimal. (Potential employers reading this: please contact me!)
  • Focus on the fundamental algorithms and APIs before considering presentation. Target the command line; in the browser, it's easy to get distracted by user experience issues and end up prematurely optimizing for them. Unless your software actually does the awesome things you want it to do on the technical side, it won't matter how nice its interface is. Developing for the command line forces you to focus on the actual algorithms and APIs.
  • Don't reinvent things and don't allow feature creep. If you feel like you're doing something new, do more research. Very little in the way of new algorithms, math, data structures, etc. is necessary in this area; most of the work to be done is in picking which things to use that have already been invented. Keep your code base and features small so you don't get overwhelmed by technical debt.
  • Take free online classes in algorithms, data structures, software development, machine learning, statistics, information theory, logic, AI, and planning. There's so much cool stuff out there that you might not know about, which could be useful for this sort of endeavor. For example, something I learned from Tim Roughgarden's algorithms class on Coursera is that a set of tasks with precedence constraints (e.g. constraints of the form "task X must be completed before task Y") can be represented by a directed graph. If the graph is acyclic, a topological sort can, in linear time, can give a sequence of tasks that respects all precedence constraints (if the graph is cyclic, no such sequence exists.)
  • One avenue to explore with this kind of software is data entry optimization. What optimal subset of data should be collected from the user? Data entry consumes users' time; it's suboptimal for a user with thousands of tasks to routinely update each task's parameters. I think by looking at tasks' parameters as random variables, we can use information theory and machine learning to decide when users should be asked to update various data. I wrote a paper exploring this.

One thing you have going for you is that your project is open source. That allows for a lot of little contributions from people who are interested in the work, but already have their own sources of income. That might allow the project to survive where my startup failed. I still care deeply about task management, so it's possible our work will intersect in the future. I'm now following the GitHub repository you made for this project.

Idea: Self-Improving Task Management Software

by rlp10 1 min read27th Feb 201310 comments


So what the world needs is yet another task management program, right?

My idea is software which automatically implements productivity strategies, measures the effectiveness of those strategies, and analyses which strategies work best for you.  Hopefully, using the software would result in a sustained increase in your productivity over time.

By "productivity strategies" I mean things like: the recommendations in the the anti-procrastination algorithm, the pomodoro technique, exercising regularly, pre-commitment, experimenting with sleep patterns, gamifying your tasks and so forth.

In practical terms, what I'm envisioning is an extensible software framework.  The core program would be a simple task list manager: add tasks to be done in the future, check off items as done when completed and send notifications to the user.

This core framework would then be extended by plugins, which represented different productivity strategies.  For example, the pomodoro plugin might make your first task at 9am each morning to review your task list and choose the most important three tasks (MITs), your second task to set and begin a timer for 30 minutes and your third task to complete that top MIT you chose.  After 30 minutes, it would add a new task of taking a five minute relaxation break and send you a notification to let you know.  Five minutes later, it would notify you again to finish your relaxation break task, with a fresh task to re-start the timer and then back to your MITs for a further 30 minutes.

The software could independently activate and deactivate the plugins in order to collect sufficient data to suggest which strategies were most effective for you.  Over time, more plugins would be written as people made further suggestions.  Existing plugins could be potentially improved and automatically reviewed using A/B testing.

When deciding whether a strategy is "effective", I mean that a large number of tasks are completed, that the remaining number of tasks on the list is small and that the age of those tasks is not too great.  However, the criteria could be extended to ask for an indication of mood from the user, to allow for low stress optimisation, for example.  Perhaps stochastic self sampling would work well here.

If users were willing to opt into providing anonymous data, the software could automate a community review of the strategies: which strategies seem to be most commonly effective?  Affinity analysis could even be used to recommend plugins that were helpful to other people who responded to similar strategies as you.

What are your comments, and specifically criticisms, of this idea?  Would you try using software like this if it existed?  Would you like to assist in writing software like this?