Agile Zone is brought to you in partnership with:

I am a programmer and architect (the kind that writes code) with a focus on testing and open source; I maintain the PHPUnit_Selenium project. I believe programming is one of the hardest and most beautiful jobs in the world. Giorgio is a DZone MVB and is not an employee of DZone and has posted 638 posts at DZone. You can read more from them at their website. View Full User Profile

Why a Pomodoro helps you getting in the zone

09.21.2010
| 7777 views |
  • submit to reddit
A Frequently Asked Question about the Pomodoro Technique is the following:
When I enter the zone, I get really focused and efficient: I can code a Unix implementation from scratch if you then leave me at the keyboard for a while. I don't want to be interrupted. How should I use Pomodoros? They last only 25 minutes.

The answer to this question is well articulated, and to understand how the Pomodoro Technique works, you have to know that it must deal with external and internal interruptions. While internal interruptions are usually absent during a flow experience, external ones can't be controlled easily.

Thus, the Pomodoro technique isn't about forcing interruptions on a programmer, but about handling and programming them, and not being dominated by external conditions.

External interruptions

External interruptions are a fact of like: you all must communicate as a team, so you can't hack all the time alone on your office computer. Someone is going to ask you how module A works, or in what state class B is, or even how you should call routine C correctly.

Often, the ones that otherwise would be the most proficient programmers are constantly interrupted and can't get focused on their tasks. It may also be the case that the points of contention are the people who are repositories of knowledge about the domain or the application, the ones who can save you an hour of work, if they could only give you a quick answer to a quick question. As a consultant, I'm often busy learning about the codebase and its related domain (restaurant, school, taxes...), and I have to make a lot of questions to verify my assumptions and crunch knowledge. If I wandered in the office interrupting everyone for asking clarifications, I wouldn't be a great help for my colleagues.

How Pomodoros can solve these issues?

Pomodoros are not interruptible (25 minutes of pure focus), but there are short pauses between them. Interactions between members of the team are intercepted and captured, then left to be answered when everyone is willing to communicate. You have two solutions to handle the queue of collected questions:

  • for quick ones, you can just use the break between Pomodoros. However, a large slice of this break shouldn't be related to the work at hand at all - this is the only way for such a short pause to be effective on your tired mind. If you continue mumbling on your last task, you won't be able to substain the Pomodoro rhythm for long.
  • You can setup group Pomodoros instead, where the whole team gathers for a standup meeting or for asking questions to each other. This periods of interactions are organized so that some flow time is left to each developer every day.

Feeling the rhythm

You may feel that when you get very productive, in the zone, in the flow state of mind, whatever you call it, you shouldn't be interrupted every 25 minutes. In fact, getting in the zone will typically take 5 to 10 minutes for a programmer who does not manage his time.

However, working for hours at a time without interruptions isn't always the most clever solution.

First, you keep others from completing their work if they are depending on you for an answer: you can't communicate if you remain for hours in your isolation zone where you crank out 2,000 lines of code. With a simple phrase, you can solve a colleague's problem that he may spend hours to tackle by himself.

Second, there is no reason to believe you're not very productive in a single person morning-long flow, but you're trading off effectiveness (doing the right thing) for efficiency (doing the thing right). A Pomodoro interrupts you just enough to keep measuring your current spent effort and make sure you're not consuming your energy and time on a module which is not prioritary, or you're not refactoring a whole component of the application when it may be thrown away thereafter to explore a different solution.

Pomodoro breaks are a natural feeback that stimulates you to check your effectiveness, and not your ability to build something that may not be used at all. Agile methods are usually based on timely feedback from the customer to avoid just this lack-of-effectiveness mindset where you code the most powerful webmail interface of the world, but the client would rather have had a good spam filter transparent to his Thunderbird clients.

Third, and finally, I have noticed that you can shape your development process differently from the classic full afternoon session, by thinking of your time available in small discrete boxes instead of a continuos stream. When we started using Pomodoros in my last company, the most common complain was that when a Pomodoro rang, programmers had to annotate what they were working on to resume their half done work in the next Pomodoro.

I experienced this difficulty myself when starting out with timeboxing, but the evolution of my working process has solved the issue. I now organize my tasks in timeboxed whose length is of some Pomodoros, just like a project manager divides the client requirements in user stories whose size is measured in points or ideal hours. I also break up the current task in subtasks that are assigned and shifted between the allocated Pomorodos: I stopped thinking of time as a continuos resource and started treating it like a discrete one.

An example (if you want to read only one paragraph, read this)

A simple example to follow: If I had a two-Pomodoros story to implement, I would attempt to never have not working code on the end of the first Pomodoro. I'd rather divide the story in a basic version and an advanced one, and then operate incrementally by implementing the basic version in the first Pomodoro and expanding on it in the second one (Keep it releasable, isn't it the right motto?).

In this time management practice, tasks are spread over Pomodoros so that the 25-minute timebox become a natural cycle, with a working period that bootstraps in the first minute of the Pomodoro, reaches the Zone shortly after to produce a solid 20 minutes of insanely focused work, and ends up with some minutes of refactoring and overlearning that lead to the end of the Pomodoro (the percentages may vary.) This final minutes can be cutted or expanded to make up for changes in the main part of the Pomodoro, whereas details can be moved between the basic and advanced use cases responding to the estimate changes.

Moreover, techniques like Test-Driven Development make really easy to reenter the flow, since you always know what comes next: one of the three phases from the Red-Green-Refactor mantra. However, the timeboxing of Pomodoros is really crucial here, because you know that no one will disturb you in the next 25 minutes, and that you can't get a distraction until the break arrives.

Summing up, if you feel the Pomodoro ring is interrupting you at the wrong time, you're either not paying attention to the timer until it's too late, or not breaking up your tasks to fit the time you're allocating. Either way, you now know that you can manage your time not to be a slave of your lunatic Zone, but to conquer it and experience flow many times a day.

Published at DZone with permission of Giorgio Sironi, author and DZone MVB.

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)

Comments

Andrew McVeigh replied on Wed, 2010/09/22 - 6:28am

good points, particularly about the low cost of reentering the zone with unit tests. i was working with Rod (Johnson of Spring fame) who used to use this technique on the train into work in the mornings.  i.e. not the pomodoro technique per se, but unit tests to allow a quick return to the "zone".  the tests help reestablish context.

i use pomodoros of 25 minutes, and tried 40 minutes but it didn't quite work. one of the things i really like about the technique is it takes my mind away from "there's so much work, i don't know where to start" and focusses it on just completing a simple 25 minutes of 1 task.

Ronald Miura replied on Wed, 2010/09/22 - 7:11am

UncleBob disagrees that tomatoes don't take you out of 'the zone' (which I happen to agree with).

But well, he also says that to be in 'the zone' is not a good thing (which I utterly disagree with).

Andrew McVeigh replied on Wed, 2010/09/22 - 12:29pm in response to: Ronald Miura

why doesn't he like the "zone"?  do you have a link to read?

i sometimes find that i get kicked a bit out of the zone if the tomato rings when i am deep into a task.  what i do in that case is just close my eyes and blank out my mind for the 5 min break between pomodoros.  i doze basically, and it really does help.

i also find that the 5 mins helps me to do a quick retrospective to work out if i should be carrying on in the current direction, or if there is a better way.

the forced breaks also stops me from getting burned out during the day.

Giorgio Sironi replied on Wed, 2010/09/22 - 3:51pm in response to: Andrew McVeigh

Thank you for your feeback.

The forced breaks help my mind and my eyes too, since staring continuatively at an LCD screen is not beneficial for them. As I explained in the article, I try not to "get rung" in the middle of a task, and when I see time is running out I slow down as I approach the end of the Pomodoro.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.