Unlimited Pomodoro Works: My Scheduling System

11 Intrism 13 May 2013 12:36AM

Related: The Power of PomodorosWorking Hurts Less Than Procrastinating, Cached Procrastination

Follow-up To: Reinforcement and Short-Term Rewards as Anti-Akratic

I'm still working on cleaning up my scheduling system for release, like I mentioned in the comments to my last post. However, I managed to forget the end of my college semester, which is taking up a distressing amount of my time. So, although progress is being made, I'm not done quite yet and probably won't be until sometime after my final exams end on the 16th. In the meantime, I'm going to explain my scheduling system and some of the modifications I've made to it.

My system is derived from the Pomodoro Technique. In it, work is separated into individual 25-minute blocks also called "Pomodoros." To ensure that blocks last for the full 25 minutes, they're timed; once the timer has started, the block should not be uninterrupted until the timer runs out. There's a short break between each Pomodoro; after several Pomodoros, there's a longer break.

The biggest benefit I've noticed from using my system is in fixing my problems with task switching. When I was doing something I didn't much like, I used to think about doing something else almost constantly; it usually wasn't long before I stopped working to do something else. The original Pomodoro Method solved this problem by forcing me to wait until the timer had expired to stop working. However, I had another problem with task switching that the original Pomodoro System didn't touch. When I was slacking off, I could sit contented for hours without doing anything else; I found it hard to start working or stop slacking off. That's where my changes came in. These problems are both very similar; in this one, I change tasks too infrequently, where in the other, I changed tasks too often. It stands to reason, then, that they could both be solved the same way: by timing them. So, in my system, everything I do is treated like work is under the Pomodoro System, even slacking off.

That's the biggest change my system makes: everything is a block (or a Pomodoro), and I'm in a block all the time. However, my system is more than just a few rule tweaks. My system is computerized; I use a web application for my block timer, as well as for managing my task list and the various other add-ons my system has. I've also made a number of more subtle decisions that better adapt the system for computerization.

Like in the Pomodoro System, my system times each block of work I do. After the work period ends (usually 25 minutes), my system enters a 5-minute break period. During this break period, I preload my next task into the system so that I can start working as soon as the break ends, without having to futz with the timer. If I forget to preload a task, my system doesn't start anything automatically; I'm just left outside of a block, which I consider to be a failure state that I always try to avoid.

My system also integrates a task list; to start a block, I must choose my task from the list. This also helps to improve my productivity. Because I choose tasks from a list of all my potential activities, it's easier to find and select tasks with higher activation energy, instead of falling back on cached procrastination. Forcing me to select a task from a list also makes me explicitly consider what I ought to be doing with my time.

A web application is nice, but there are a lot of things about it that, on its own, make it a bit less useful than the traditional timer. It doesn't ring, for instance, and I have to open it up every time I want to check how much time I have left. So, I built an application that runs on another computer on my desk that handles all of those things. It rings a digital gong when the current timer ends. It shows me whether I'm in a break, in a task, or if my task has expired by changing the color of the screen. It displays in text the current task, some information about it, and how much time is left on the timer. Right now, this is a fairly bare-bones terminal application; one of the things I'm working on in my current revision is making it look a bit nicer.

Of course, my extrinsic motivator from my previous article is tied into this system as well. Simply put, it rewards me with candy for keeping on track with my schedule. The rules it follows are more precisely explained in its own article. I'm rewriting the rules, however; expect a new article about them in a few weeks.

Even the best scheduling system in the world would be of no use if I couldn't bring myself to follow it. That's what my browser plugin is for. When I don't have a block timer active, or if I'm trying to access a non-productive web site during a productive block, my browser plugin will block the site and tell me to go start a block. I can still override the plugin, but the plugin requires me to wait 10 seconds before I get the option. Since most of my procrastination time is spent on the Internet, the plugin is an effective way of reminding me to turn the system back on.

Since my goal is to keep the system on at all times, it's a bit problematic that many of real-world tasks don't divide neatly into Pomodoro-sized chunks. These are things like eating dinner, walking the dog, or sleeping. In order to track them, my system has a category of "real-world" tasks which run for an indefinite amount of time. However, such a task would seem open to abuse; in order to prevent that, my browser plugin blocks my access to the Internet during them, just as if I weren't in a block at all.

My original plans for the system included things like reports on time usage and a system to help me calibrate my expectations for the amount of time a task is likely to take. However, I've yet to implement any of these, and honestly I'm still not sure what the best way to implement these would be. Any interesting suggestions would be appreciated; I hope to write an article about building these systems sometime soon.

Reinforcement and Short-Term Rewards as Anti-Akratic

24 Intrism 13 April 2013 08:47PM

Related: Time and Effort Discounting, Akrasia, Hyperbolic Discounting, and PicoeconomicsThe Power of Reinforcement, Basics of Animal Reinforcement, Basics of Human Reinforcement

I built a robot that feeds me candy when I get work done, to try to solve my akrasia problem. And, so far, it seems like it might actually work.

Naturally, the story starts with procrastination. I finish things the night before they're due. Or, sometimes, I don't. I'd like to fix that. One theory explains procrastination as a result of discounting, the idea that human brains discount long-term rewards in favor of short-term ones. For instance, my brain prefers watching Neon Genesis Evangelion now over nearly missing my project deadline in a few days. The same principle applies to consequences, and there are already tools like BeeMinder that are built to combat it. Its tagline, "bring long-term consequences near," is a very concise description of a clever way to short-circuit discounting. It's very interesting, but I'm not really comfortable with paying money as a consequence. Instead, I'm going to try a similar technique: bringing long-term rewards near.

There are already a lot of techniques about bringing long-term rewards near. Generally, they're called reinforcement learning. The classic reward in reinforcement is candy, which seems like a good idea: I like it, and I'm more than willing to abuse my youthful metabolism for productivity. And, in fact, there are a wide variety of folk solutions of that sort - advice to reward yourself with some candy once your work is done. I've tried those already, but they never seem to work out for me - I always seem to wind up cheating. I need to do something trickier.

CFAR describes reinforcement in a very striking way in some of their course materials: they call it "training your inner pigeon." Not only is that a nice, snappy turn of phrase, it illustrates the problem with attempting to self-administer rewards very nicely. Did Skinner's pigeons self-administer their rewards? No, of course they didn't. I shouldn't expect my inner pigeon to, either. So, my next step is to build a robot that gives me candy when I get stuff done.

Why do I think I can keep from cheating on the machine, when I couldn't restrain myself from cheating on regular old bags of candy? Well, I'm far from certain; it's my biggest worry with the project, in fact. But I am reasonably confident, because the machine will give me an easy way to establish a Schelling fence. Where taking a handful of candy out of the bag is sometimes right and sometimes wrong, taking a handful of candy out of the hopper is always wrong, since the machine will dispense the candy when I deserve it. Precommitting to never take candy out of the machine seems like it'll be a lot easier than precommitting to only sometimes take candy out of the bag.

Now, the description "robot" for my machine is a bit fanciful. It's actually an automatic dog feeder, modified and connected to the Internet. It has a small screen mounted on the front, which tells me how many rewards I've earned. If I've got any, I can press a button on the screen to dispense them. Not counting parts I already owned, the device cost me around $50 to build. To provide the data, I linked the device to an earlier productivity hack that I already had around, a custom webapp integrating a task list with a Pomodoro timer.

Rewards are given based on a few simple rules. When I finish a task early, it gives me the number of days early in rewards; if I finish tasks out of order, it gives me the nearer task's number of rewards, so I've got an incentive to finish tasks in order. I also get an extra reward for my first Pomodoro in a week for each of my projects, so that I have an incentive not to forget old projects. The system can also take away rewards. If I get distracted during a Pomodoro, I lose a reward. I'm blocked from redeeming rewards if I have a task within a day of its deadline. If I finish a task more than a day late, I lose any rewards in the system.

Results have been mixed so far. My greatest concern seems to have been unjustified: I haven't cheated on the machine once. However, it seems like the rules need some more work. The system has definitely helped some, but there are a lot of problems that could be improved.

The system doesn't account for the difficulty of tasks, meaning that I get more reward for less effort if I do easier work. As a result, I've done all of the reading up to next Tuesday for my literature class, but my Computer Science assignment due on Friday is unfinished, and my "research" for an exceptionally abhorrent humanities course is languishing on the vine.

The point of the system was to bring long-term rewards near, but there are a lot of circumstances in which it doesn't seem to bring them quite near enough. For deadlined tasks, I get no rewards until I've actually completed the task; if I think a task will take me more than a day to finish, that's more than a day of work which earns me no short-term rewards. This gets even worse if I happen to have a long task (or, many short tasks) that have reached the day before their deadline. Then, I don't get any rewards until I finish all of those tasks. While this is quite motivating, it's still a long-term motivation, i.e. it doesn't work very well.

I deliberately built the system to encourage doing tasks in order, but this seems to have backfired a little bit. Since I would be giving up rewards, I don't want to work on a task that's due later if there's another that's due sooner. However, if I really don't want to do the nearer task, I'll end up wasting time, since I get no rewards for that either way. Nyan_sandwich describes a similar failure mode in his Akrasia Case Study: if I know I have something more urgent to do, but I don't want to do it, I wind up procrastinating instead of doing less urgent things.

I get sick of candy more quickly than I expected. The portion my machine emits (about a small handful) tends to stop motivating me after about 4 in a day. Additionally, I seem to be entirely incapable of pacing myself; if the reward is in the system, I tend not to wait very long before using it. This has crippled all of the rules about involving taking away rewards - unless the rewards are blocked, they don't stick around in the system long enough to be taken away.

Not all of the things I want to change are a result of problems, though. There are a wide variety of interesting improvements I could make. Many of these are expansions: aside from my task list, what else can I connect to? Can I track note-taking in class? Can I set it up to reward continuing effort towards a task, like writing a few hundred words a day? Can I use it to create new, more rational habits? There are all kinds of possibilities to consider. If you've got anything you'd like to suggest, let me know - I'm open to anything interesting.

There are also a lot of techniques to research; I'm sure the program isn't nearly as effective as it could be. Operant conditioning techniques like variable-ratio schedules might help improve performance per candy. Or, I could look into gamification, basically a form of applied human operant conditioning; it's not a standard tool on the site, but if you've ever watched an experience bar rise, you know what I'm talking about. Again, if you happen to have some relevant ideas, let me know.

Obviously, I'm going to be making some rule changes in the near future. Expect another post in a few weeks about what's changed and how the changes have worked out for me.

Also, does anyone want to help me think of a good name for the system? Right now it's called the "extrinsic motivator." While descriptive, this name isn't snappy at all.