As a developer working from home, I've been dealing with the productivity / concentration issue for quite a long time. This post is a collection of productivity tips I wanted to share, and its actually an adaptation from a talk I presented on both PFCongress and PHPNW (unconference track).
The "Time is Money" fallacy
This is a quite famous quotation that is being repeated through the years. "Time is money" is a very contrived way to say that if you lose time, you might be losing money. I personally don't like this quote; lets refactor it to something that better reflects reality:
"Productivity is Money" sounds way more realistic. And what is productivity anyways? Wikipedia has a good definition of productivity, related to Economics:
Productivity is the ratio of output to inputs in production; it is a measure of the efficiency of production.
Since its a ratio, having more time would not make you more productive; so please stop saying that you would like to have a day with 30 hours - you would have to work more to have the same level of productivity you have today =D What we really need is to figure out a way to better use the time we have. How do we maximize our productivity? These are 4 easy steps to achieve that:
- Time Auditing - diagnose your time problems
- Focus Therapy - learn to manage your focus
1. Diagnosing your time problems
Knowing what you do with your time is key to change your habits and become more productive. How much time do you spend in distracting activities ? We need to know before we can act. And that's why self-tracking comes as a big help. Self tracking is a sort of movement which is getting more mainstream with the advent of new technologies, such as health gadgets and smartphone applications. In a nutshell, the main goal is turning your life into numbers, so you get to know yourself better. If you have the feeling that you really don't have time for anything, you should definitely try a time-tracker application and track all your routine activities for some days. You will find some insightful information about how you spend your time, and at this point you might need to reorder your set of priorities in life - since you discover that you are spending too much time in X, when you would like to have time for Y. If that looks too much for you, try tracking only your activities on the computer. There are some good applications for this, I strongly recommend RescueTime - it will track your browsing time and provide nice charts like this: [caption id="attachment_2880" align="aligncenter" width="614"] RescueTime[/caption]
2. Managing your Focus
If you read this post all the way until this point without interruptions, congratulations! Keeping focus is getting harder and harder as we are overwhelmed with information (and so many distractions) every day. A quick interruption seems harmless and not a big problem while reading a text, but when we are programming, it has a high cost. Chris Parnin has an excellent article entitled "Programmer Interrupted", where he presents research made with 86 programmers and 10.000 recorded programming sessions. Here are some highlights:
- A programmer takes between 10-15 minutes to start editing code after resuming work from an interruption.
- When interrupted during an edit of a method, only 10% of times did a programmer resume work in less than a minute.
- Most sessions programmers navigated to several locations to rebuild context before resuming an edit.
Although its hard to avoid external interruptions (such as phone calls or meetings), we also interrupt our programming flow often for distracting activities that could wait - like browsing websites, social networks, IRC and such. Self-sabotage by the scumbag brain Science can explain why we tab to Twitter in the middle of an important algorithm implementation. Turns out our brain was not exactly built for concentration. Because concentration is an introspective mechanism that "blurs" the external world, and this would be dangerous for our early human beings living in the wild. Evolution made us get more used to concentration, but still, we can only keep deep focus for around 45 to 60 minutes at most. Our brain also doesn't like boring activities, or too difficult ones. It must be a doable challenge to keep it interested. To overcome this, there are mainly two techniques: task gamification (get rewards for completing tasks) and relaxing intervals (a pause for your brain to relax). The Pomodoro Technique is basically built on top of this.
The Pomodoro Technique
You probably already heard about the Pomodoro Technique. It's a time management / productivity technique originally created by Francesco Cirillo, and with no direct relation to programming. He developed this technique in order to get better at studies. Quoting from the Pomodoro pdf:
I found myself in a slump, a time of low productivity and high confusion. (...) It was clear to me that the high number of distractions and interruptions and the low level of concentration and motivation were at the root of the confusion I was feeling. So I made a bet with myself, as helpful as it was humiliating: “Can you study – really study - for 10 minutes?” I needed objective validation, a Time Tutor, and I found one in a kitchen timer shaped like a pomodoro (the Italian for tomato) – in other words, I found my “Pomodoro” .
This is a really simple technique to follow, and it gives you an incredible boost on productivity just by accepting a simple deal: total concentration / focus during a Pomodoro, and after it you get free time to do whatever you want. A Pomodoro set consists of 5 Pomodoros, with 4 short intervals between them and a long interval after the last Pomodoro. The amount of time in each Pomodoro might vary, but the default is 25 minutes. The short interval is 5 minutes, and the long interval is 15 minutes. You can adjust the amount of time to better suit your needs. If you are in deep concentration when a Pomodoro ends, you are not obliged to pause - but try to get into a point where the break will not affect your flow and do the pause, since the intervals are really important for your brain to relax. If you're working in a very abstract or difficult task, it might worth incresing the Pomodoro for 30 / 35 minutes, I would not recommend more than this. Strict Workflow Strict Workflow is an awesome Google Chrome extension which makes it very easy to stick with the plan, since it blocks distracting websites while you're at a Pomodoro. It shows a little tomato at the top right corner of your Chrome, and once you click it starts a new Pomodoro and you will only be able to access Twitter, Facebook and such after the Pomodoro is complete. Then a green tomato will show up, for your 5 minute interval.
Productivity, for us, is directly related with concentration. In order to better use your time and become more productive, you first need to know how you are spending your time and then use some techniques to help increase your concentration / focus, like Pomodoro. While in a Pomodoro, do your best, knowing that a reward of free / relaxing time will come soon and you can wait a few more minutes to check your Twitter, Facebook, or that cool link someone sent you. Good luck, and love your time!