Unlimited Pomodoro Works: My Scheduling System

Re­lated: The Power of Po­modoros, Work­ing Hurts Less Than Pro­cras­ti­nat­ing, Cached Procrastination

Fol­low-up To: Re­in­force­ment and Short-Term Re­wards as Anti-Akratic

I’m still work­ing on clean­ing up my schedul­ing sys­tem for re­lease, like I men­tioned in the com­ments to my last post. How­ever, I man­aged to for­get the end of my col­lege semester, which is tak­ing up a dis­tress­ing amount of my time. So, al­though progress is be­ing made, I’m not done quite yet and prob­a­bly won’t be un­til some­time af­ter my fi­nal ex­ams end on the 16th. In the mean­time, I’m go­ing to ex­plain my schedul­ing sys­tem and some of the mod­ifi­ca­tions I’ve made to it.

My sys­tem is de­rived from the Po­modoro Tech­nique. In it, work is sep­a­rated into in­di­vi­d­ual 25-minute blocks also called “Po­modoros.” To en­sure that blocks last for the full 25 min­utes, they’re timed; once the timer has started, the block should not be un­in­ter­rupted un­til the timer runs out. There’s a short break be­tween each Po­modoro; af­ter sev­eral Po­modoros, there’s a longer break.

The biggest benefit I’ve no­ticed from us­ing my sys­tem is in fix­ing my prob­lems with task switch­ing. When I was do­ing some­thing I didn’t much like, I used to think about do­ing some­thing else al­most con­stantly; it usu­ally wasn’t long be­fore I stopped work­ing to do some­thing else. The origi­nal Po­modoro Method solved this prob­lem by forc­ing me to wait un­til the timer had ex­pired to stop work­ing. How­ever, I had an­other prob­lem with task switch­ing that the origi­nal Po­modoro Sys­tem didn’t touch. When I was slack­ing off, I could sit con­tented for hours with­out do­ing any­thing else; I found it hard to start work­ing or stop slack­ing off. That’s where my changes came in. Th­ese prob­lems are both very similar; in this one, I change tasks too in­fre­quently, where in the other, I changed tasks too of­ten. It stands to rea­son, then, that they could both be solved the same way: by timing them. So, in my sys­tem, ev­ery­thing I do is treated like work is un­der the Po­modoro Sys­tem, even slack­ing off.

That’s the biggest change my sys­tem makes: ev­ery­thing is a block (or a Po­modoro), and I’m in a block all the time. How­ever, my sys­tem is more than just a few rule tweaks. My sys­tem is com­put­er­ized; I use a web ap­pli­ca­tion for my block timer, as well as for man­ag­ing my task list and the var­i­ous other add-ons my sys­tem has. I’ve also made a num­ber of more sub­tle de­ci­sions that bet­ter adapt the sys­tem for com­put­er­i­za­tion.

Like in the Po­modoro Sys­tem, my sys­tem times each block of work I do. After the work pe­riod ends (usu­ally 25 min­utes), my sys­tem en­ters a 5-minute break pe­riod. Dur­ing this break pe­riod, I preload my next task into the sys­tem so that I can start work­ing as soon as the break ends, with­out hav­ing to futz with the timer. If I for­get to preload a task, my sys­tem doesn’t start any­thing au­to­mat­i­cally; I’m just left out­side of a block, which I con­sider to be a failure state that I always try to avoid.

My sys­tem also in­te­grates a task list; to start a block, I must choose my task from the list. This also helps to im­prove my pro­duc­tivity. Be­cause I choose tasks from a list of all my po­ten­tial ac­tivi­ties, it’s eas­ier to find and se­lect tasks with higher ac­ti­va­tion en­ergy, in­stead of fal­ling back on cached pro­cras­ti­na­tion. Forc­ing me to se­lect a task from a list also makes me ex­plic­itly con­sider what I ought to be do­ing with my time.

A web ap­pli­ca­tion is nice, but there are a lot of things about it that, on its own, make it a bit less use­ful than the tra­di­tional timer. It doesn’t ring, for in­stance, and I have to open it up ev­ery time I want to check how much time I have left. So, I built an ap­pli­ca­tion that runs on an­other com­puter on my desk that han­dles all of those things. It rings a digi­tal gong when the cur­rent timer ends. It shows me whether I’m in a break, in a task, or if my task has ex­pired by chang­ing the color of the screen. It dis­plays in text the cur­rent task, some in­for­ma­tion about it, and how much time is left on the timer. Right now, this is a fairly bare-bones ter­mi­nal ap­pli­ca­tion; one of the things I’m work­ing on in my cur­rent re­vi­sion is mak­ing it look a bit nicer.

Of course, my ex­trin­sic mo­ti­va­tor from my pre­vi­ous ar­ti­cle is tied into this sys­tem as well. Sim­ply put, it re­wards me with candy for keep­ing on track with my sched­ule. The rules it fol­lows are more pre­cisely ex­plained in its own ar­ti­cle. I’m rewrit­ing the rules, how­ever; ex­pect a new ar­ti­cle about them in a few weeks.

Even the best schedul­ing sys­tem in the world would be of no use if I couldn’t bring my­self to fol­low it. That’s what my browser plu­gin is for. When I don’t have a block timer ac­tive, or if I’m try­ing to ac­cess a non-pro­duc­tive web site dur­ing a pro­duc­tive block, my browser plu­gin will block the site and tell me to go start a block. I can still over­ride the plu­gin, but the plu­gin re­quires me to wait 10 sec­onds be­fore I get the op­tion. Since most of my pro­cras­ti­na­tion time is spent on the In­ter­net, the plu­gin is an effec­tive way of re­mind­ing me to turn the sys­tem back on.

Since my goal is to keep the sys­tem on at all times, it’s a bit prob­le­matic that many of real-world tasks don’t di­vide neatly into Po­modoro-sized chunks. Th­ese are things like eat­ing din­ner, walk­ing the dog, or sleep­ing. In or­der to track them, my sys­tem has a cat­e­gory of “real-world” tasks which run for an in­definite amount of time. How­ever, such a task would seem open to abuse; in or­der to pre­vent that, my browser plu­gin blocks my ac­cess to the In­ter­net dur­ing them, just as if I weren’t in a block at all.

My origi­nal plans for the sys­tem in­cluded things like re­ports on time us­age and a sys­tem to help me cal­ibrate my ex­pec­ta­tions for the amount of time a task is likely to take. How­ever, I’ve yet to im­ple­ment any of these, and hon­estly I’m still not sure what the best way to im­ple­ment these would be. Any in­ter­est­ing sug­ges­tions would be ap­pre­ci­ated; I hope to write an ar­ti­cle about build­ing these sys­tems some­time soon.