Idea: Self-Improving Task Management Software

post by rlp10 · 2013-02-27T13:04:04.409Z · LW · GW · Legacy · 10 comments

Contents

10 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?

10 comments

Comments sorted by top scores.

comment by buybuydandavis · 2013-02-28T00:54:04.771Z · LW(p) · GW(p)

I've been waiting for years for my automated personal manager.

Define goals and place value on them. Put in projects and assign to goals. Break down tasks. Identify resources. Prioritize and set deadlines. Then have the program assign projects to time slots. Maybe multiple selections, to let me pick. Probably don't even tell me until the start time.

Lots of direction. Lots of feedback. Lots of metric tracking. Have the program on your phone, and have it pop up messages, texts, and videos of reminders and inspirational phrases input by you.

The dream of the magic widget that will make me efficient.

comment by rlp10 · 2013-02-28T08:12:14.732Z · LW(p) · GW(p)

Thank you for your positive comments, and particularly those interested in contributing to the code.

I've created a git repository here: https://github.com/rlp10/sitm. I've also written some initial documents outlining my ideas for how the code would be written: a README document, a TODO list, a list of ideas for plugins and a PLAN document giving my overall technical roadmap. All these are committed into the repository for you to read and comment upon.

I would be very grateful for people's comments on github regarding my plans for coding. I would like this to be a community effort. I've posted some questions already under "Issues".

I will post back here with our progress for those who wish to try using the program. All technical discussion will take place on github, rather than on lesswrong.com.

Let's work together to make this project a success and get ourselves more motivated and productive!

comment by Alex_Altair · 2013-02-27T17:33:13.621Z · LW(p) · GW(p)

This sounds like an awesome idea. It also sounds like a computer-assisted human EURISKO fooming device.

comment by Kingoftheinternet · 2013-02-27T17:42:01.801Z · LW(p) · GW(p)

I would use the heck out of this software if it existed, and for that reason I would very much like to assist in writing software like this.

comment by mej10 · 2013-02-27T15:59:13.339Z · LW(p) · GW(p)

You should check out org-mode for Emacs. It is somewhat similar to what you describe, but being an Emacs mode it doesn't get as much love as it should. I use it daily and it is awesome. It isn't quite what you are envisioning, but it is probably the closest thing that currently exists.

That being said, I am actually working on something like this currently. Well, it is the next big step of the project, anyway. Currently it doesn't focus on the meta level as much as I would like, but is very much along the lines of trying to fix "Humans are not automatically strategic"

Based on the people we have spoken to and the research we have done, we think there is a market for something like this.

I say go for it. If it is open source I would probably contribute if for some reason my project collapses or you make something more awesome.

Replies from: Matt_Simpson
comment by Matt_Simpson · 2013-02-27T22:27:32.585Z · LW(p) · GW(p)

Wait, org-mode will track your productivity and make suggestions based on that? Please tell me they mention this somewhere besides buried pages deep in the manual...

Replies from: mej10
comment by mej10 · 2013-02-28T00:39:59.103Z · LW(p) · GW(p)

It won't make the suggestions/evaluate things itself. But it is very good for tracking productivity and getting different views into that data, and it has a bunch of plugins for common productivity things.

I meant to clarify that more in my original post.

comment by patrickscottshields · 2013-03-10T23:25:19.098Z · LW(p) · GW(p)

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.

comment by Flipnash · 2013-02-28T05:34:49.807Z · LW(p) · GW(p)

Something like this needs to exist. I'm posting here to keep tabs in case it becomes something I can contribute to and/or use.

comment by Raemon · 2013-02-28T18:56:57.000Z · LW(p) · GW(p)

Add me to the list of people interested in this both as a product and potential collaborator. (Though in my case I think my comparative advantage is more along the lines of graphic design than programming)