The Pomodoro Technique for Time Management
The Problem
Do you ever notice yourself checking emails, twitter, facebook or blogs? There's nothing wrong with doing that, but (unless you're a paid social networker), it's important not to confuse sitting at a desk doing stuff on the computer with actually productively completing work.
The problem is that sometimes its just hard to sit down and concentrate for hours unless you're really in the zone or under a deadline. The goal of the Pomodoro technique is to help with this problem by explicitly creating a sustainable pace.
The Tomato Technique
The Pomodoro technique is named after the kitchen timers available in Italy that look like a tomato (pomodoro in Italian). I first came across it at a presentation I attended at XP 2008 in Limerick Ireland last fall presented by Federico Gobba and Matteo Vaccari.
The idea is that you start off by setting a timer to 25 minutes, decide on a task (or tasks) to complete during the pomodoro and then at the end of the 25 minutes take a 5 minute break before starting again. Every 4 pomodoros you take a longer break. The benefits are that less time is wasted and overwork is often reduced because the distinction between free time and work is much clearer. The technique is based on the fact that attention often drops off after 25 minutes (which is why 1 hour presentations at conferences don't make a lot of sense).
There are also some basic rules: If interrupted, a pomodoro doesn't count (so you'd shut off email, IM and the like for the pomodoro) and there is no such thing as a "half pomodoro" - a pomodoro is an atomic unit of work.
So, a sample flow for an agile team might be a 1 pomodoro stand up, 4 pomodoro of pairing, a longer break, 2 pomodoro, lunch, and then another 4 pomodoro in the afternoon. The goal is to get around 5-6 hours of solid working time. When you think about the amount of time you're actually effectively and efficiently coding during the average 8-10 hour work day, you'll probably get more done in 5-6 hours of pomodoro.
My Experience
Generally I've found pomodoro to be useful, but I find that I need to modify them for my requirements. Firstly, I tend to prefer a longer work period. Depending on the type of tasks I'm working on I'll typically do 25-45 minute pomodoros. If I'm getting into the zone with coding, I find 25 minutes too short - especially if it takes me a few minutes to load all of the state for the problem I'm working on into my brain. That said, where I'm doing simple tasks and am dragging, I'll use the "it's only 25 minutes" as a way to get me doing something productive!
I also find that sometimes if I'm debugging and I'm on a roll, I'll just keep going until I'm done. That is absolutely against the intent of the technique, but I feel better knocking out the task than taking the 5 minute break, and I usually find out I'm done within an hour so we're not talking 12 hr marathons here.
I personally prefer to try to break my work down into small enough tasks so I can knock out one or more during a pomodoro (that sense of closure and accomplishment again). This isn't a matter of Big Design UpFront (BDUF) turning an entire project into 25 minute tasks, but rather if I get a half day story, I'll start by writing out either a set of tasks for the story or sometimes I'll just write the "first step" and try to knock that out in my first pomodoro.
Attaining Flow
I primarily see pomodoro as a technique for attaining flow (if you haven't done so, read the book - it's great!). That's why I'm not too bothered about some running long as long as I don't overwork/burn out. It's also a technique to reward yourself for lots of little achievements and to break the day up to try to keep yourself as fresh at the end of a long day as at the start. It is also a great way of balancing being available with getting some heads down work done. If you need to be highly available, add a 5-15 minute email/IM window after each pomodoro so you get focused time but are never out of touch for more than half an hour at a time. If you just need to check in occasionally, maybe you want to just check email and IM every 4 pomodoro.
It's still something I'm playing with, but so far I'm finding it really useful. Anyone else playing with this? If so, how is it working out for you? Any other ideas for managing time better and being more productive while programming?



http://rickosborne.org/blog/index.php/2009/04/15/t...
lol