As a computer programmer I am always looking for ways to improve my productivity. This contradicts the oft-heard stereotype that programmers love to procrastinate. I am still a procrastinator, but when I decide to get things done I want them done.
For a long time now I have used the Pomodoro Technique as a computer programming tool. The technique has nothing to do with technology though. Instead it focus on time-management. Today I want to explain how it improves my productivity.
How it Works
Francesco Cirillo created the Pomodoro Technique in the 1980’s. You can read his original book on the subject for free. It discusses the all the concepts behind Pomodoro, but the most important (to me) is the idea that frequent breaks improve cognitive abilities. And what programmer does not want to maximize the output of his own brain?
The Pomodoro Technique consists of five steps:
- Choose a task.
- Set a timer for twenty-five minutes.
- Work on that task for that duration.
- When the twenty-five minutes are over, take a five minute break.
- Take a longer, twenty-minute break every fourth break.
These times are not fixed in stone. I listed the time settings that I prefer. Some people take three-minute short breaks, or thirty-minute long breaks.
The first step has important implications. In order to select a task I must already have a list of tasks available. I started the practice of writing detailed to-do lists years ago, so it is easy for me to find tasks that I can finish in a single twenty-five minute period. I cannot always finish something in that time, but that is ok; I return to that same task after a break.
Why it Helps Me
For starters, it was easy to integrate the Pomodoro Technique into my workflow. I do all of my programming with GNU Emacs, which supports countless add-ons or ‘packages’. For years I have used the amazing org-mode package to manage my to-do lists. The official site has lots of information, but I also recommend Sacha Chua’s blog for great articles on how to manage tasks and projects with org-mode.
So I already had an existing habit of writing detailed to-do lists and keeping them close at hand while programming. People using the Pomodoro Technique need a timer, and there are ones you can buy designed specifically for the technique, with configurable break periods and all. Personally, I wanted a timer in Emacs. I had to look no farther than David Kerschner’s pomodoro.el package. It adds a timer in Emacs that I can always see while writing code.
That only explains how I integrated the technique into my workflow. What are the actual benefits?
I found that I focused on tasks more easily by breaking up my coding into twenty-five minute periods. Constantly seeing a timer counting down pushes me to put as much effort into my programming as possible so that I can try to knock out each task in time. I will not write sloppy code just to beat the clock though. On the contrary, I believe the technique improves the quality of my code. I get into a mental state where all I (try to) focus on is the task at hand, and as a result I see an improvement in my code quality because I am more strongly concentrating my efforts and eliminating all the distractions I can.
Dealing with distractions is an important part of the process. When I am programming during one of my periods I will see emails come in, or bug reports, or text messages—all kinds of things. I ignore all of them unless they are absolute emergencies. When I reach a break period, that is when I mentally unwind by answering emails, returning messages, checking my Twitter feed, reading a short article, or just kicking back listening to some music. This helps me avoid the feeling of burn-out. Every programmer knows what I mean: those times when you spend who knows how long banging your head against the wall trying to solve a problem. It often helps to walk away from the computer for a while to clear your head. The Pomodoro Technique has a built-in ‘walk away for a while’ step in its process. Before I used the technique I would often spend hours sitting in front of my monitor just waiting in frustration for the answer to come to me, and it would only be when I walked away and gave that part of my brain a rest that the answer would appear. Now I rarely get stuck like that since I am taking breaks at consistent times.
The Pomodoro Technique also helps me by making programming feel more rewarding. The improved focus I feel helps me knock out items on my to-do list more efficiently. Seeing that to-do list shrink always feels great.
Those are reasons why the Pomodoro Technique improves my programming. Does it work for everyone? No, of course not. I would never claim that it is a perfect, universal practice that everyone should adopt. But I do recommend giving it a chance for a week. It may or may not make you more productive, but it’s worth a shot for just one week, wouldn’t you agree?